GetSignatureAlgorithm 方法检索签名算法对象标识符 (OID)。
Syntax
HRESULT GetSignatureAlgorithm(
[in] VARIANT_BOOL Pkcs7Signature,
[in] VARIANT_BOOL SignatureKey,
[out] IObjectId **ppValue
);
参数
[in] Pkcs7Signature
一个VARIANT_BOOL变量,指定该算法是用于对 PKCS #7 还是 CMC 证书请求进行签名。
[in] SignatureKey
一个VARIANT_BOOL变量,该变量指定当算法 OID 与多个用途关联时,是否首选仅用于签名的算法。 例如,XCN_OID_RSA_RSA(1.2.840.113549.1.1.1)可用于签名和密钥交换。
[out] ppValue
接收指向表示算法 OID 的 IObjectId 接口的指针的变量的地址。
返回值
如果函数成功,该函数将返回 S_OK。
如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
| 返回代码/值 | Description |
|---|---|
|
尚未指定哈希算法 OID 或 NullSigned 属性,但找不到签名算法 OID。 |
|
找不到组合签名算法。 |
注解
此方法搜索与输入参数一致的缓存签名算法。 如果找不到任何值,该方法将使用输入参数以及分配给各种 IX509SignatureInformation 属性的值,如以下列表所示。
-
Pkcs7Signature = true,NullSigned = true
此情况表示空签名的 PKCS #7 证书请求。 该方法返回 OID XCN_OID_PKIX_NO_SIGNATURE (1.3.6.1.5.5.7.6.2) OID。
-
Pkcs7Signature = true,NullSigned = false
此情况检索 PKCS #7 请求的离散签名算法 OID,该请求不是 null 签名的。 离散签名要求设置 HashAlgorithm 和 PublicKeyAlgorithm 属性。 在公钥算法XCN_OID_X957_DSA且哈希算法未XCN_OID_OIWSEC_sha1的特殊情况下,检索的签名算法 OID XCN_OID_X957_SHA1DSA(1.2.840.10040.4.3)。
-
Pkcs7Signature = false,NullSigned = false,AlternateSignatureAlgorithm = true
此情况检索 PKCS #10 请求的离散签名算法 OID,并在 Parameters 属性中对哈希算法 OID 进行编码。 必须设置 HashAlgorithm 和 PublicKeyAlgorithm 属性。
-
Pkcs7Signature = false,NullSigned = false,AlternateSignatureAlgorithm = false
此情况检索 PKCS #7 请求的离散签名算法 OID。 必须设置 HashAlgorithm 和 PublicKeyAlgorithm 属性。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | certenroll.h |
| DLL | CertEnroll.dll |