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

公開キー アルゴリズムを指定します。

pszPublicKeyObjIddwCertEncodingType は、呼び出すインストール可能な CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC を決定するために一緒に使用されます。 pszPublicKeyObjId パラメーターに対してインストール可能な関数が見つからなかった場合、キーを RSA 公開キー (szOID_RSA_RSA) としてエクスポートしようとしました。
 

[in] dwFlags

公開キー情報のエクスポート方法を示す DWORD フラグ値。 公開キー オブジェクト識別子を対応する CNG 公開キー アルゴリズム Unicode 文字列にマッピングすると、フラグ値は CryptFindOIDInfo 関数に直接渡されます。 次のフラグ値を設定できます。

意味
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG フラグで明示的にフラグが設定されたCRYPT_PUBKEY_ALG_OID_GROUP_ID グループの公開キーをスキップします。
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
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 を呼び出します。

メモ 呼び出された関数 CryptGetUserKeyCryptExportKey からのエラーは、この関数に反映できます。
 
この関数には、次のエラー コードがあります。
リターン コード 説明
ERROR_FILE_NOT_FOUND
指定した dwCertEncodingType パラメーターと pszPublicKeyObjId パラメーターに対して、インストールまたは登録できるエクスポート関数が見つかりませんでした。
ERROR_MORE_DATA
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

こちらもご覧ください

CryptImportPublicKeyInfoEx

データ管理関数