Funzione CryptMsgCalculateEncodedLength (wincrypt.h)
La funzione CryptMsgCalculateEncodedLength calcola il numero massimo di byte necessari per un messaggio crittografico codificato in base al tipo di messaggio, ai parametri di codifica e alla lunghezza totale dei dati da codificare. Si noti che il risultato sarà sempre maggiore o uguale al numero effettivo di byte necessari.
Sintassi
DWORD CryptMsgCalculateEncodedLength(
[in] DWORD dwMsgEncodingType,
[in] DWORD dwFlags,
[in] DWORD dwMsgType,
[in] void const *pvMsgEncodeInfo,
[in, optional] LPSTR pszInnerContentObjID,
[in] DWORD cbData
);
Parametri
[in] dwMsgEncodingType
Specifica il tipo di codifica usato. È sempre accettabile specificare sia i tipi di codifica del certificato che dei messaggi combinandoli con un'operazione bit per bit or , come illustrato nell'esempio seguente:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
I tipi di codifica attualmente definiti sono:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
I flag attualmente definiti sono visualizzati nella tabella seguente.
Valore | Significato |
---|---|
|
Indica che l'output trasmesso non avrà un wrapper ContentInfo esterno (come definito da PKCS #7). In questo modo è adatto per essere trasmesso in un messaggio racchiuso. |
|
Indica che sono stati forniti dati scollegati per le chiamate successive a CryptMsgUpdate. |
|
Usato per calcolare le dimensioni di una codifica DER di un messaggio da annidare all'interno di un messaggio busto. Ciò è particolarmente utile quando lo streaming viene eseguito. |
|
Il contenuto interno del tipo non dati viene incapsulato all'interno di una STRINGA OCTET. Questo flag è applicabile sia per i messaggi firmati che con busta. |
[in] dwMsgType
I tipi di messaggi attualmente definiti sono visualizzati nella tabella seguente.
Valore | Significato |
---|---|
|
Stringa ottetto (BYTE). |
|
|
|
|
|
Non implementato. |
|
|
|
Non implementato. |
[in] pvMsgEncodeInfo
Puntatore ai dati da codificare. Il tipo di dati a cui fa riferimento dipende dal valore dwMsgType. Per informazioni dettagliate, vedere la tabella dwMsgType .
[in, optional] pszInnerContentObjID
Quando si chiama CryptMsgCalculateEncodedLength con i dati forniti a CryptMsgUpdate già codificati, l'identificatore dell'oggetto appropriato viene passato in pszInnerContentObjID. Se pszInnerContentObjID è NULL, si presuppone che il tipo di contenuto interno non sia stato codificato in precedenza e sia codificato come stringa ottet e dato il tipo CMSG_DATA.
Quando lo streaming viene usato, pszInnerContentObjID deve essere NULL o szOID_RSA_data.
Gli identificatori degli oggetti dell'algoritmo seguenti vengono comunemente usati:
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
Dimensioni, in byte, del contenuto.
Valore restituito
Restituisce la lunghezza necessaria per un messaggio crittografico codificato. Questa lunghezza potrebbe non essere la lunghezza esatta, ma non sarà minore della lunghezza necessaria. Zero viene restituito se la funzione ha esito negativo.
Per recuperare informazioni sull'errore estese, usare la funzione GetLastError . Nella tabella seguente sono elencati i codici di errore più comunemente restituiti.
Codice restituito | Descrizione |
---|---|
|
Tipo di messaggio non valido. |
|
L'algoritmo crittografico è sconosciuto. |
|
Uno o più argomenti non sono validi. |
Requisiti
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | wincrypt.h |
Libreria | Crypt32.lib |
DLL | Crypt32.dll |