Fonction CryptMsgCalculateEncodedLength (wincrypt.h)
La fonction CryptMsgCalculateEncodedLength calcule le nombre maximal d’octets nécessaires pour un message de chiffrement encodé en fonction du type de message, des paramètres d’encodage et de la longueur totale des données à encoder. Notez que le résultat sera toujours supérieur ou égal au nombre réel d’octets nécessaires.
Syntaxe
DWORD CryptMsgCalculateEncodedLength(
[in] DWORD dwMsgEncodingType,
[in] DWORD dwFlags,
[in] DWORD dwMsgType,
[in] void const *pvMsgEncodeInfo,
[in, optional] LPSTR pszInnerContentObjID,
[in] DWORD cbData
);
Paramètres
[in] dwMsgEncodingType
Spécifie le type d’encodage utilisé. Il est toujours acceptable de spécifier les types d’encodage de certificat et de message en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
Les types d’encodage actuellement définis sont les suivants :
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
Les indicateurs actuellement définis sont indiqués dans le tableau suivant.
Valeur | Signification |
---|---|
|
Indique que la sortie diffusée en continu n’aura pas de wrapper ContentInfo externe (tel que défini par PKCS #7). Cela le rend approprié pour être diffusé en continu dans un message englobant. |
|
Indique que des données détachées sont fournies pour les appels suivants à CryptMsgUpdate. |
|
Utilisé pour calculer la taille d’un encodage DER d’un message à imbriquer à l’intérieur d’un message enveloppe. Cela est particulièrement utile lorsque la diffusion en continu est effectuée. |
|
Le contenu interne non de type de données est encapsulé dans une chaîne OCTET. Cet indicateur s’applique aux messages signés et enveloppes. |
[in] dwMsgType
Les types de messages actuellement définis sont indiqués dans le tableau suivant.
Valeur | Signification |
---|---|
|
Chaîne d’octet (BYTE). |
|
|
|
|
|
Non implémenté. |
|
|
|
Non implémenté. |
[in] pvMsgEncodeInfo
Pointeur vers les données à encoder. Le type de données pointées vers dépend de la valeur de dwMsgType. Pour plus d’informations, consultez la table dwMsgType .
[in, optional] pszInnerContentObjID
Lorsque vous appelez CryptMsgCalculateEncodedLength avec des données fournies à CryptMsgUpdate déjà encodées, l’identificateur d’objet approprié est passé dans pszInnerContentObjID. Si pszInnerContentObjID a la valeur NULL, le type de contenu interne est supposé ne pas avoir été encodé précédemment et est encodé en tant que chaîne d’octets et donné le type CMSG_DATA.
Lorsque la diffusion en continu est utilisée, pszInnerContentObjID doit être NULL ou szOID_RSA_data.
Les identificateurs d’objet d’algorithme suivants sont couramment utilisés :
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
Taille, en octets, du contenu.
Valeur retournée
Retourne la longueur requise pour un message de chiffrement encodé. Cette longueur n’est peut-être pas la longueur exacte, mais elle ne sera pas inférieure à la longueur requise. Zéro est retourné si la fonction échoue.
Pour récupérer des informations d’erreur étendues, utilisez la fonction GetLastError . Le tableau suivant répertorie les codes d’erreur les plus couramment retournés.
Code de retour | Description |
---|---|
|
Le type de message n'est pas valide. |
|
L’algorithme de chiffrement est inconnu. |
|
Un ou plusieurs arguments ne sont pas valides. |
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | wincrypt.h |
Bibliothèque | Crypt32.lib |
DLL | Crypt32.dll |