Condividi tramite


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
CMSG_BARE_CONTENT_FLAG
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.
CMSG_DETACHED_FLAG
Indica che sono stati forniti dati scollegati per le chiamate successive a CryptMsgUpdate.
CMSG_CONTENTS_OCTETS_FLAG
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.
CMSG_CMS_ENCAPSULATED_CONTENT_FLAG
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
CMSG_DATA
Stringa ottetto (BYTE).
CMSG_SIGNED

CMSG_SIGNED_ENCODE_INFO

CMSG_ENVELOPED

CMSG_ENVELOPED_ENCODE_INFO

CMSG_SIGNED_AND_ENVELOPED
Non implementato.
CMSG_HASHED

CMSG_HASHED_ENCODE_INFO

CMSG_ENCRYPTED
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
Un utente può definire un nuovo utilizzo del contenuto interno . L'utente deve assicurarsi che il mittente e il destinatario del messaggio accettino la semantica associata all'identificatore dell'oggetto.

[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
CRYPT_E_INVALID_MSG_TYPE
Tipo di messaggio non valido.
CRYPT_E_UNKNOWN_ALGO
L'algoritmo crittografico è sconosciuto.
E_INVALIDARG
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

Vedi anche

CryptMsgOpenToEncode

Funzioni di messaggio di basso livello

Funzioni di messaggio semplificate