亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CRL處理中比較interim_reasons_mask和reasons_mask的原因

CRL處理中比較interim_reasons_mask和reasons_mask的原因

浮云間 2023-02-23 14:25:51
在RFC5280中的 6.3.3。CRL處理部分有一個步驟:驗證 interim_reasons_mask 是否包含 reasons_mask 中未包含的一個或多個原因。有人可以解釋一下這張支票的意義是什么。當我嘗試使用指向某個 URL 的分發點驗證證書時,它在 DistributionPointFetcher:591 中失敗。reasonsMasks 設置為 9 true's 所以我不知道怎么可能通過這個檢查原因因為它已經初始化它從未改變過。更新初始化原因掩碼的代碼:鏈接在 DistributionPointFetcher 中傳遞原因掩碼以進行處理的代碼:鏈接
查看完整描述

1 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

reasons_mask: 此變量包含到目前為止處理的 CRL 和增量 CRL 支持的一組撤銷原因。

interim_reasons_mask: 這包含當前正在處理的 CRL 或 delta CRL 支持的一組撤銷原因。

據我所知,此處理的目的是收集 CRL 以支持盡可能多的撤銷原因。因此,如果當前 CRL 支持任何先前 CRL 不支持的任何撤銷原因,它只會將當前 CRL 添加到列表中。

如果您reasons_mask包含所有內容true,那么之前的 CRL 已經涵蓋了所有撤銷原因,或者沒有給出它支持的特定撤銷原因導致設置特殊值all-reasons(所有標志為真),這意味著不需要涵蓋進一步的撤銷原因,因此它不會進一步檢查。


sun.security.provider.certpath.DistributionPointFetcher.java

...

// compute interim reasons mask

boolean[] interimReasonsMask = new boolean[9];

ReasonFlags reasons = null;

if (idpExt != null) {

    reasons = (ReasonFlags) idpExt.get(IssuingDistributionPointExtension.REASONS);

}


boolean[] pointReasonFlags = point.getReasonFlags();

if (reasons != null) {

    if (pointReasonFlags != null) {

        // set interim reasons mask to the intersection of

        // reasons in the DP and onlySomeReasons in the IDP

        boolean[] idpReasonFlags = reasons.getFlags();

        for (int i = 0; i < interimReasonsMask.length; i++) {

            interimReasonsMask[i] = (i < idpReasonFlags.length && idpReasonFlags[i])

                    && (i < pointReasonFlags.length && pointReasonFlags[i]);

        }

    } else {

        // set interim reasons mask to the value of

        // onlySomeReasons in the IDP (and clone it since we may

        // modify it)

        interimReasonsMask = reasons.getFlags().clone();

    }

} else if (idpExt == null || reasons == null) {

    if (pointReasonFlags != null) {

        // set interim reasons mask to the value of DP reasons

        interimReasonsMask = pointReasonFlags.clone();

    } else {

        // set interim reasons mask to the special value all-reasons

        Arrays.fill(interimReasonsMask, true);  // ### SEE HERE ###

    }

}


// verify that interim reasons mask includes one or more reasons

// not included in the reasons mask

boolean oneOrMore = false;

for (int i = 0; i < interimReasonsMask.length && !oneOrMore; i++) {

    if (interimReasonsMask[i] && !(i < reasonsMask.length && reasonsMask[i])) {

        oneOrMore = true;

    }

}

if (!oneOrMore) {

    return false;

}

...


查看完整回答
反對 回復 2023-02-23
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號