CryptMsgVerifyCountersignatureEncodedEx 関数 (wincrypt.h)
CryptMsgVerifyCountersignatureEncodedEx 関数は、pbSignerInfoCounterSignature パラメーターに pbSignerInfo パラメーター構造の encryptedDigest フィールドの暗号化されたハッシュが含まれていることを確認します。 署名者には、 CERT_PUBLIC_KEY_INFO 構造、 証明書コンテキスト、またはチェーン コンテキストを指定できます。
構文
BOOL CryptMsgVerifyCountersignatureEncodedEx(
[in, optional] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] DWORD dwSignerType,
[in] void *pvSigner,
DWORD dwFlags,
void *pvExtra
);
パラメーター
[in, optional] hCryptProv
このパラメーターは使用されず、 NULL に設定する必要があります。
Windows Server 2003 および Windows XP: pbSignerInfo の encryptedDigest フィールドのハッシュに使用する暗号化プロバイダーの NULL またはハンドル。このパラメーターのデータ型は HCRYPTPROV です。
hCryptProv で特定の暗号化プロバイダーを渡す強い理由がない限り、NULL を渡して既定の RSA または DSS プロバイダーを使用します。
[in] dwEncodingType
使用されるエンコードの種類。 現在、X509_ASN_ENCODINGとPKCS_7_ASN_ENCODINGのみが使用されています。ただし、今後、エンコードの種類が追加される可能性があります。 現在のエンコードの種類の場合は、次の値を使用します。
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。
[in] pbSignerInfo
署名するメッセージの内容の署名者を含むエンコードされた BLOB へのポインター。
[in] cbSignerInfo
コンテンツの署名者のエンコードされた BLOB のカウント (バイト単位)。
[in] pbSignerInfoCountersignature
カウンター署名者情報を含むエンコードされた BLOB へのポインター。
[in] cbSignerInfoCountersignature
メッセージのカウンター署名者のエンコードされた BLOB の数 (バイト単位)。
[in] dwSignerType
署名者情報を含む構造体。 次の表は、定義済みの値と、示されている構造体を示しています。
値 | 意味 |
---|---|
|
pvSigner は、 CERT_PUBLIC_KEY_INFO 構造体へのポインターです。 |
|
pvSigner は、 CERT_CONTEXT 構造体へのポインターです。 |
|
pvSigner は、 CERT_CHAIN_CONTEXT 構造体へのポインターです。 |
[in] pvSigner
dwSignerType の値に応じて、CERT_PUBLIC_KEY_INFO構造体、証明書コンテキスト、またはチェーン コンテキストへのポインター。
dwFlags
関数の動作を変更するフラグ。 0 または次の値を指定できます。
値 | 意味 |
---|---|
|
署名の検証が成功した後、強力な署名チェックを実行します。 pvExtra パラメーターを設定して、署名の強度をチェックするために必要なパラメーターを含むCERT_STRONG_SIGN_PARA構造体を指します。
Windows 8とWindows Server 2012: このフラグのサポートが開始されます。 |
pvExtra
dwFlags パラメーターを CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG に設定した場合は、このパラメーター (pvExtra) を、署名強度のチェックに使用されるパラメーターを含むCERT_STRONG_SIGN_PARA構造体を指す値に設定します。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) になります。
関数が失敗した場合、戻り値は 0 (FALSE) になります。 拡張エラー情報については、 GetLastError を呼び出します。
次のエラー コードは、 GetLastError 関数によって最も一般的に返されます。
リターン コード | 説明 |
---|---|
|
メッセージに、想定される認証済み属性が含まれていません。 |
|
ハッシュ値が正しくありません。 |
|
メッセージは期待どおりにエンコードされません。 |
|
暗号化アルゴリズムは不明です。 |
|
1 つ以上の引数が無効です。 |
|
メモリが不足しました。 |
次の関数から伝達されたエラーが返される可能性があります。
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。注釈
カウンター署名者の検証は、PKCS #7 SIGNERINFO 構造体を 使用して行われます。 署名には 、pbSignerInfo の encryptedDigest フィールドの暗号化されたハッシュが含まれている必要があります。
カウンター署名者の発行者とシリアル番号は、 pbSignerInfoCountersignature のカウンター署名者情報と一致している必要があります。 pciCountersigner から参照されるフィールドは、SerialNumber、Issuer、SubjectPublicKeyInfo のみです。 SubjectPublicKeyInfo は公開キーにアクセスするために使用され、pciCountersigner からハッシュを暗号化するために使用されるため、pbSignerInfo のハッシュと比較します。
例
この関数を使用する例については、「 サンプル C プログラム: CounterSigned Message のエンコードとデコード」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |