共用方式為


CryptVerifyDetachedMessageSignature 函式 (wincrypt.h)

CryptVerifyDetachedMessageSignature函式會驗證封裝含已中斷連結簽章或簽章的已簽署訊息。

語法

BOOL CryptVerifyDetachedMessageSignature(
  [in]            PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]            DWORD                      dwSignerIndex,
  [in]            const BYTE                 *pbDetachedSignBlob,
  [in]            DWORD                      cbDetachedSignBlob,
  [in]            DWORD                      cToBeSigned,
  [in]            const BYTE * []            rgpbToBeSigned,
  [in]            DWORD []                   rgcbToBeSigned,
  [out, optional] PCCERT_CONTEXT             *ppSignerCert
);

參數

[in] pVerifyPara

包含驗證參數 之CRYPT_VERIFY_MESSAGE_PARA 結構的指標。

[in] dwSignerIndex

要驗證之簽章的索引。 訊息可能有數個簽署者,而且可以重複呼叫此函式,變更 dwSignerIndex 來驗證其他簽章。 如果函式傳回 FALSE,而 GetLastError 傳回CRYPT_E_NO_SIGNER,則先前的呼叫會收到訊息的最後一個簽署者。

[in] pbDetachedSignBlob

包含編碼訊息簽章之 BLOB 的指標。

[in] cbDetachedSignBlob

中斷連結簽章的大小,以位元組為單位。

[in] cToBeSigned

rgpbToBeSignedrgcbToBeSigned中的陣列元素數目。

[in] rgpbToBeSigned

緩衝區的指標陣列,其中包含要 雜湊的內容。

[in] rgcbToBeSigned

大小陣列,以位元組為單位,表示 rgpbToBeSigned中所指向的內容緩衝區。

[out, optional] ppSignerCert

指向簽署者憑證 CERT_CONTEXT 結構的指標。 當您完成使用憑證內容時,請呼叫 CertFreeCertificateCoNtext 函式來釋放它。 如果此參數為Null,則不會傳回CERT_CONTEXT結構的指標。

傳回值

如果函式成功,則傳回值為非零 (TRUE) 。

如果函式失敗,傳回值為零, (FALSE) 。

如需擴充的錯誤資訊,請呼叫 GetLastError

下列列出 GetLastError 函式最常傳回的錯誤碼。

傳回碼 描述
E_INVALIDARG
不正確訊息和憑證編碼類型。 目前僅支援PKCS_7_ASN_ENCODING和X509_ASN_ENCODING_TYPE。 *pVerifyPara中的cbSize無效。
CRYPT_E_UNEXPECTED_MSG_TYPE
不是已簽署的密碼編譯訊息。
CRYPT_E_NO_SIGNER
訊息沒有指定 dwSignerIndex的任何簽署者或簽署者。
NTE_BAD_ALGID
訊息已使用未知或不支援的演算法進行雜湊處理和簽署。
NTE_BAD_SIGNATURE
未驗證訊息的簽章。
 
注意 來自所呼叫函式 CryptCreateHashCryptHashDataCryptVerifySignatureCryptImportKey 的錯誤可能會傳播至此函式。

如果函式失敗, GetLastError 可能會傳回 抽象語法標記法 1 (ASN.1) 編碼/解碼錯誤。 如需這些錯誤的相關資訊,請參閱 ASN.1 編碼/解碼傳回值

 

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CryptVerifyMessageSignature

簡化的訊息函式