次の方法で共有


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

署名者情報を含む構造体。 次の表は、定義済みの値と、示されている構造体を示しています。

意味
CMSG_VERIFY_SIGNER_PUBKEY
pvSigner は、 CERT_PUBLIC_KEY_INFO 構造体へのポインターです。
CMSG_VERIFY_SIGNER_CERT
pvSigner は、 CERT_CONTEXT 構造体へのポインターです。
CMSG_VERIFY_SIGNER_CHAIN
pvSigner は、 CERT_CHAIN_CONTEXT 構造体へのポインターです。

[in] pvSigner

dwSignerType の値に応じて、CERT_PUBLIC_KEY_INFO構造体、証明書コンテキスト、またはチェーン コンテキストへのポインター。

dwFlags

関数の動作を変更するフラグ。 0 または次の値を指定できます。

意味
CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG
0x00000001
署名の検証が成功した後、強力な署名チェックを実行します。 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 関数によって最も一般的に返されます。

リターン コード 説明
CRYPT_E_AUTH_ATTR_MISSING
メッセージに、想定される認証済み属性が含まれていません。
CRYPT_E_HASH_VALUE
ハッシュ値が正しくありません。
CRYPT_E_UNEXPECTED_ENCODING
メッセージは期待どおりにエンコードされません。
CRYPT_E_UNKNOWN_ALGO
暗号化アルゴリズムは不明です。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
メモリが不足しました。
 

次の関数から伝達されたエラーが返される可能性があります。

関数が失敗した場合、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

こちらもご覧ください

CryptMsgCountersign

CryptMsgCountersignEncoded

低レベルのメッセージ関数

簡略化されたメッセージ関数