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 |
---|---|
|
pvSigner è un puntatore a una struttura CERT_PUBLIC_KEY_INFO . |
|
pvSigner è un puntatore a una struttura CERT_CONTEXT . |
|
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 |
---|---|
|
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 |
---|---|
|
Il messaggio non contiene un attributo autenticato previsto. |
|
Il valore hash non è corretto. |
|
Il messaggio non è codificato come previsto. |
|
L'algoritmo di crittografia è sconosciuto. |
|
Uno o più argomenti non sono validi. |
|
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 |