Funzione CryptMsgVerifyCountersignaturaEncoded (wincrypt.h)
La funzione CryptMsgVerifyCountersignaturaEncoded verifica una controfirma in termini di struttura SignerInfo ,come definito da PKCS #7.
Sintassi
BOOL CryptMsgVerifyCountersignatureEncoded(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] PCERT_INFO pciCountersigner
);
Parametri
[in] 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
Specifica il 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] pciCountersigner
Puntatore a un CERT_INFO che include con l'emittente e il numero di serie del controfirmatore. Per altre informazioni, vedere la sezione Osservazioni.
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.
Nella tabella seguente sono elencati i codici di errore restituiti più di frequente 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 |