Condividi tramite


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
Nota È necessario un certificato o un tipo di codifica dei messaggi . X509_ASN_ENCODING è il valore predefinito. Se tale tipo è indicato, viene usato. In caso contrario, se il tipo di PKCS7_ASN_ENCODING è indicato, viene usato.
 

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

Nota Quando si elaborano i dati restituiti nel buffer, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori rispetto alle dimensioni del buffer specificato nell'input. In base all'input, le dimensioni del buffer vengono in genere specificate abbastanza grandi per garantire che i dati di output più grandi siano adatti al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata per riflettere le dimensioni effettive dei dati copiati 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
CRYPT_E_BAD_ENCODE
Errore durante la codifica.
ERROR_FILE_NOT_FOUND
Impossibile trovare una funzione di codifica per l'oggetto dwCertEncodingType specificato e lpszStructType.
ERROR_MORE_DATA
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

Vedi anche

CryptDecodeObject

CryptEncodeObjectEx

Funzioni di codifica e decodifica degli oggetti