7.2. Validating a CWT (验证 CWT)
7.2. Validating a CWT (验证 CWT)
验证 CWT 时, 执行以下步骤。在步骤的输入和输出之间没有依赖关系的情况下, 步骤的顺序并不重要。如果任何列出的步骤失败, 则必须拒绝 CWT -- 即应用将其视为无效输入。
-
验证 CWT 是有效的 CBOR 对象。
-
如果对象以 CWT CBOR 标签开头, 则删除它并验证其后跟随一个 COSE CBOR 标签。
-
如果对象标记有 COSE CBOR 标签之一, 则删除它并使用它来确定 CWT 的类型, COSE_Sign/COSE_Sign1、COSE_Mac/COSE_Mac0 或 COSE_Encrypt/COSE_Encrypt0。如果对象没有 COSE CBOR 标签, 则从应用上下文确定 COSE 消息类型。
-
验证生成的 COSE Header 仅包含其语法和语义都被理解和支持的参数和值, 或指定为在不理解时被忽略的参数和值。
-
根据 CWT 是签名、MAC 还是加密, 有三种情况:
-
如果 CWT 是 COSE_Sign/COSE_Sign1, 遵循 [RFC8152] 第 4 节 ("Signing Objects") 中指定的验证 COSE_Sign/COSE_Sign1 对象的步骤。令 Message 为 COSE_Sign/COSE_Sign1 载荷。
-
否则, 如果 CWT 是 COSE_Mac/COSE_Mac0, 遵循 [RFC8152] 第 6 节 ("MAC Objects") 中指定的验证 COSE_Mac/COSE_Mac0 对象的步骤。令 Message 为 COSE_Mac/COSE_Mac0 载荷。
-
否则, 如果 CWT 是 COSE_Encrypt/COSE_Encrypt0 对象, 遵循 [RFC8152] 第 5 节 ("Encryption Objects") 中指定的验证 COSE_Encrypt/COSE_Encrypt0 对象的步骤。令 Message 为生成的明文。
-
-
如果 Message 以 COSE CBOR 标签开头, 则 Message 是进行了嵌套签名、MAC 或加密操作的 CWT。在这种情况下, 返回步骤 1, 使用 Message 作为 CWT。
-
验证 Message 是有效的 CBOR 映射; 令 CWT Claims Set 为此 CBOR 映射。