Ошибка sgx_ecc256_create_key_pair

Я написал очень простой тест для изучения работы с криптографией с эллиптическими кривыми внутри анклава. Но метод создания ключа завершается неудачно с 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;
}

Результатом является ошибка = 1 на шаге = 2.

Есть идеи, что я делаю неправильно или что я неправильно настроил? Я использую Visual Studio Community 2015 и Intel C ++ Compiler 17.0.

П.С .: Это точная копия мой пост на форуме Intel. Если на каждой из этих платформ будет дан правильный ответ, я отправлю ответ другой, также со ссылкой на ее автора.

0

Решение

Используйте приведенное ниже утверждение вместо status = sgx_ecc256_create_key_pair(&sk, &pk, &handle);

  • status = sgx_ecc256_create_key_pair(&sk, &pk, handle);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]