Condividi tramite


PFN_CMSG_EXPORT_KEY_AGREE funzione di callback (wincrypt.h)

La funzione di callback PFN_CMSG_EXPORT_KEY_AGREE crittografa ed esporta la chiave di crittografia del contenuto per un destinatario del contratto di chiave di un messaggio in busto. PFN_CMSG_EXPORT_KEY_AGREE può essere installato usando un CryptoAPIidentificatore di oggetto (OID). Questa funzione viene chiamata dalla funzione CryptMsgOpenToEncode quando il relativo parametro dwMsgType è impostato su CMSG_ENVELOPED.

Sintassi

PFN_CMSG_EXPORT_KEY_AGREE PfnCmsgExportKeyAgree;

BOOL PfnCmsgExportKeyAgree(
  [in]      PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
  [in]      PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,
  [in, out] PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,
  [in]      DWORD dwFlags,
            void *pvReserved
)
{...}

Parametri

[in] pContentEncryptInfo

Puntatore a una struttura CMSG_CONTENT_ENCRYPT_INFO che contiene la chiave di crittografia del contenuto.

[in] pKeyAgreeEncodeInfo

Puntatore a una struttura CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO che specifica la chiave usata per crittografare la chiave di crittografia del contenuto.

[in, out] pKeyAgreeEncryptInfo

Puntatore a una struttura CMSG_KEY_AGREE_ENCRYPT_INFO che contiene la chiave di crittografia del contenuto crittografato.

[in] dwFlags

Questo valore non viene utilizzato. Impostarlo su zero.

pvReserved

Questo parametro è riservato e deve essere NULL.

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 sugli errori estesi, chiamare GetLastError.

Osservazioni

Per ogni chiave del destinatario, la funzione PFN_CMSG_EXPORT_KEY_AGREE deve aggiornare il membro encryptedKey della struttura CMSG_KEY_AGREE_KEY_ENCRYPT_INFO a cui fa riferimento il rgpKeyAgreeKeyEncryptInfo membro della struttura CMSG_KEY_AGREE_ENCRYPT_INFO a cui punta il parametro pKeyAgreeEncryptInfo. Questa funzione deve utilizzare il pfnAlloc e membri pfnFree della struttura CMSG_CONTENT_ENCRYPT_INFO a cui punta il parametro pContentEncryptInfo per gestire la memoria per tutti i valori aggiornati.

Se, al momento dell'ingresso, il membro dwEncryptFlags della struttura CMSG_CONTENT_ENCRYPT_INFO a cui punta il membro pContentEncryptInfo è impostato su CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG, il membro temporaneo PublicKey della struttura CERT_PUBLIC_KEY_INFO a cui fa riferimento il membro OriginatorPublicKeyInfo della struttura CMSG_KEY_AGREE_ENCRYPT_INFO a cui punta il PKeyAgreeEncryptInfo parametro deve essere riempito con zeri per ottenere sempre la stessa lunghezza massima codificata.

Nota La lunghezza della chiave pubblica Y temporanea generata può variare a seconda del numero di bit zero iniziali.

 

È possibile usare funzioni di supporto OID per distribuire questa funzione di callback. Wincrypt.h definisce le costanti seguenti a questo scopo.

È necessario definire diverse funzioni di callback per chiavi CAPI1 e API di crittografia: chiavi CNG (Next Generation). Entrambe le funzioni hanno la stessa firma, ma usano OID diversi. La funzione chiamata dipende dal valore del membro fCNG della struttura CMSG_CONTENT_ENCRYPT_INFO a cui punta il parametro pContentEncryptInfo. Nella tabella seguente viene illustrata la relazione tra la funzione di callback e il valore del membro fCNG .

valore fCNG Costante Definizione
false CMSG_OID_EXPORT_KEY_AGREE_FUNC o CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree"
TRUE CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC "CryptMsgDllCNGExportKeyAgree"

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
piattaforma di destinazione Finestre
intestazione wincrypt.h