CryptImportPublicKeyInfoEx 関数 (wincrypt.h)

大事な この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptImportPublicKeyInfoEx 関数は、公開キー情報を暗号化サービス プロバイダー (CSP) にインポートし、公開キーのハンドルを返します。 既定値をオーバーライドする追加のパラメーターは、 CERT_PUBLIC_KEY_INFOのパラメーターを補完するために提供されます。

構文

BOOL CryptImportPublicKeyInfoEx(
  [in]  HCRYPTPROV            hCryptProv,
  [in]  DWORD                 dwCertEncodingType,
  [in]  PCERT_PUBLIC_KEY_INFO pInfo,
  [in]  ALG_ID                aiKeyAlg,
  [in]  DWORD                 dwFlags,
  [in]  void                  *pvAuxInfo,
  [out] HCRYPTKEY             *phKey
);

パラメーター

[in] hCryptProv

インポートされた公開キーを受け取る CSP のハンドル。 このハンドルは、 CryptAcquireContext を使用して既に作成されている必要があります。

[in] dwCertEncodingType

使用するエンコードの種類を指定します。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

現在定義されているエンコードの種類は次のとおりです。

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pInfo

プロバイダーにインポートする公開キーを含む CERT_PUBLIC_KEY_INFO 構造体のアドレス。

メモpInfo パラメーターと dwCertEncodingType パラメーターが指す Algorithm メンバーの pzObjId メンバーは、インストール可能なCRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNCコールバック関数を決定します。 インストール可能な関数が見つからない場合は、キーを RSA 公開キー (szOID_RSA_RSA) としてインポートしようとします。
 

[in] aiKeyAlg

既定のアルゴリズム オーバーライドする CSP 固有のアルゴリズムを含む ALG_ID構造CALG_RSA_KEYX

[in] dwFlags

将来使用するために予約されており、0 である必要があります。

[in] pvAuxInfo

将来使用するために予約されており、 NULL である必要があります。

[out] phKey

インポートされた公開キーのハンドルを受け取る HCRYPTKEY 変数のアドレス。 公開キーの使用が完了したら、 CryptDestroyKey 関数を呼び出してハンドルを解放します。

戻り値

関数が成功した場合、関数は 0 以外 (TRUE) を返します。

関数が失敗した場合は、0 (FALSE) を返します。 拡張エラー情報については、 GetLastError を呼び出します。

メモ 呼び出された関数 CryptGetUserKeyCryptExportKey からのエラーがこの関数に反映される可能性があります。 この関数には、次のエラー コードがあります。
 
説明
ERROR_FILE_NOT_FOUND
インストールまたは登録できるインポート関数が、指定された dwCertEncodingType パラメーターと pInfo パラメーターに対して見つかりませんでした。
 

関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。

解説

この関数は通常、証明書から公開キーを取得するために使用されます。 これは、次の擬似コードに示すように、入力された証明書構造から CERT_PUBLIC_KEY_INFO 構造体を渡すことによって行われます。

PCCERT_CONTEXT pCertContext

// Get the certificate context structure from a certificate.
pCertContext = CertCreateCertificateContext(...)
if(pCertContext)
{
    HCRYPTKEY hCertPubKey

    // Get the public key information for the certificate.
    CryptImportPublicKeyInfo(
        hCryptProv, 
        X509_ASN_ENCODING, 
        &pCertContext->pCertInfo->SubjectPublicKeyInfo, 
        &hCertPubKey)

    CertFreeCertificateContext(pCertContext)
}

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

関連項目

CryptExportPublicKeyInfoEx

データ管理関数