Función CryptEncodeObject (wincrypt.h)

La función CryptEncodeObject codifica una estructura del tipo indicado por el valor del parámetro lpszStructType . El uso de CryptEncodeObjectEx se recomienda como UNA API que realice la misma función con importantes mejoras de rendimiento.

Sintaxis

BOOL CryptEncodeObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      LPCSTR     lpszStructType,
  [in]      const void *pvStructInfo,
  [out]     BYTE       *pbEncoded,
  [in, out] DWORD      *pcbEncoded
);

Parámetros

[in] dwCertEncodingType

Tipo de codificación usada. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes al combinarlos con una operación OR bit a bit, como se muestra en el ejemplo siguiente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Los tipos de codificación definidos actualmente son:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING
Nota Se requiere un certificado o un tipo de codificación de mensajes . X509_ASN_ENCODING es el valor predeterminado. Si se indica ese tipo, se usa. De lo contrario, si se indica el tipo PKCS7_ASN_ENCODING, se usa.
 

[in] lpszStructType

Puntero a un OID que define el tipo de estructura. Si la palabra de orden alto del parámetro lpszStructType es cero, la palabra de orden bajo especifica el identificador entero para el tipo de la estructura especificada. De lo contrario, este parámetro es un puntero largo a una cadena terminada en null.

Para obtener más información sobre las cadenas de identificador de objeto, sus constantes predefinidas y las estructuras correspondientes, vea Constantes para CryptEncodeObject y CryptDecodeObject.

[in] pvStructInfo

Puntero a la estructura que se va a codificar. La estructura debe ser de un tipo especificado por lpszStructType.

[out] pbEncoded

Puntero a un búfer para recibir la estructura codificada. Cuando el búfer especificado no es lo suficientemente grande como para recibir la estructura descodificada, la función establece el código ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbEncoded.

Este parámetro puede ser NULL para recuperar el tamaño de esta información con fines de asignación de memoria. Para obtener más información, vea Recuperar datos de longitud desconocida.

[in, out] pcbEncoded

Puntero a una variable DWORD que contiene el tamaño, en bytes, del búfer al que apunta el parámetro pbEncoded . Cuando la función devuelve, el valor DWORD contiene el número de bytes codificados asignados almacenados en el búfer.

Nota Al procesar los datos devueltos en el búfer, las aplicaciones deben usar el tamaño real de los datos devueltos. El tamaño real puede ser ligeramente menor que el tamaño del búfer especificado en la entrada. (En la entrada, los tamaños del búfer suelen especificarse lo suficientemente grandes como para asegurarse de que los datos de salida más grandes posibles se ajusten al búfer). En la salida, la variable a la que apunta este parámetro se actualiza para reflejar el tamaño real de los datos copiados en el búfer.
 

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero (TRUE).

Si se produce un error en la función, el valor devuelto es cero (FALSE). Para obtener información de error extendida, llame a GetLastError. Algunos códigos de error posibles se enumeran en la tabla siguiente.

Código devuelto Descripción
CRYPT_E_BAD_ENCODE
Error al codificar.
ERROR_FILE_NOT_FOUND
No se encontró una función de codificación para dwCertEncodingType y lpszStructType especificados.
ERROR_MORE_DATA
Si el búfer especificado por el parámetro pbEncoded no es lo suficientemente grande como para contener los datos devueltos, la función establece el código de ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbEncoded.
 

Si se produce un error en la función, GetLastError puede devolver un error de codificación y descodificación de sintaxis abstracta Uno (ASN.1). Para obtener información sobre estos errores, vea Valores devueltos de codificación/descodificación de ASN.1.

Comentarios

Al codificar un objeto criptográfico mediante la función CryptEncodeObjectEx preferida, se incluye el carácter NULL de terminación. Al descodificar, con la función CryptDecodeObjectEx preferida, no se conserva el carácter NULL de terminación.

Ejemplos

Para obtener un ejemplo que usa esta función, vea Programa C de ejemplo: Realizar una solicitud de certificado y un programa C de ejemplo: Codificación y descodificación de ASN.1.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CryptDecodeObject

CryptEncodeObjectEx

Funciones de codificación y descodificación de objetos