ICEnroll::get_HashAlgorithm 方法 (xenroll.h)

[从 Windows Server 2008 和 Windows Vista 起,此属性不再可供使用。]

HashAlgorithm 属性仅设置或检索用于对 PKCS #10 认证请求进行签名的签名哈希算法

此属性首先在 ICEnroll 接口中定义。

此属性是可读写的。

语法

HRESULT get_HashAlgorithm(
  BSTR *pbstr
);

参数

pbstr

返回值

备注

此签名 哈希算法 不应与用于对证书进行签名的 哈希算法 混淆。 注册控件当前支持任何用于哈希算法OID,以及以下显示名称值:SHA1 (默认) 、MD2 和 MD5。 检索此属性时,检索到的值采用 OID 格式 (即 SHA1 显示为 1.3.14.3.2.29) 。 设置此属性时,可以使用相应的 OID 格式替代为定义的友好值显示的文本。

证书注册控件将 HashAlgorithm 属性的值视为用于对 PKCS #10 认证请求进行签名的 哈希算法 的提示。 如果 加密服务提供程序 (CSP) 支持 HashAlgorithm 属性中指定的算法,则将使用该算法。 否则,证书注册控件将尝试使用 SHA1。 如果 CSP 不支持 SHA1,则将尝试 MD5。 如果不支持 SHA1 和 MD5,则证书注册控件将尝试使用从 CSP 返回的第一个 哈希算法

HashAlgorithm 属性影响以下方法的行为:

如果同时设置了 HashAlgIDHashAlgorithm 属性,则以上次更新为准,将指定将用于对 PKCS #10 认证请求进行签名的 哈希算法

示例

BSTR     bstrHashAlg = NULL;
HRESULT  hr;

// get the hash algorithm
hr = pEnroll->get_HashAlgorithm( &bstrHashAlg );
if ( FAILED ( hr ) )
    printf("Failed get_HashAlgorithm - %x\n", hr );
else
    printf( "HashAlgorithm: %ws\n", bstrHashAlg );
// free BSTR
if ( NULL != bstrHashAlg )
    SysFreeString( bstrHashAlg);

BSTR    bstrMyHashAlg = SysAllocString(TEXT("MD5"));
// alternatively, ... = SysAllocString(TEXT("1.2.840.113549.1.1.4"));

// set the hash algorithm
hr = pEnroll->put_HashAlgorithm( bstrMyHashAlg );
if ( FAILED ( hr ) )
    printf("Failed put_HashAlgorithm - %x\n", hr );
else
    printf( "HashAlgorithm was set to %ws\n", bstrMyHashAlg );
// free BSTR
if ( NULL != bstrMyHashAlg )
    SysFreeString( bstrMyHashAlg);

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 xenroll.h
Library Uuid.lib
DLL Xenroll.dll