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
[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.
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 |
---|---|
|
Error al codificar. |
|
No se encontró una función de codificación para dwCertEncodingType y lpszStructType especificados. |
|
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 |