sgx_ecc256_create_key_pair 失败
sgx_ecc256_create_key_pair fail
我编写了一个非常简单的测试来学习在 enclave 中使用椭圆曲线密码术。但是密钥创建方法失败 SGX_ERROR_UNEXPECTED.
这是我的领地:
#include "Enc_t.h"
#include "sgx_trts.h"
#include "sgx_tcrypto.h"
int Test(sgx_status_t *error)
{
sgx_ecc_state_handle_t handle;
sgx_ec256_private_t sk;
sgx_ec256_public_t pk;
sgx_status_t status;
status = sgx_ecc256_open_context(&handle);
if (status)
{
*error = status;
return 1;
}
status = sgx_ecc256_create_key_pair(&sk, &pk, &handle);
if (status)
{
*error = status;
return 2;
}
*error = SGX_SUCCESS;
return 0;
}
这是我的主机应用程序:
#include "Enc_u.h"
#include "sgx_urts.h"
#include <cstdio>
#include <tchar.h>
#define ENC _T("../Debug/Enc.signed.dll")
int main()
{
sgx_status_t error;
sgx_enclave_id_t eid;
sgx_launch_token_t token;
int updated = 0;
int step;
error = sgx_create_enclave(ENC, SGX_DEBUG_FLAG, &token, &updated, &eid, nullptr);
if (error)
printf("Failed to create enclave\n");
Test(eid, &step, &error);
if (error)
printf("Failed on step %d\n", step);
return 0;
}
结果是 error = 1 on step = 2。
知道我做错了什么或者我可能配置不正确吗?我正在使用 Visual Studio 社区 2015 和英特尔 C++ 编译器 17.0。
P.S:这是 my post on an Intel forum 的复制品。如果它在每个平台上都得到了正确的回答,我会 post 对另一个的回答,同时引用它的作者。
使用下面的语句代替 status = sgx_ecc256_create_key_pair(&sk, &pk, &handle);
status = sgx_ecc256_create_key_pair(&sk, &pk, handle);
我编写了一个非常简单的测试来学习在 enclave 中使用椭圆曲线密码术。但是密钥创建方法失败 SGX_ERROR_UNEXPECTED.
这是我的领地:
#include "Enc_t.h"
#include "sgx_trts.h"
#include "sgx_tcrypto.h"
int Test(sgx_status_t *error)
{
sgx_ecc_state_handle_t handle;
sgx_ec256_private_t sk;
sgx_ec256_public_t pk;
sgx_status_t status;
status = sgx_ecc256_open_context(&handle);
if (status)
{
*error = status;
return 1;
}
status = sgx_ecc256_create_key_pair(&sk, &pk, &handle);
if (status)
{
*error = status;
return 2;
}
*error = SGX_SUCCESS;
return 0;
}
这是我的主机应用程序:
#include "Enc_u.h"
#include "sgx_urts.h"
#include <cstdio>
#include <tchar.h>
#define ENC _T("../Debug/Enc.signed.dll")
int main()
{
sgx_status_t error;
sgx_enclave_id_t eid;
sgx_launch_token_t token;
int updated = 0;
int step;
error = sgx_create_enclave(ENC, SGX_DEBUG_FLAG, &token, &updated, &eid, nullptr);
if (error)
printf("Failed to create enclave\n");
Test(eid, &step, &error);
if (error)
printf("Failed on step %d\n", step);
return 0;
}
结果是 error = 1 on step = 2。
知道我做错了什么或者我可能配置不正确吗?我正在使用 Visual Studio 社区 2015 和英特尔 C++ 编译器 17.0。
P.S:这是 my post on an Intel forum 的复制品。如果它在每个平台上都得到了正确的回答,我会 post 对另一个的回答,同时引用它的作者。
使用下面的语句代替 status = sgx_ecc256_create_key_pair(&sk, &pk, &handle);
status = sgx_ecc256_create_key_pair(&sk, &pk, handle);