EnclaveSealData 함수(winenclaveapi.h)
암호화되지 않은 데이터에서 암호화된 이진 큰 개체(Blob)를 생성합니다.
구문
HRESULT EnclaveSealData(
[in] const VOID *DataToEncrypt,
[in] UINT32 DataToEncryptSize,
[in] ENCLAVE_SEALING_IDENTITY_POLICY IdentityPolicy,
[in] UINT32 RuntimePolicy,
[out] PVOID ProtectedBlob,
[in] UINT32 BufferSize,
[out] UINT32 *ProtectedBlobSize
);
매개 변수
[in] DataToEncrypt
봉인하려는 데이터에 대한 포인터입니다. 이 데이터는 enclave의 주소 범위 내에서 또는 호스트 프로세스의 주소 범위 내에 저장할 수 있습니다.
[in] DataToEncryptSize
봉인하려는 데이터의 크기(바이트)입니다.
[in] IdentityPolicy
다른 Enclave가 Enclave에 대해 EnclaveSealData 를 호출하여 데이터의 봉인을 해제하는 Enclave와 어떻게 관련되어야 하는지를 지정하는 값입니다.
[in] RuntimePolicy
디버깅이 켜져 있는 상태로 실행되는 Enclave가 EnclaveSealData seal에 대한 이 호출의 데이터 봉인을 해제할 수 있는지 여부를 나타내는 값입니다.
값 | 의미 |
---|---|
ENCLAVE_RUNTIME_POLICY_ALLOW_FULL_DEBUG1 |
를 지정하면 디버깅이 켜져 있는 상태로 실행되는 Enclave가 데이터의 봉인을 해제할 수 있음을 나타냅니다. 지정하지 않으면 디버깅이 켜진 상태에서 실행되는 Enclave가 데이터 봉인을 해제할 수 없음을 나타냅니다. 이 플래그는 호출 enclave가 디버깅을 켜고 실행 중인 경우 자동으로 포함됩니다. |
ENCLAVE_RUNTIME_POLICY_ALLOW_DYNAMIC_DEBUG2 |
를 지정하면 동적 디버깅이 켜져 있는 상태로 실행되는 Enclave가 데이터의 봉인을 해제할 수 있음을 나타냅니다. 지정하지 않으면 동적 디버깅이 켜져 있는 Enclave가 데이터 봉인을 해제할 수 없음을 나타냅니다. 호출 enclave가 동적 디버깅을 켜고 실행 중인 경우 이 플래그가 자동으로 포함됩니다. |
[out] ProtectedBlob
봉인된 데이터를 배치해야 하는 버퍼에 대한 포인터입니다. 이 데이터는 enclave의 주소 범위 내에서 또는 호스트 프로세스의 주소 공간 내에 저장될 수 있습니다. 이 매개 변수가 NULL이면 보호된 Blob의 크기만 계산됩니다.
[in] BufferSize
ProtectedBlob 매개 변수가 가리키는 버퍼의 크기를 포함하는 변수에 대한 포인터입니다. ProtectedBlob이 이면 이 값은 NULL
0이어야 합니다. ProtectedBlob이 이 아니NULL
고 암호화된 데이터의 크기가 이 값보다 크면 오류가 발생합니다.
[out] ProtectedBlobSize
암호화된 Blob의 실제 크기를 수신하는 변수에 대한 포인터입니다.
반환 값
이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
EnclaveSealData 는 enclave 내에서 호출해야 하며 , enclave 형식이 ENCLAVE_TYPE_VBS enclave 내에서만 지원됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 1709 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2016 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winenclaveapi.h |
라이브러리 | Vertdll.lib |
DLL | Vertdll.dll |