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 NULL
la 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 :
- Structure VBS_ENCLAVE_REPORT_PKG_HEADER
- Instruction signée qui se compose des éléments suivants :
- Structure VBS_ENCLAVE_REPORT
- Zéro ou plusieurs blocs de données variables qui se composent des éléments suivants :
- Structure VBS_ENCLAVE_REPORT_VARDATA_HEADER
- Données décrites par la structure VBS_ENCLAVE_REPORT_VARDATA_HEADER
- Une signature
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
EnclaveVerifyAttestationReport