StrongNameGetPublicKeyEx 方法

从公钥/私钥对中获取公钥,并指定哈希算法和签名算法。

语法

HRESULT StrongNameGetPublicKey (
    [in]  LPCWSTR   pwzKeyContainer,  
    [in]  BYTE      *pbKeyBlob,  
    [in]  ULONG     cbKeyBlob,  
    [out] BYTE      **ppbPublicKeyBlob,  
    [out] ULONG     *pcbPublicKeyBlob  
    [in]  ULONG     uHashAlgId,  
    [in]  ULONG     uReserved,  
);  

参数

pwzKeyContainer
[in] 包含公钥/私钥对的密钥容器的名称。 如果 pbKeyBlob 为 Null,则 szKeyContainer 必须在加密服务提供程序 (CSP) 中指定一个有效容器。 在这种情况下,StrongNameGetPublicKeyEx 方法从容器中存储的密钥对中提取公钥。

如果 pbKeyBlob 不为 Null,则假定密钥对包含在密钥二进制大型对象 (BLOB) 中。

密钥必须为 1024 位 Rivest-Shamir-Adleman (RSA) 签名密钥。 目前不支持其他类型的密钥。

pbKeyBlob
[in] 指向公钥/私钥对的指针。 此对采用由 Win32 CryptExportKey 函数创建的格式。 如果 pbKeyBlob 为 null,则假定 szKeyContainer 指定的密钥容器包含密钥对。

cbKeyBlob
[in] pbKeyBlob 的大小(以字节为单位)。

ppbPublicKeyBlob
[out] 返回的公钥 BLOB。 参数 ppbPublicKeyBlob 由公共语言运行时分配,并返回给调用方。 调用方必须使用 ICLRStrongName::StrongNameFreeBuffer 方法释放内存。

pcbPublicKeyBlob
[out] 返回的公钥 BLOB 的大小。

uHashAlgId
[in] 程序集哈希算法。 有关接受的值的列表,请参阅“注解”部分。

uReserved
[in] 保留供将来使用;默认值为 Null。

返回值

如果方法成功完成,则返回 S_OK;否则返回指示失败的 HRESULT 值(有关列表,请参阅常见 HRESULT 值)。

注解

公钥包含在 PublicKeyBlob 结构中。

下表显示了 uHashAlgId 参数的可接受值集。

名称
0
SHA-1 0x8004
SHA-256 0x800c
SHA-384 0x800d
SHA-512 0x800e

要求

平台:请参阅系统要求

标头:MetaHost.h

库:作为资源包含在 MSCorEE.dll 中

.NET Framework 版本:自 4.5 起可用

另请参阅