Condividi tramite


Funzione CryptMsgVerifyCountersignaturaEncodedEx (wincrypt.h)

La funzione CryptMsgVerifyCountersignaturaEncodedEx verifica che il parametro pbSignerInfoCounterSignature contenga l'hash crittografato del campo encryptedDigest della struttura dei parametri pbSignerInfo. Il firmatario può essere una struttura CERT_PUBLIC_KEY_INFO , un contesto di certificato o un contesto della catena.

Sintassi

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

Parametri

[in, optional] hCryptProv

Questo parametro non viene usato e deve essere impostato su NULL.

Windows Server 2003 e Windows XP: NULL o l'handle del provider di crittografia da usare per eseguire l'hash del campo encryptedDigest di pbSignerInfo. Il tipo di dati di questo parametro è HCRYPTPROV.

A meno che non esista un motivo sicuro per passare un provider di crittografia specifico in hCryptProv, passare NULL per fare in modo che venga usato il provider RSA o DSS predefinito.

[in] dwEncodingType

Tipo di codifica utilizzato. Attualmente vengono usati solo X509_ASN_ENCODING e PKCS_7_ASN_ENCODING; Tuttavia, è possibile aggiungere altri tipi di codifica in futuro. Per entrambi i tipi di codifica correnti, usare:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbSignerInfo

Puntatore al BLOB codificato che contiene il firmatario del contenuto di un messaggio da controfirmare.

[in] cbSignerInfo

Conteggio, in byte, del BLOB codificato per il firmatario del contenuto.

[in] pbSignerInfoCountersignature

Puntatore al BLOB codificato contenente le informazioni sul controfirmatore.

[in] cbSignerInfoCountersignature

Conteggio, in byte, del BLOB codificato per il controfirmatore del messaggio.

[in] dwSignerType

Struttura che contiene le informazioni sul firmatario. Nella tabella seguente vengono illustrati i valori predefiniti e le strutture indicate.

Valore Significato
CMSG_VERIFY_SIGNER_PUBKEY
pvSigner è un puntatore a una struttura CERT_PUBLIC_KEY_INFO .
CMSG_VERIFY_SIGNER_CERT
pvSigner è un puntatore a una struttura CERT_CONTEXT .
CMSG_VERIFY_SIGNER_CHAIN
pvSigner è un puntatore a una struttura CERT_CHAIN_CONTEXT .

[in] pvSigner

Puntatore a una struttura CERT_PUBLIC_KEY_INFO , a un contesto di certificato o a un contesto di catena a seconda del valore di dwSignerType.

dwFlags

Flag che modificano il comportamento della funzione. Può essere zero o il valore seguente.

Valore Significato
CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG
0x00000001
Esegue un controllo della firma sicuro dopo la verifica della firma completata. Impostare il parametro pvExtra in modo che punti a una struttura CERT_STRONG_SIGN_PARA contenente i parametri necessari per controllare il livello di attendibilità della firma.

Windows 8 e Windows Server 2012: inizia il supporto per questo flag.

pvExtra

Se si imposta il parametro dwFlags su CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG, impostare questo parametro (pvExtra) in modo che punti a una struttura CERT_STRONG_SIGN_PARA contenente i parametri usati per controllare il livello di attendibilità della firma.

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 sugli errori estesi, chiamare GetLastError.

I codici di errore seguenti vengono comunemente restituiti dalla funzione GetLastError .

Codice restituito Descrizione
CRYPT_E_AUTH_ATTR_MISSING
Il messaggio non contiene un attributo autenticato previsto.
CRYPT_E_HASH_VALUE
Il valore hash non è corretto.
CRYPT_E_UNEXPECTED_ENCODING
Il messaggio non è codificato come previsto.
CRYPT_E_UNKNOWN_ALGO
L'algoritmo di crittografia è sconosciuto.
E_INVALIDARG
Uno o più argomenti non sono validi.
E_OUTOFMEMORY
Memoria insufficiente.
 

È possibile che vengano restituiti errori propagati dalle funzioni seguenti.

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

Commenti

La verifica controfirma viene eseguita usando la struttura PKCS #7 SIGNERINFO . La firma deve contenere l'hash crittografato del campo encryptedDigest di pbSignerInfo.

L'autorità emittente e il numero di serie del controfirmatore devono corrispondere alle informazioni del controfirmatore da pbSignerInfoCountersignatura. Gli unici campi a cui si fa riferimento da pciCountersigner sono SerialNumber, Issuer e SubjectPublicKeyInfo. SubjectPublicKeyInfo viene usato per accedere alla chiave pubblica che viene quindi usata per crittografare l'hash da pciCountersigner in modo da confrontarlo con l'hash di pbSignerInfo.

Esempio

Per un esempio che usa questa funzione, vedere Esempio di programma C: codifica e decodifica di un messaggio controfirmato.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CryptMsgCountersign

CryptMsgCountersignEncoded

Funzioni messaggio di basso livello

Funzioni di messaggio semplificate