Función CryptSignAndEncodeCertificate (wincrypt.h)
La función CryptSignAndEncodeCertificate codifica y firma un certificado, una lista de revocación de certificados (CRL), una lista de confianza de certificados (CTL) o una solicitud de certificado.
Esta función realiza las siguientes operaciones:
- Llama a CryptEncodeObject mediante lpszStructType para codificar la información "para firmar".
- Llama a CryptSignCertificate para firmar esta información codificada.
- Llama de nuevo a CryptEncodeObject , con lpszStructType establecido en X509_CERT, para codificar aún más la información firmada y codificada resultante.
Sintaxis
BOOL CryptSignAndEncodeCertificate(
[in] BCRYPT_KEY_HANDLE hBCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const void *pvStructInfo,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] const void *pvHashAuxInfo,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
Parámetros
[in] hBCryptKey
Identificador del proveedor de servicios criptográficos (CSP) para realizar la firma. Este identificador es un identificador HCRYPTPROV que se ha creado mediante la función CryptAcquireContext o un identificador de NCRYPT_KEY_HANDLE creado mediante la función NCryptOpenKey . Las nuevas aplicaciones siempre deben pasar un identificador de NCRYPT_KEY_HANDLE de un CSP de CNG.
[in] dwKeySpec
Identifica la clave privada que se va a usar desde el contenedor del proveedor. Debe ser uno de los siguientes valores. Este parámetro se omite si se pasa una clave CNG en el parámetro hCryptProvOrNCryptKey .
Valor | Significado |
---|---|
|
Use la clave de intercambio de claves. |
|
Use la clave de firma digital. |
[in] dwCertEncodingType
Especifica el tipo de codificación usado. Puede ser el siguiente valor.
Valor | Significado |
---|---|
|
Especifica la codificación de certificados X.509 . |
[in] lpszStructType
Puntero a una cadena ANSI terminada en null que contiene el tipo de datos que se van a codificar y firmar. Las siguientes constantes lpszStructType predefinidas se usan con operaciones de codificación.
Valor | Significado |
---|---|
|
pvStructInfo es la dirección de una estructura CRL_INFO . |
|
pvStructInfo es la dirección de una estructura de CERT_REQUEST_INFO . |
|
pvStructInfo es la dirección de una estructura de CERT_INFO . |
|
pvStructInfo es la dirección de una estructura CERT_KEYGEN_REQUEST_INFO . |
[in] pvStructInfo
Dirección de una estructura que contiene los datos que se van a firmar y codificar. El formato de esta estructura viene determinado por el parámetro lpszStructType .
[in] pSignatureAlgorithm
Puntero a una estructura de CRYPT_ALGORITHM_IDENTIFIER que contiene el identificador de objeto (OID) del algoritmo de firma y los parámetros adicionales necesarios. Esta función usa los siguientes identificadores de identificadores de algoritmo:
- szOID_RSA_MD5RSA
- szOID_RSA_SHA1RSA
- szOID_X957_SHA1DSA
[in] pvHashAuxInfo
Reservado. Debe ser NULL.
[out] pbEncoded
Puntero a un búfer para recibir la salida firmada y codificada.
Este parámetro puede ser NULL para establecer 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 un DWORD que contiene el tamaño, en bytes, del búfer al que apunta el parámetro pbEncoded . Cuando la función devuelve, DWORD contiene el número de bytes almacenados o que se almacenarán 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.
Código devuelto | Descripción |
---|---|
|
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 ERROR_MORE_DATA y almacena el tamaño de búfer necesario, en bytes, en la variable a la que apunta pcbEncoded. |
|
Tipo de codificación de certificado no válido. Actualmente solo se admite X509_ASN_ENCODING. |
|
El OID del algoritmo de firma no se asigna a un algoritmo hash conocido o admitido. |
|
Error al codificar o descodificar. La causa más probable de este error es la inicialización incorrecta de los campos de la estructura a la que apunta pvStructInfo. |
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.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Library | Crypt32.lib |
Archivo DLL | Crypt32.dll |