首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将char数组传递给函数以获得更新char数组的值。

将char数组传递给函数以获得更新char数组的值。
EN

Stack Overflow用户
提问于 2018-05-16 23:24:01
回答 1查看 51关注 0票数 0
代码语言:javascript
复制
int get_alpha()
{
    std::string sealed_alpha_file = "/home/roshan/thesis/osn_server/sealed_alpha";

    long fsize;
    ocall_get_textsize(sealed_alpha_file.c_str(), &fsize, 0);
    unsigned char sealed_data[fsize];
    size_t ocall_return;
    ocall_load_file(&ocall_return, sealed_alpha_file.c_str(), fsize, sealed_data, 0);

      char resecret[12];
      uint64_t resecret_size = sizeof(resecret);
      sgx_status_t ret;
      ret = sgx_unseal_data(
              (sgx_sealed_data_t*)sealed_data,
              NULL,
              NULL,
              (uint8_t*)&resecret,
              (uint32_t*)&resecret_size);

      if(ret != SGX_SUCCESS)
      {
          mbedtls_printf("Enclave: Unsealing sealed_alpha failed %#x\n", ret);
          return -1;
      }

    mbedtls_printf("Enclave: Unsealing sealed_alpha success");
    mbedtls_printf("Enclave: After unsealing alpha number: %llu\n", *(char *)resecret);
    return 0;
}

我想从另一个函数调用get_alpha()函数,并从resecret数组中获取值。我尝试将get_alpha()更改为get_alpha(char *resecret),并在get_alpha函数中注释char resecret12,并使uint64_t resecret_size = sizeof(resecret);uint64_t resecret_size = (12);。

然后从其他函数中这样称呼它

代码语言:javascript
复制
char resecret[12];
get_alpha(resecret);

mbedtls_printf("Enclave: After unsealing alpha number: %llu\n", *(char *)resecret);

但我没有得到正确的答案。看来sgx_unseal_data失败了。

Sgx_unseal_data的签名:

代码语言:javascript
复制
sgx_status_t SGXAPI sgx_unseal_data(const sgx_sealed_data_t *p_sealed_data,
    uint8_t *p_additional_MACtext,
    uint32_t *p_additional_MACtext_length,
    uint8_t *p_decrypted_text,
    uint32_t *p_decrypted_text_length);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 23:31:02

这条标线似乎很奇怪:

代码语言:javascript
复制
ret = sgx_unseal_data(
              (sgx_sealed_data_t*)sealed_data,
              NULL,
              NULL,
              (uint8_t*)&resecret,    // Probably shouldn't use address-of (&) here?
              (uint32_t*)&resecret_size);

我相信这个呼吁应该是:

代码语言:javascript
复制
ret = sgx_unseal_data(
              (sgx_sealed_data_t*)sealed_data,
              NULL,
              NULL,
              (uint8_t*)resecret,                  
              (uint32_t*)&resecret_size);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50381275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档