Condividi tramite


Funzione CryptMsgEncodeAndSignCTL (wincrypt.h)

La funzione CryptMsgEncodeAndSignCTL codifica un CTL e crea un messaggio firmato contenente il CTL codificato.

Questa funzione codifica prima il CTL a cui fa riferimento pCtlInfo e quindi chiama CryptMsgSignCTL per firmare il messaggio codificato.

Sintassi

BOOL CryptMsgEncodeAndSignCTL(
  [in]      DWORD                    dwMsgEncodingType,
  [in]      PCTL_INFO                pCtlInfo,
  [in]      PCMSG_SIGNED_ENCODE_INFO pSignInfo,
  [in]      DWORD                    dwFlags,
  [out]     BYTE                     *pbEncoded,
  [in, out] DWORD                    *pcbEncoded
);

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] pCtlInfo

Puntatore alla struttura CTL_INFO contenente il CTL da codificare e firmare.

[in] pSignInfo

Puntatore a una struttura CMSG_SIGNED_ENCODE_INFO che contiene una matrice di strutture CMSG_SIGNER_ENCODE_INFO .

Il messaggio può essere codificato senza segno se il membro cbSize della struttura è impostato sulla dimensione della struttura e tutti gli altri membri sono impostati su zero.

[in] dwFlags

CMSG_ENCODE_SORTED_CTL_FLAG è impostato se le voci CTL devono essere ordinate prima della codifica. Questo flag viene impostato se verranno chiamate le funzioni CertFindSubjectInSortedCTL o CertEnumSubjectInSortedCTL .

CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG è impostato se CMSG_ENCODE_SORTED_CTL_FLAG è impostato e l'identificatore per trustedSubjects è un hash, ad esempio MD5 o SHA1.

Se CMS_PKCS7 è definito, è possibile impostare dwFlags su CMSG_CMS_ENCAPSULATED_CTL_FLAG per codificare un messaggio V3 con firma con estensione CMS compatibile con V3.

[out] pbEncoded

Puntatore a un buffer che riceve il messaggio codificato e firmato creato.

Questo parametro può essere NULL per impostare le dimensioni di queste informazioni per scopi di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.

[in, out] pcbEncoded

Puntatore a un DWORD che specifica le dimensioni, in byte, del buffer pbEncoded . Quando la funzione restituisce, la DWORD contiene il numero di byte archiviati o da archiviare nel buffer.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

Se la funzione ha esito negativo, il valore restituito è zero (FALSE). Per informazioni dettagliate sull'errore, chiamare GetLastError. Gli errori possono essere propagati dalle chiamate a CryptMsgOpenToEncode e CryptMsgUpdate.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CMSG_SIGNED_ENCODE_INFO

CTL_INFO

CertEnumSubjectInSortedCTL

CertFindSubjectInSortedCTL

CryptMsgOpenToEncode

CryptMsgSignCTL

Funzioni di verifica tramite elenchi di controllo di accesso