Funzione CryptDecodeObject (wincrypt.h)
La funzione CryptDecodeObject decodifica una struttura del tipo indicato dal parametro lpszStructType . L'uso di CryptDecodeObjectEx è consigliato come API che esegue la stessa funzione con miglioramenti significativi delle prestazioni.
Sintassi
BOOL CryptDecodeObject(
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const BYTE *pbEncoded,
[in] DWORD cbEncoded,
[in] DWORD dwFlags,
[out] void *pvStructInfo,
[in, out] DWORD *pcbStructInfo
);
Parametri
[in] dwCertEncodingType
Tipo di codifica utilizzata. È sempre accettabile specificare sia il certificato che i tipi di codifica dei messaggi combinandoli con un'operazione OR bit per bit, 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 di ordine elevato del parametro lpszStructType è zero, la parola di ordine basso specifica l'identificatore integer 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, sulle costanti predefinite e sulle strutture corrispondenti, vedere Costanti per CryptEncodeObject e CryptDecodeObject.
[in] pbEncoded
Puntatore alla struttura codificata da decodificare.
[in] cbEncoded
Numero di byte a cui punta pbEncoded.
[in] dwFlags
Vengono definiti i flag seguenti. Possono essere combinati con un'operazione OR bit per bit.
[out] pvStructInfo
Puntatore a un buffer per ricevere la struttura decodificata. Quando il buffer specificato non è sufficientemente grande da 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 pcbStructInfo.
Questo parametro può essere NULL per recuperare le dimensioni di queste informazioni ai fini dell'allocazione della memoria. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.
[in, out] pcbStructInfo
Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pvStructInfo . Al termine della funzione, questo valore DWORD contiene le dimensioni dei dati decodificati copiati in pvStructInfo. Le dimensioni contenute nella variabile a cui punta pcbStructInfo possono indicare una dimensione maggiore della struttura decodificata, in quanto la struttura decodificata può includere puntatori ad altre strutture. Questa dimensione è la somma delle dimensioni necessarie per la struttura decodificata e altre strutture a cui punta.
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 alcuni codici di errore possibili.
Codice restituito | Descrizione |
---|---|
|
Errore durante la decodifica. |
|
Impossibile trovare una funzione di decodifica per l'oggetto dwCertEncodingType e lpszStructType specificato |
|
Se il buffer specificato dal parametro pvStructInfo non è sufficientemente grande da contenere i dati restituiti, la funzione imposta il codice ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie, in byte, nella variabile a cui punta pcbStructInfo. |
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
Quando si codifica un oggetto di crittografia usando la funzione CryptEncodeObjectEx preferita, viene incluso il carattere NULL di terminazione. Durante la decodifica, usando la funzione CryptDecodeObjectEx preferita, il carattere NULL di terminazione non viene mantenuto.
Esempio
Per un esempio che usa questa funzione, vedere Esempio di programma C: codifica e decodifica ASN.1.
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 |