Condividi tramite


Funzione CryptVerifyDetachedMessageSignature (wincrypt.h)

La funzione CryptVerifyDetachedMessageSignature verifica un messaggio firmato contenente una firma o firme scollegate.

Sintassi

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
);

Parametri

[in] pVerifyPara

Puntatore a una struttura CRYPT_VERIFY_MESSAGE_PARA contenente i parametri di verifica.

[in] dwSignerIndex

Indice della firma da verificare. Un messaggio potrebbe avere diversi signer e questa funzione può essere chiamata ripetutamente, modificando dwSignerIndex per verificare altre firme. Se la funzione restituisce FALSE e GetLastError restituisce CRYPT_E_NO_SIGNER, la chiamata precedente ha ricevuto l'ultimo segno del messaggio.

[in] pbDetachedSignBlob

Puntatore a un BLOB contenente le firme dei messaggi codificate.

[in] cbDetachedSignBlob

Dimensioni, in byte, della firma scollegata.

[in] cToBeSigned

Numero di elementi di matrice in rgpbToBeSigned e rgcbToBeSigned.

[in] rgpbToBeSigned

Matrice di puntatori ai buffer contenenti il contenuto da hashare.

[in] rgcbToBeSigned

Matrice di dimensioni, in byte, per i buffer di contenuto a cui punta rgpbToBeSigned.

[out, optional] ppSignerCert

Puntatore a un puntatore a una struttura CERT_CONTEXT di un certificato di firma. Al termine dell'uso del contesto del certificato, liberarlo chiamando la funzione CertFreeCertificateContext . Un puntatore a una struttura CERT_CONTEXT non verrà restituito se questo parametro è NULL.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

Se la funzione ha esito negativo, il valore restituito è zero (FALSE).

Per informazioni sull'errore estese, chiamare GetLastError.

Di seguito sono elencati i codici di errore più comunemente restituiti dalla funzione GetLastError .

Codice restituito Descrizione
E_INVALIDARG
Tipi di codifica del messaggio e del certificato non validi. Attualmente sono supportati solo PKCS_7_ASN_ENCODING e X509_ASN_ENCODING_TYPE. CbSize non valido in *pVerifyPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Non un messaggio crittografico firmato.
CRYPT_E_NO_SIGNER
Il messaggio non ha alcun segno o un firmatario per il dwSignerIndex specificato.
NTE_BAD_ALGID
Il messaggio è stato hashato e firmato usando un algoritmo sconosciuto o non supportato.
NTE_BAD_SIGNATURE
La firma del messaggio non è stata verificata.
 
Nota Gli errori delle funzioni denominate CryptCreateHash, CryptHashData, CryptVerifySignature e CryptImportKey potrebbero essere propagati a questa funzione.

Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.

 

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CryptVerifyMessageSignature

Funzioni di messaggio semplificate