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