次の方法で共有


CryptGetMessageSignerCount 関数 (wincrypt.h)

CryptGetMessageSignerCount 関数は、署名付きメッセージの署名者の数を返します。

注意

この関数は重複する署名者の数を返す可能性があるため、攻撃を回避するには十分ではない可能性があります。 SignerInfo の sid (SignerIdentifier) フィールドを使用して、メッセージ内の重複する署名者を識別することをお勧めします。

構文

LONG CryptGetMessageSignerCount(
  [in] DWORD      dwMsgEncodingType,
  [in] const BYTE *pbSignedBlob,
  [in] DWORD      cbSignedBlob
);

パラメーター

[in] dwMsgEncodingType

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

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

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

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbSignedBlob

署名付きメッセージを含むバッファーへのポインター。

[in] cbSignedBlob

署名されたメッセージのサイズ (バイト単位)。

戻り値

署名付きメッセージの署名者の数、署名者がいない場合は 0、エラーの場合は 1 (-1) を引いた値を返します。

拡張エラー情報については、 GetLastError を呼び出します。 次のエラー コードが最も一般的に返されます。

リターン コード 説明
E_INVALIDARG
メッセージ エンコードの種類が無効です。 現在、PKCS_7_ASN_ENCODINGのみがサポートされています。
 

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

要件

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

こちらもご覧ください

CryptVerifyMessageSignature

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