Función CryptMsgCalculateEncodedLength (wincrypt.h)
La función CryptMsgCalculateEncodedLength calcula el número máximo de bytes necesarios para un mensaje criptográfico codificado dado el tipo de mensaje, los parámetros de codificación y la longitud total de los datos que se van a codificar. Tenga en cuenta que el resultado siempre será mayor o igual que el número real de bytes necesarios.
Sintaxis
DWORD CryptMsgCalculateEncodedLength(
[in] DWORD dwMsgEncodingType,
[in] DWORD dwFlags,
[in] DWORD dwMsgType,
[in] void const *pvMsgEncodeInfo,
[in, optional] LPSTR pszInnerContentObjID,
[in] DWORD cbData
);
Parámetros
[in] dwMsgEncodingType
Especifica el tipo de codificación usado. 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] dwFlags
Las marcas definidas actualmente se muestran en la tabla siguiente.
Valor | Significado |
---|---|
|
Indica que la salida transmitida no tendrá un contenedor ContentInfo externo (tal y como se define en PKCS #7). Esto hace que sea adecuado transmitirse a un mensaje envolvente. |
|
Indica que se proporcionan datos desasociados para las llamadas posteriores a CryptMsgUpdate. |
|
Se usa para calcular el tamaño de una codificación DER de un mensaje que se va a anidar dentro de un mensaje sobre. Esto es especialmente útil cuando se realiza el streaming. |
|
El contenido interno que no es de tipo de datos se encapsula dentro de una CADENA OCTET. Esta marca es aplicable para los mensajes firmados y sobres. |
[in] dwMsgType
Los tipos de mensaje definidos actualmente se muestran en la tabla siguiente.
Valor | Significado |
---|---|
|
Cadena de octeto (BYTE). |
|
|
|
|
|
Sin implementar. |
|
|
|
Sin implementar. |
[in] pvMsgEncodeInfo
Puntero a los datos que se van a codificar. El tipo de datos a los que se apunta depende del valor de dwMsgType. Para más información, consulte la tabla dwMsgType .
[in, optional] pszInnerContentObjID
Al llamar a CryptMsgCalculateEncodedLength con los datos proporcionados a CryptMsgUpdate ya codificados, el identificador de objeto adecuado se pasa en pszInnerContentObjID. Si pszInnerContentObjID es NULL, se supone que el tipo de contenido interno no se ha codificado previamente y se codifica como una cadena de octeto y se le asigna el tipo CMSG_DATA.
Cuando se usa streaming, pszInnerContentObjID debe ser NULL o szOID_RSA_data.
Normalmente se usan los siguientes identificadores de objeto de algoritmo:
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
Tamaño, en bytes, del contenido.
Valor devuelto
Devuelve la longitud necesaria para un mensaje criptográfico codificado. Esta longitud puede no ser la longitud exacta, pero no será menor que la longitud necesaria. Se devuelve cero si se produce un error en la función.
Para recuperar información de error extendida, use la función GetLastError . En la tabla siguiente se enumeran los códigos de error que se devuelven con más frecuencia.
Código devuelto | Descripción |
---|---|
|
Tipo de mensaje no válido. |
|
El algoritmo criptográfico es desconocido. |
|
Uno o varios argumentos no son válidos. |
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 |