CryptCreateKeyIdentifierFromCSP 函式 (wincrypt.h)

重要 此 API 已被取代。 新的和現有的軟體應該開始使用 密碼編譯新一代 API。 Microsoft 可能會在未來的版本中移除此 API。
 
CryptCreateKeyIdentifierFromCSP 函式會從密碼編譯服務提供者建立密鑰標識碼, (CSP) 公鑰CRYPT_INTEGER_BLOB

此函式會將 CSP 的 PUBLICKEYSTRUC 轉換成 X.509CERT_PUBLIC_KEY_INFO 結構,並將其編碼。 編碼的結構接著會以SHA1演算法 哈希 ,以取得金鑰標識碼。

語法

BOOL CryptCreateKeyIdentifierFromCSP(
  [in]      DWORD                dwCertEncodingType,
  [in]      LPCSTR               pszPubKeyOID,
  [in]      const PUBLICKEYSTRUC *pPubKeyStruc,
  [in]      DWORD                cbPubKeyStruc,
  [in]      DWORD                dwFlags,
  [in]      void                 *pvReserved,
  [out]     BYTE                 *pbHash,
  [in, out] DWORD                *pcbHash
);

參數

[in] dwCertEncodingType

指定使用的編碼類型。 將憑證和 訊息編碼類型 與位 OR 作業結合在一起,一律可以接受,如下列範例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

目前定義的編碼類型如下:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pszPubKeyOID

公鑰 物件識別碼 的指標 (OID) 。 非 NULL 的值會覆寫 pPubKeyStruc 所指向之結構的 aiKeyAlg 成員取得的預設 OID。 若要使用預設的 OID,請將 pszPubKeyOID 設定為 NULL

[in] pPubKeyStruc

PUBLICKEYSTRUC 結構的指標。 在預設案例中,pPubKeyStruc 所指向結構的 aiKeyAlg 成員是用來尋找公鑰 OID。 當 pszPubKeyOID 的值不是 NULL 時,它會覆寫預設值。

[in] cbPubKeyStruc

PUBLICKEYSTRUC 的大小,以位元組為單位。

[in] dwFlags

保留供日後使用,且必須為零。

[in] pvReserved

保留供日後使用,且必須是 NULL

[out] pbHash

緩衝區的指標,用來接收公鑰和金鑰標識碼的 哈希

若要取得此資訊的大小以供記憶體配置之用,請將此參數設定為 NULL。 如需詳細資訊,請參閱 擷取未知長度的數據

[in, out] pcbHash

DWORD 的指標,指定 pbHash 參數所指向之緩衝區的大小,以位元組為單位。 當函式傳回時, DWORD 會包含儲存在緩衝區中的位元元組數目。 使用SHA1哈希時,所需緩衝區的長度為20。

傳回值

如果函式成功,函式會傳回非零 (TRUE) 。

如果函式失敗,它會傳回零 (FALSE) 。 如需擴充錯誤資訊,請呼叫 GetLastError

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CryptEnumKeyIdentifierProperties

CryptGetKeyIdentifierProperty

CryptSetKeyIdentifierProperty

金鑰識別碼函式