CryptVerifyCertificateSignatureEx 関数 (wincrypt.h)
CryptVerifyCertificateSignatureEx 関数は、発行者の公開キーを使用して、サブジェクト証明書、証明書失効リスト、証明書要求、または keygen 要求の署名を検証します。 この関数では、 秘密キーへのアクセスは必要ありません。
構文
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
パラメーター
[in] hCryptProv
このパラメーターは使用されず、 NULL に設定する必要があります。
Windows Server 2003 および Windows XP: 署名の検証に使用される 暗号化サービス プロバイダー へのハンドル。このパラメーターのデータ型は HCRYPTPROV です。
特定 の暗号化プロバイダーを渡す強力な理由がない限り、NULL が渡されます。 NULL を渡すと、既定の RSA または DSS プロバイダーが取得されます。
[in] dwCertEncodingType
サブジェクトの暗号化に使用された 証明書エンコードの種類 。 この値の高い WORD に含まれるメッセージ エンコード型識別子は、この関数では無視されます。
このパラメーターには、現在定義されている次の証明書エンコードの種類を指定できます。
値 | 説明 |
---|---|
|
X.509 証明書のエンコードを指定します。 |
[in] dwSubjectType
件名の種類。 このパラメーターには、次のいずれかの種類のサブジェクトを指定できます。
値 | 説明 |
---|---|
|
pvSubject は、 CRYPT_DATA_BLOB 構造体へのポインターです。 |
|
pvSubject は、 CCERT_CONTEXT 構造体へのポインターです。 |
|
pvSubject は、 CCRL_CONTEXT 構造体へのポインターです。 |
|
pvSubject は、 OCSP_BASIC_SIGNED_RESPONSE_INFO 構造体へのポインターです。
Windows Server 2003 および Windows XP: このサブジェクトの種類はサポートされていません。 |
[in] pvSubject
検証対象のシグネチャを含む dwSubjectType によって示される型の構造体へのポインター。
[in] dwIssuerType
発行者の種類。 このパラメーターには、次のいずれかの発行者の種類を指定できます。
値 | 説明 |
---|---|
|
pvIssuer は、 CERT_PUBLIC_KEY_INFO 構造体へのポインターです。 |
|
pvIssuer は、 CCERT_CONTEXT 構造体へのポインターです。 |
|
pvIssuer は、 CCERT_CHAIN_CONTEXT 構造体へのポインターです。 |
|
pvIssuer は NULL である必要があります。 |
[in] pvIssuer
dwIssuerType の値によって示される型の構造体へのポインター。 構造体には、署名を確認するために必要な公開キーへのアクセスが含まれています。
[in] dwFlags
関数の動作を変更するフラグ。 次の値の 0 またはビットごとの OR を指定できます。
値 | 説明 |
---|---|
|
このフラグを設定し、 CryptVerifyCertificateSignatureEx が MD2 または MD4 アルゴリズムを検出した場合、関数は FALSE を 返し、 GetLastError を NTE_BAD_ALGIDに設定します。 署名は引き続き検証されますが、このエラーの組み合わせにより、呼び出し元は MD2 または MD4 アルゴリズムが使用されたことを認識して、署名を信頼するか拒否するかを決定できます。
Windows 8 と Windows Server 2012: このフラグのサポートが開始されます。 |
|
検証が成功した後、 pvSubject パラメーターが指すサブジェクトに対して強力な署名プロパティを設定します。
証明書コンテキストでは、次のプロパティが設定されます。
メモこのフラグは、dwSubjectType パラメーターにCRYPT_VERIFY_CERT_SIGN_SUBJECT_CRLが指定されている場合にのみ適用されます。
|
|
pvExtra パラメーター内のCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO構造体へのポインターを返します。 構造体には、公開キーの長さ (ビット単位) と、使用される署名アルゴリズムとハッシュ アルゴリズムの名前が含まれます。
構造体を解放するには 、CryptMemFree を呼び出す必要があります。 CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO構造体にメモリを割り当てることができない場合、この関数は正常にを返しますが、pvExtra パラメーターを NULL に設定します。 メモこのフラグは、dwSubjectType パラメーターでCRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSEが指定されている場合にのみ適用されます。
|
[in, out, optional] pvExtra
dwFlags パラメーターが CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG に設定されている場合は、CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO構造体へのポインター。
構造体を解放するには 、CryptMemFree を呼び出す必要があります。
戻り値
成功した場合は 0 以外、それ以外の場合は 0 を返します。
拡張エラー情報については、 GetLastError を呼び出します。
リターン コード | 説明 |
---|---|
|
証明書のエンコードの種類が無効です。 現在 、X509_ASN_ENCODING のみがサポートされています。 |
|
署名アルゴリズムの オブジェクト識別子 (OID) は、既知またはサポートされている ハッシュ アルゴリズムにマップされません。 |
|
署名が無効でした。 |
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。
解説
サブジェクト バッファーには、エンコードされた BLOB または証明書または CRL のコンテキストを含めることができます。 証明書コンテキストの場合、証明書の公開キー パラメーターが欠落していて、これらのパラメーターを証明書の発行者から継承できる場合 (DSS 公開キー パラメーターなど) は、コンテキストの CERT_PUBKEY_ALG_PARA_PROP_ID プロパティが、有効な署名の発行者の公開キー アルゴリズム パラメーターで更新されます。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |