Funzione CryptSignAndEncodeCertificate (wincrypt.h)
La funzione CryptSignAndEncodeCertificate codifica e firma un certificato, un elenco di revoche di certificati (CRL), un elenco di attendibilità certificato (CTL) o una richiesta di certificato.
Questa funzione esegue le operazioni seguenti:
- Chiama CryptEncodeObject usando lpszStructType per codificare le informazioni "da firmare".
- Chiama CryptSignCertificate per firmare queste informazioni codificate.
- Chiama di nuovo CryptEncodeObject , con lpszStructType impostato su X509_CERT, per codificare ulteriormente le informazioni firmate e codificate risultanti.
Sintassi
BOOL CryptSignAndEncodeCertificate(
[in] BCRYPT_KEY_HANDLE hBCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const void *pvStructInfo,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] const void *pvHashAuxInfo,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
Parametri
[in] hBCryptKey
Handle del provider di servizi di crittografia (CSP) per eseguire la firma. Questo handle è un handle HCRYPTPROV creato usando la funzione CryptAcquireContext o un handle NCRYPT_KEY_HANDLE creato usando la funzione NCryptOpenKey . Le nuove applicazioni devono sempre passare un handle NCRYPT_KEY_HANDLE di un CNG CSP.
[in] dwKeySpec
Identifica la chiave privata da usare dal contenitore del provider. Questo deve essere uno dei valori seguenti. Questo parametro viene ignorato se viene passata una chiave CNG nel parametro hCryptProvOrNCryptKey .
Valore | Significato |
---|---|
|
Usare la chiave di scambio delle chiavi. |
|
Usare la chiave di firma digitale. |
[in] dwCertEncodingType
Specifica il tipo di codifica usato. Questo può essere il valore seguente.
Valore | Significato |
---|---|
|
Specifica la codifica del certificato X.509 . |
[in] lpszStructType
Puntatore a una stringa ANSI con terminazione null contenente il tipo di dati da codificare e firmare. Le costanti lpszStructType predefinite seguenti vengono usate con operazioni di codifica.
Valore | Significato |
---|---|
|
pvStructInfo è l'indirizzo di una struttura CRL_INFO . |
|
pvStructInfo è l'indirizzo di una struttura CERT_REQUEST_INFO . |
|
pvStructInfo è l'indirizzo di una struttura CERT_INFO . |
|
pvStructInfo è l'indirizzo di una struttura CERT_KEYGEN_REQUEST_INFO . |
[in] pvStructInfo
Indirizzo di una struttura che contiene i dati da firmare e codificare. Il formato di questa struttura è determinato dal parametro lpszStructType .
[in] pSignatureAlgorithm
Puntatore a una struttura CRYPT_ALGORITHM_IDENTIFIER contenente l'identificatore dell'oggetto (OID) dell'algoritmo di firma e tutti i parametri aggiuntivi necessari. Questa funzione usa gli OID dell'algoritmo seguenti:
- szOID_RSA_MD5RSA
- szOID_RSA_SHA1RSA
- szOID_X957_SHA1DSA
[in] pvHashAuxInfo
Riservato. Deve essere NULL.
[out] pbEncoded
Puntatore a un buffer per ricevere l'output firmato e codificato.
Questo parametro può essere NULL per impostare le dimensioni di queste informazioni per scopi di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.
[in, out] pcbEncoded
Puntatore a un DWORD contenente le dimensioni, in byte, del buffer a cui punta il parametro pbEncoded . Quando la funzione restituisce, la DWORD contiene il numero di byte archiviati o da archiviare nel buffer.
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 sull'errore estese, chiamare GetLastError.
Codice restituito | Descrizione |
---|---|
|
Se il buffer specificato dal parametro pbEncoded non è sufficiente 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 pcbEncoded. |
|
Tipo di codifica del certificato non valido. Attualmente è supportato solo X509_ASN_ENCODING. |
|
L'OID dell'algoritmo di firma non esegue il mapping a un algoritmo hash noto o supportato. |
|
Si è verificato un errore durante la codifica o la decodifica. La causa più probabile di questo errore è l'inizializzazione non corretta dei campi nella struttura puntata da pvStructInfo. |
Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.
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 |