CryptoAPI 消息函数遵循 PKCS #7 加密消息语法 (CMS) 标准。 开发人员需要熟悉此规范,以最有效地使用底层消息函数。 此处突出显示了其中的一些定义。
PKCS #7 标准描述了可能应用加密的数据的一般语法,例如数字签名和数字信封。 语法承认递归,例如,一个信封可以嵌套在另一个信封中,或者一方可以对已放入信封中的数字数据进行签名。 它还允许对任意属性(如签名时间)与消息内容一起进行身份验证。 此外,它还提供与签名关联的其他属性,例如反签名。
PKCS #7 消息中包含的数据类型被称为其内容类型。 内容类型有两类:基本和增强。
增强类中的内容采用封装,从而产生外部内容(包含增强功能的内容)和内部内容(正在增强的内容)这两个术语。 例如,增强类可能包括含签名的数据内容类型(基类)。 在这种情况下,数据内容类型是内部内容,数据内容类型和签名的组合构成了外部内容。
PKCS #7 标准中定义的内容类型如下所示。
内容类型 | 说明 |
---|---|
Data | 八进制 (BYTE) 字符串。 |
签名数据 | 对于零个或多个签名者,任何类型和加密的消息哈希(摘要)的内容。 |
信封数据 | 为一个或多个收件人加密任何类型的内容和加密的内容加密密钥。 收件人的加密内容和加密内容加密密钥的组合是该收件人的数字信封。 |
签名和信封数据 | 任何类型的加密内容、一个或多个收件人的加密内容加密密钥,以及一个或多个签名者的双重加密消息摘要。 双重加密由具有签名者的私钥的加密组成,后跟内容加密密钥的加密。 |
摘要数据 | 任何类型的内容和消息哈希(摘要)的内容。 |
加密数据 | 任何类型的加密内容。 与信封数据内容类型不同,加密数据内容类型既没有收件人,也没有加密的内容加密密钥。 假定密钥由其他方式管理。 |
注意
在整个 PKCS #7 规范中,术语摘要和摘要处理是指从向数据应用哈希算法生成的值。 本文档使用术语 哈希和哈希处理用于同一目的。 例如,与底层消息函数一起使用的数据类型称为哈希处理而不是摘要处理。 就本文档的目的而言,这两组术语可以互换使用。