Partager via


Fonction EnclaveGetAttestationReport (winenclaveapi.h)

Obtient un rapport d’attestation d’enclave qui décrit l’enclave actuelle et est signé par l’autorité responsable du type de l’enclave.

Syntaxe

HRESULT EnclaveGetAttestationReport(
  [in, optional] const UINT8 [ENCLAVE_REPORT_DATA_LENGTH] EnclaveData,
  [out]          PVOID                                    Report,
  [in]           UINT32                                   BufferSize,
  [out]          UINT32                                   *OutputSize
);

Paramètres

[in, optional] EnclaveData

Pointeur vers une mémoire tampon de 64 octets de données que l’enclave souhaite insérer dans son rapport signé. Par exemple, cette mémoire tampon peut inclure un nonce 256 bits fourni par la partie de confiance, suivi d’un hachage SHA-256 de données supplémentaires que l’enclave souhaite transmettre, par exemple une clé publique qui correspond à une clé privée appartenant à l’enclave. Si ce paramètre est NULL, le champ correspondant du rapport est rempli avec des zéros.

[out] Report

Pointeur vers une mémoire tampon dans laquelle le rapport doit être placé. Ce rapport peut être stocké dans la plage d’adresses de l’enclave ou dans l’espace d’adressage du processus hôte. Spécifiez NULL pour indiquer que seule la taille de la mémoire tampon requise pour la sortie doit être calculée, et non le rapport lui-même.

[in] BufferSize

Taille de la mémoire tampon vers laquelle pointe le paramètre Report . Si Report a la valeur NULL, BufferSize doit être égal à zéro. Si Report n’a pas NULLla valeur et si la taille du rapport est supérieure à cette valeur, une erreur est retournée.

[out] OutputSize

Pointeur vers une variable qui reçoit la taille du rapport.

Valeur retournée

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

EnclaveGetAttestationReport doit être appelé à partir d’une enclave.

EnclaveGetAttestationReport n’est actuellement pas pris en charge pour les enclaves avec un type de ENCLAVE_TYPE_SGX. Pour les enclaves VBS, le rapport que EnclaveGetAttestationReport obtient est signé à l’aide d’une clé propre à VBS.

Le rapport d’attestation d’enclave contient l’identité de tout le code chargé dans l’enclave, ainsi que des stratégies qui contrôlent l’exécution de l’enclave, par exemple si l’enclave s’exécute avec l’accès au débogueur actif. Le rapport inclut également une petite quantité d’informations que l’enclave générée pour utiliser dans un protocole d’échange de clés.

Le rapport généré par EnclaveGetAttestationReport se compose des éléments suivants :

Le rapport d’attestation d’enclave fournit la preuve que du code spécifique s’exécute avec une enclave. Si une entité de validation obtient également la preuve que le système hôte s’exécute avec VBS activé, cette entité peut utiliser cette preuve conjointement avec le rapport d’attestation d’enclave pour vérifier qu’une enclave spécifique, remplie avec du code spécifique, a été chargée.

Configuration requise

   
Client minimal pris en charge Windows 10, version 1709 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
Plateforme cible Windows
En-tête winenclaveapi.h
Bibliothèque Vertdll.lib
DLL Vertdll.dll

Voir aussi

Fonctions d’enclave

EnclaveVerifyAttestationReport

VBS_ENCLAVE_REPORT

VBS_ENCLAVE_REPORT_PKG_HEADER

VBS_ENCLAVE_REPORT_VARDATA_HEADER

API Vertdll disponibles dans les enclaves VBS