Funzione CryptEncodeObject (wincrypt.h)
La funzione CryptEncodeObject codifica una struttura del tipo indicato dal valore del parametro lpszStructType . L'uso di CryptEncodeObjectEx è consigliato come API che esegue la stessa funzione con miglioramenti significativi delle prestazioni.
Sintassi
BOOL CryptEncodeObject(
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const void *pvStructInfo,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
Parametri
[in] dwCertEncodingType
Tipo di codifica utilizzata. È sempre accettabile specificare sia i tipi di codifica del certificato che dei messaggi combinandoli con un'operazione bit per bit or , come illustrato nell'esempio seguente:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
I tipi di codifica attualmente definiti sono:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] lpszStructType
Puntatore a un OID che definisce il tipo di struttura. Se la parola ad ordine elevato del parametro lpszStructType è zero, la parola a basso ordine specifica l'identificatore intero per il tipo della struttura specificata. In caso contrario, questo parametro è un puntatore lungo a una stringa con terminazione null.
Per altre informazioni sulle stringhe di identificatore di oggetto, le costanti predefinite e le strutture corrispondenti, vedere Costanti per CryptEncodeObject e CryptDecodeObject.
[in] pvStructInfo
Puntatore alla struttura da codificare. La struttura deve essere di un tipo specificato da lpszStructType.
[out] pbEncoded
Puntatore a un buffer per ricevere la struttura codificata. Quando il buffer specificato non è abbastanza grande per ricevere la struttura decodificata, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile a cui punta pcbEncoded.
Questo parametro può essere NULL per recuperare le dimensioni di queste informazioni ai fini dell'allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.
[in, out] pcbEncoded
Puntatore a una variabile DWORD contenente le dimensioni, in byte, del buffer a cui punta il parametro pbEncoded . Quando la funzione restituisce, il valore DWORD contiene il numero di byte codificati allocati archiviati 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. Alcuni codici di errore possibili sono elencati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Errore durante la codifica. |
|
Impossibile trovare una funzione di codifica per l'oggetto dwCertEncodingType specificato e lpszStructType. |
|
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. |
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.
Commenti
Quando si codifica un oggetto crittografico usando la funzione CryptEncodeObjectEx preferita, è incluso il carattere NULL terminante. Quando si decodifica, usando la funzione CryptDecodeObjectEx preferita, il carattere NULL terminante non viene mantenuto.
Esempio
Per un esempio che usa questa funzione, vedere Esempio di programma C: Creazione di una richiesta di certificato e programma C di esempio: codifica ASN.1 e decodifica.
Requisiti
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 |