メインコンテンツまでスキップ

7.2. CWT の検証

7.2. CWT の検証

CWT を検証する場合、次の手順を実行します。各手順の入力と出力に依存関係がない場合、手順の順序は重要ではありません。列挙した手順のいずれかが失敗した場合、CWT は拒否しなければなりません。つまり、アプリケーションは無効な入力として扱わなければなりません。

  1. CWT が有効な CBOR オブジェクトであることを検証します。

  2. オブジェクトが CWT CBOR タグで始まる場合、そのタグを削除し、後に COSE CBOR タグのいずれかが続くことを検証します。

  3. オブジェクトに COSE CBOR タグのいずれかが付いている場合、そのタグを削除し、それを使用して CWT、COSE_Sign/COSE_Sign1、COSE_Mac/COSE_Mac0、または COSE_Encrypt/COSE_Encrypt0 の種類を判定します。オブジェクトに COSE CBOR タグがない場合、COSE メッセージ種別はアプリケーションコンテキストから決定します。

  4. 得られた COSE Header に、構文と意味の両方を理解・サポートしているパラメータおよび値、または理解できないときには無視するよう規定されているパラメータおよび値のみが含まれることを検証します。

  5. CWT が署名、MAC、または暗号化されているかに応じて、次の 3 つの場合があります。

    • CWT が COSE_Sign/COSE_Sign1 の場合、COSE_Sign/COSE_Sign1 オブジェクトの検証について [RFC8152] の第 4 節("Signing Objects")で規定される手順に従います。Message を COSE_Sign/COSE_Sign1 payload とします。

    • それ以外で CWT が COSE_Mac/COSE_Mac0 の場合、COSE_Mac/COSE_Mac0 オブジェクトの検証について [RFC8152] の第 6 節("MAC Objects")で規定される手順に従います。Message を COSE_Mac/COSE_Mac0 payload とします。

    • それ以外で CWT が COSE_Encrypt/COSE_Encrypt0 オブジェクトの場合、COSE_Encrypt/COSE_Encrypt0 オブジェクトの検証について [RFC8152] の第 5 節("Encryption Objects")で規定される手順に従います。Message を得られた平文とします。

  6. Message が COSE CBOR タグで始まる場合、Message はネストした署名、MAC、または暗号化操作の対象となった CWT です。この場合、Message を CWT として手順 1 に戻ります。

  7. Message が有効な CBOR マップであることを検証し、この CBOR マップを CWT Claims Set とします。