CryptExportPublicKeyInfoEx 関数 (wincrypt.h)
CryptExportPublicKeyInfoEx 関数は、プロバイダーの対応する秘密キーに関連付けられている公開キー情報をエクスポートします。 この関数を使用すると、アプリケーションは 公開キー アルゴリズムを指定し、 暗号化サービス プロバイダー (CSP) によって提供される既定値をオーバーライドできます。
構文
BOOL CryptExportPublicKeyInfoEx(
[in] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPSTR pszPublicKeyObjId,
[in] DWORD dwFlags,
[in] void *pvAuxInfo,
[out] PCERT_PUBLIC_KEY_INFO pInfo,
[in, out] DWORD *pcbInfo
);
パラメーター
[in] hCryptProvOrNCryptKey
公開キー情報をエクスポートするときに使用する CSP のハンドル。 このハンドルは、CryptAcquireContext 関数を使用して作成された HCRYPTPROV ハンドル、または NCryptOpenKey 関数を使用して作成されたNCRYPT_KEY_HANDLE ハンドルである必要があります。 新しいアプリケーションでは、常に CNG CSP の NCRYPT_KEY_HANDLE ハンドルを渡す必要があります。
[in] dwKeySpec
プロバイダーのコンテナーから使用する 秘密キー を識別します。 AT_KEYEXCHANGEまたはAT_SIGNATUREできます。 hCryptProvOrNCryptKey パラメーターでNCRYPT_KEY_HANDLEが使用されている場合、このパラメーターは無視されます。
[in] dwCertEncodingType
使用するエンコードの種類を指定します。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
現在定義されているエンコードの種類は次のとおりです。
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pszPublicKeyObjId
公開キー アルゴリズムを指定します。
[in] dwFlags
公開キー情報のエクスポート方法を示す DWORD フラグ値。 公開キー オブジェクト識別子を対応する CNG 公開キー アルゴリズム Unicode 文字列にマッピングすると、フラグ値は CryptFindOIDInfo 関数に直接渡されます。 次のフラグ値を設定できます。
値 | 意味 |
---|---|
|
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG フラグで明示的にフラグが設定されたCRYPT_PUBKEY_ALG_OID_GROUP_ID グループの公開キーをスキップします。 |
|
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG フラグで明示的にフラグが設定されたCRYPT_PUBKEY_ALG_OID_GROUP_ID グループの公開キーをスキップします。 |
[in] pvAuxInfo
このパラメーターは将来使用するために予約されており、 NULL に設定する必要があります。
[out] pInfo
エクスポートする公開キー情報を受け取る CERT_PUBLIC_KEY_INFO 構造体へのポインター。
このパラメーターは、メモリ割り当てのためにこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。
[in, out] pcbInfo
pInfo パラメーターによって指されるバッファーのサイズ (バイト単位) を含む DWORD へのポインター。 関数が戻ると、 DWORD にはバッファーに格納されているバイト数が含まれます。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) になります。
関数が失敗した場合、戻り値は 0 (FALSE) になります。 拡張エラー情報については、 GetLastError を呼び出します。
リターン コード | 説明 |
---|---|
|
指定した dwCertEncodingType パラメーターと pszPublicKeyObjId パラメーターに対して、インストールまたは登録できるエクスポート関数が見つかりませんでした。 |
|
pInfo パラメーターで指定されたバッファーが、返されるデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbInfo パラメーターが指す変数に格納します。 |
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |