Função CryptMsgCalculateEncodedLength (wincrypt.h)
A função CryptMsgCalculateEncodedLength calcula o número máximo de bytes necessários para uma mensagem criptográfica codificada, dado o tipo de mensagem, os parâmetros de codificação e o comprimento total dos dados a serem codificados. Observe que o resultado sempre será maior ou igual ao número real de bytes necessários.
Sintaxe
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 o tipo de codificação usado. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
Os tipos de codificação definidos no momento são:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
Os sinalizadores definidos atualmente são mostrados na tabela a seguir.
Valor | Significado |
---|---|
|
Indica que a saída transmitida não terá um wrapper ContentInfo externo (conforme definido pelo PKCS nº 7). Isso o torna adequado para ser transmitido para uma mensagem delimitada. |
|
Indica que há dados desanexados sendo fornecidos para as chamadas subsequentes para CryptMsgUpdate. |
|
Usado para calcular o tamanho de uma codificação DER de uma mensagem a ser aninhada dentro de uma mensagem em envelope. Isso é particularmente útil quando o streaming está sendo executado. |
|
O conteúdo interno do tipo não Data é encapsulado em uma CADEIA DE CARACTERES OCTET. Esse sinalizador é aplicável a mensagens assinadas e envelopes. |
[in] dwMsgType
Os tipos de mensagem definidos atualmente são mostrados na tabela a seguir.
Valor | Significado |
---|---|
|
Uma cadeia de caracteres de octeto (BYTE). |
|
|
|
|
|
Não implementado. |
|
|
|
Não implementado. |
[in] pvMsgEncodeInfo
Um ponteiro para os dados a serem codificados. O tipo de dados apontados depende do valor de dwMsgType. Para obter detalhes, consulte a tabela dwMsgType .
[in, optional] pszInnerContentObjID
Ao chamar CryptMsgCalculateEncodedLength com os dados fornecidos para CryptMsgUpdate já codificados, o identificador de objeto apropriado é passado em pszInnerContentObjID. Se pszInnerContentObjID for NULL, o tipo de conteúdo interno será considerado não ter sido codificado anteriormente e será codificado como uma cadeia de caracteres de octeto e dado o tipo CMSG_DATA.
Quando o streaming está sendo usado, pszInnerContentObjID deve ser NULL ou szOID_RSA_data.
Os seguintes identificadores de objeto de algoritmo são comumente usados:
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
O tamanho, em bytes, do conteúdo.
Valor retornado
Retorna o comprimento necessário para uma mensagem criptográfica codificada. Esse comprimento pode não ter o comprimento exato, mas não será menor que o comprimento necessário. Zero será retornado se a função falhar.
Para recuperar informações de erro estendidas, use a função GetLastError . A tabela a seguir lista os códigos de erro mais comumente retornados.
Código de retorno | Descrição |
---|---|
|
O tipo de mensagem não é válido. |
|
O algoritmo criptográfico é desconhecido. |
|
Um ou mais argumentos não são válidos. |
Requisitos
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Crypt32.lib |
DLL | Crypt32.dll |