SGX本地证明样本在模拟器中返回0x3002

时间:2018-09-24 14:57:12

标签: intel sgx

按照我的指示,我无法终生使LocalAttestation示例在全新的Linux安装上正常运行。鉴于这是在仿真模式下构建的,我会认为没有其他依赖项吗?

我修改了演示以提供额外的输出,此行返回3002 SGX_ERROR_INVALID_ATTRIBUTE:

printf("creating enclave 1\n");
    ret = sgx_create_enclave(ENCLAVE1_PATH, SGX_DEBUG_FLAG, &launch_token, &launch_token_updated, &e1_enclave_id, NULL);
    if (ret != SGX_SUCCESS) {
        printf("Failed. Return value is: %X\n", ret);
                return ret;
    }

这是来自Linux SDK https://github.com/intel/linux-sgx的示例,并且英特尔的函数文档https://software.intel.com/en-us/sgx-sdk-dev-reference-sgx-create-enclave

中甚至没有提到此错误。

任何帮助将不胜感激!

-亨利

2 个答案:

答案 0 :(得分:0)

结果证明这是示例代码的问题。通过初始化清零的launch_token,一切都会按预期进行:

sgx_launch_token_t launch_token = {0};

答案 1 :(得分:0)

ret =sgx_create_enclave(_T(ENCLAVE_PATH),1,&launch_token,&launch_token_update,&enclave_id, NULL);
            if(ret !=SGX_SUCCESS)
            {
                printf("Failed to create enclave");
            }
            printf("Successfully create enclave.");
            printf("\nEnclaveID %llx", enclave_id);