2017-02-03 19 views
0

私は非常に簡単なテストを書いて、エンクレーブ内の楕円曲線暗号を使って作業することを学びました。しかし、鍵の作成方法はSGX_ERROR_UNEXPECTEDで失敗します。ここでsgx_ecc256_create_key_pair fail

は私の飛び地です:

#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; 
} 

結果は、私が「どのようなステップ= 2

任意のアイデアでエラー= 1であります間違っているか、私が間違って設定している可能性がありますか?私はVisual Studio Community 2015とインテルC++コンパイラ17.0を使用しています。

P.S:これはmy post on an Intel forumのレプリカです。これらのプラットフォームのそれぞれについて適切に回答されていれば、私はその著者を引用して答えを他のプラットフォームに投稿します。

+0

あなたは –

+0

EDLは関係ありませんEDL文を共有することができますを使用してください。この問題は、自身の代わりにECコンテキスト変数にポインタを渡すことに起因していました。別の理由でそれが必要な場合は、私に教えてください。 –

+0

チュートリアルとして使用する必要があります。それは本当に便利だろう。 [email protected] –

答えて

2

は、以下の文の代わりに、status = sgx_ecc256_create_key_pair(&sk, &pk, &handle);

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