Funzione CryptVerifyMessageSignatureWithKey (wincrypt.h)

La funzione CryptVerifyMessageSignatureWithKey verifica la firma di un messaggio firmato usando le informazioni sulla chiave pubblica specificate.

Sintassi

BOOL CryptVerifyMessageSignatureWithKey(
  [in]      PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]      PCERT_PUBLIC_KEY_INFO          pPublicKeyInfo,
  [in]      const BYTE                     *pbSignedBlob,
  [in]      DWORD                          cbSignedBlob,
  [out]     BYTE                           *pbDecoded,
  [in, out] DWORD                          *pcbDecoded
);

Parametri

[in] pVerifyPara

Puntatore a una struttura CRYPT_KEY_VERIFY_MESSAGE_PARA che contiene parametri di verifica.

[in] pPublicKeyInfo

Puntatore a una struttura CERT_PUBLIC_KEY_INFO contenente la chiave pubblica usata per verificare il messaggio firmato. Se NULL, la firma non viene verificata.

[in] pbSignedBlob

Puntatore a un buffer contenente il messaggio firmato.

[in] cbSignedBlob

Dimensioni, in byte, del buffer dei messaggi firmati.

[out] pbDecoded

Puntatore a un buffer per ricevere il messaggio decodificato.

Questo parametro può essere NULL se il messaggio decodificato non è necessario per l'elaborazione aggiuntiva o per impostare le dimensioni del messaggio per scopi di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out] pcbDecoded

Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer pbDecoded . Quando la funzione restituisce, questa DWORD contiene le dimensioni, in byte, del messaggio decodificato. Il messaggio decodificato non verrà restituito se questo parametro è NULL.

Nota Quando si elaborano i dati restituiti, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori rispetto alle dimensioni del buffer specificato nell'input. In base all'input, le dimensioni del buffer vengono in genere specificate abbastanza grandi per garantire che i dati di output più grandi siano adatti al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata per riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.

Se la funzione ha esito negativo, restituisce zero. Per informazioni sull'errore estese, chiamare GetLastError.

La tabella seguente mostra i codici di errore più comunemente restituiti dalla funzione GetLastError .

Codice restituito Descrizione
ERROR_MORE_DATA
Se il buffer specificato dal parametro pbDecoded non è abbastanza grande per contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile puntata da pcbDecoded.
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.

Requisiti

Requisito Valore
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