7.1. Creating a CWT (创建 CWT)
7.1. Creating a CWT (创建 CWT)
要创建 CWT, 需执行以下步骤。在步骤的输入和输出之间没有依赖关系的情况下, 步骤的顺序并不重要。
-
创建包含所需声明的 CWT Claims Set。
-
令 Message 为 CWT Claims Set 的二进制表示。
-
创建包含所需 Header Parameters 集合的 COSE Header。COSE Header 必须根据 [RFC8152] 规范有效。
-
根据 CWT 是签名、MAC 还是加密, 有三种情况:
-
如果 CWT 是签名的, 则使用 Message 作为 COSE_Sign/COSE_Sign1 Payload 创建 COSE_Sign/COSE_Sign1 对象; 必须遵循 [RFC8152] 中指定的创建 COSE_Sign/COSE_Sign1 对象的所有步骤。
-
否则, 如果 CWT 使用 MAC, 则使用 Message 作为 COSE_Mac/COSE_Mac0 Payload 创建 COSE_Mac/COSE_Mac0 对象; 必须遵循 [RFC8152] 中指定的创建 COSE_Mac/COSE_Mac0 对象的所有步骤。
-
否则, 如果 CWT 是 COSE_Encrypt/COSE_Encrypt0 对象, 则使用 Message 作为 COSE_Encrypt/COSE_Encrypt0 对象的明文创建 COSE_Encrypt/COSE_Encrypt0; 必须遵循 [RFC8152] 中指定的创建 COSE_Encrypt/COSE_Encrypt0 对象的所有步骤。
-
-
如果要执行嵌套签名、MAC 或加密操作, 则令 Message 为标记的 COSE_Sign/COSE_Sign1、COSE_Mac/COSE_Mac0 或 COSE_Encrypt/COSE_Encrypt0, 并返回步骤 3。
-
如果应用需要, 在 COSE 对象前添加适当的 COSE CBOR 标签以指示 COSE 对象的类型。如果应用需要, 在 COSE 对象前添加 CWT CBOR 标签以指示 COSE 对象是 CWT。