Funzione EnclaveGetAttestationReport (winenclaveapi.h)
Ottiene un report di attestazione dell'enclave che descrive l'enclave corrente ed è firmato dall'autorità responsabile del tipo dell'enclave.
Sintassi
HRESULT EnclaveGetAttestationReport(
[in, optional] const UINT8 [ENCLAVE_REPORT_DATA_LENGTH] EnclaveData,
[out] PVOID Report,
[in] UINT32 BufferSize,
[out] UINT32 *OutputSize
);
Parametri
[in, optional] EnclaveData
Puntatore a un buffer di dati a 64 byte che l'enclave vuole inserire nel report firmato. Ad esempio, questo buffer potrebbe includere un nonce a 256 bit fornito dalla relying party, seguito da un hash SHA-256 di dati aggiuntivi che l'enclave vuole trasmettere, ad esempio una chiave pubblica che corrisponde a una chiave privata proprietaria dell'enclave. Se questo parametro è NULL
, il campo corrispondente del report viene riempito con zere.
[out] Report
Puntatore a un buffer in cui deve essere posizionato il report. Questo report può essere archiviato all'interno dell'intervallo di indirizzi dell'enclave o all'interno dello spazio indirizzi del processo host. Specificare NULL
per indicare che devono essere calcolate solo le dimensioni del buffer necessario per l'output e non il report stesso.
[in] BufferSize
Dimensione del buffer a cui punta il parametro Report . Se Report è NULL
, BufferSize deve essere zero. Se report non NULL
è e se le dimensioni del report sono maggiori di questo valore, viene restituito un errore.
[out] OutputSize
Puntatore a una variabile che riceve le dimensioni del report.
Valore restituito
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
EnclaveGetAttestationReport deve essere chiamato dall'interno di un'enclave.
EnclaveGetAttestationReport non è attualmente supportato per le enclave con un tipo di ENCLAVE_TYPE_SGX. Per le enclave VBS, il report che EnclaveGetAttestationReport ottiene la firma usando una chiave specifica di VBS.
Il report di attestazione dell'enclave contiene l'identità di tutto il codice caricato nell'enclave, nonché i criteri che controllano la modalità di esecuzione dell'enclave, ad esempio se l'enclave è in esecuzione con l'accesso al debugger attivo. Il report include anche una piccola quantità di informazioni che l'enclave ha generato per l'uso in un protocollo di scambio di chiavi.
Il report generato da EnclaveGetAttestationReport è costituito dagli elementi seguenti:
- Struttura VBS_ENCLAVE_REPORT_PKG_HEADER
- Istruzione firmata costituita dagli elementi seguenti:
- Struttura VBS_ENCLAVE_REPORT
- Zero o più blocchi di dati variabili costituiti dagli elementi seguenti:
- Struttura VBS_ENCLAVE_REPORT_VARDATA_HEADER
- Dati descritti dalla struttura VBS_ENCLAVE_REPORT_VARDATA_HEADER
- Firma
Il report di attestazione dell'enclave fornisce una prova dell'esecuzione di codice specifico con un'enclave. Se un'entità di convalida ottiene anche la prova che il sistema host è in esecuzione con la sicurezza basata su vbs attivato, tale entità può usare tale prova insieme al report di attestazione dell'enclave per verificare che sia stata caricata un'enclave specifica, popolata con codice specifico.
Requisiti
Client minimo supportato | Windows 10 versione 1709 [solo app desktop] |
Server minimo supportato | Windows Server 2016 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winenclaveapi.h |
Libreria | Vertdll.lib |
DLL | Vertdll.dll |
Vedi anche
EnclaveVerifyAttestationReport