<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic @Scott R. As you suggested, I in Intel® Software Guard Extensions (Intel® SGX)</title>
    <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181676#M3552</link>
    <description>&lt;P&gt;@Scott R. As you suggested, I am looking at the local attestation example provided in the SDK.&lt;/P&gt;&lt;P&gt;AFAIK to verify 2 enclaves locally, one enclave needs to generate a report on itself and provide the same to the other enclave. The other enclaves derives a key by calling some API and only then it can decrypt the report and check if the other enclave is genuine. But in this example I dont see any code doing that. Could you please point out where exactly in the code is it being done? The only code which was related to verification of the enclave was this -&lt;/P&gt;
&lt;PRE class="brush:cpp; class-name:dark;"&gt;//Function that is used to verify the trust of the other enclave
//Each enclave can have its own way verifying the peer enclave identity
extern "C" uint32_t verify_peer_enclave_trust(sgx_dh_session_enclave_identity_t* peer_enclave_identity)
{
    if(!peer_enclave_identity)
    {
        return INVALID_PARAMETER_ERROR;
    }
    if(peer_enclave_identity-&amp;gt;isv_prod_id != 0 || !(peer_enclave_identity-&amp;gt;attributes.flags &amp;amp; SGX_FLAGS_INITTED))
        // || peer_enclave_identity-&amp;gt;attributes.xfrm !=3)// || peer_enclave_identity-&amp;gt;mr_signer != xx //TODO: To be hardcoded with values to check
    {
        return ENCLAVE_TRUST_ERROR;
    }
    else
    {
        return SUCCESS;
    }
}&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 23 Apr 2019 09:23:45 GMT</pubDate>
    <dc:creator>kh__Naveen</dc:creator>
    <dc:date>2019-04-23T09:23:45Z</dc:date>
    <item>
      <title>SGX Attestation (Windows)</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181672#M3548</link>
      <description>&lt;P&gt;I am new in Intel SGX and doing an academic project. I built an app with performing random number from ecall. Now, I need to perform a simple&amp;nbsp; attestation thus it proves i am using enclave (Intel SGX). How to perform it?&lt;/P&gt;&lt;P&gt;enclave { /*.edl file */&lt;/P&gt;&lt;P&gt;from "sgx_tstdc.edl" i&lt;/P&gt;&lt;P&gt;mport *; trusted { public void foo([out] int *a);&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;</description>
      <pubDate>Wed, 03 Apr 2019 21:32:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181672#M3548</guid>
      <dc:creator>bashar__golam</dc:creator>
      <dc:date>2019-04-03T21:32:08Z</dc:date>
    </item>
    <item>
      <title>Hi Golam.</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181673#M3549</link>
      <description>&lt;P&gt;Hi Golam.&lt;/P&gt;&lt;P&gt;We have a full end-to-end remote attestation whitepaper as well its associated sample available on GitHub.&lt;/P&gt;&lt;P&gt;&lt;A href="https://software.intel.com/en-us/articles/code-sample-intel-software-guard-extensions-remote-attestation-end-to-end-example" target="_blank"&gt;https://software.intel.com/en-us/articles/code-sample-intel-software-guard-extensions-remote-attestation-end-to-end-example&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/intel/sgx-ra-sample" target="_blank"&gt;https://github.com/intel/sgx-ra-sample&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;</description>
      <pubDate>Wed, 03 Apr 2019 21:36:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181673#M3549</guid>
      <dc:creator>Scott_R_Intel</dc:creator>
      <dc:date>2019-04-03T21:36:21Z</dc:date>
    </item>
    <item>
      <title>Hi Scott,</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181674#M3550</link>
      <description>&lt;P&gt;Hi Scott,&lt;/P&gt;&lt;P&gt;Thanks for reply. But, I don't need to perform Remote Attestation. I just need to proof that I am using SGX. Can you please give a link or sample code that might be like this (A solution having 3 enclaves. encalve 1 and enclave 2 perform that user is using SGX and enclave3 is what i given above). I am working in Windows OS.&lt;/P&gt;</description>
      <pubDate>Wed, 03 Apr 2019 21:45:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181674#M3550</guid>
      <dc:creator>bashar__golam</dc:creator>
      <dc:date>2019-04-03T21:45:39Z</dc:date>
    </item>
    <item>
      <title>Hi again Golam.</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181675#M3551</link>
      <description>&lt;P&gt;Hi again Golam.&lt;/P&gt;&lt;P&gt;My apologies that I misunderstood.&lt;/P&gt;&lt;P&gt;If I understand correctly now, and looking at some of your other questions, I think you should take a look at the LocalAttestation sample project included with the SGX SDK.&amp;nbsp; In it, there are three enclaves, each of which attest to each other and then make secure calls to each other.&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;</description>
      <pubDate>Thu, 04 Apr 2019 12:18:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181675#M3551</guid>
      <dc:creator>Scott_R_Intel</dc:creator>
      <dc:date>2019-04-04T12:18:10Z</dc:date>
    </item>
    <item>
      <title>@Scott R. As you suggested, I</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181676#M3552</link>
      <description>&lt;P&gt;@Scott R. As you suggested, I am looking at the local attestation example provided in the SDK.&lt;/P&gt;&lt;P&gt;AFAIK to verify 2 enclaves locally, one enclave needs to generate a report on itself and provide the same to the other enclave. The other enclaves derives a key by calling some API and only then it can decrypt the report and check if the other enclave is genuine. But in this example I dont see any code doing that. Could you please point out where exactly in the code is it being done? The only code which was related to verification of the enclave was this -&lt;/P&gt;
&lt;PRE class="brush:cpp; class-name:dark;"&gt;//Function that is used to verify the trust of the other enclave
//Each enclave can have its own way verifying the peer enclave identity
extern "C" uint32_t verify_peer_enclave_trust(sgx_dh_session_enclave_identity_t* peer_enclave_identity)
{
    if(!peer_enclave_identity)
    {
        return INVALID_PARAMETER_ERROR;
    }
    if(peer_enclave_identity-&amp;gt;isv_prod_id != 0 || !(peer_enclave_identity-&amp;gt;attributes.flags &amp;amp; SGX_FLAGS_INITTED))
        // || peer_enclave_identity-&amp;gt;attributes.xfrm !=3)// || peer_enclave_identity-&amp;gt;mr_signer != xx //TODO: To be hardcoded with values to check
    {
        return ENCLAVE_TRUST_ERROR;
    }
    else
    {
        return SUCCESS;
    }
}&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Apr 2019 09:23:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181676#M3552</guid>
      <dc:creator>kh__Naveen</dc:creator>
      <dc:date>2019-04-23T09:23:45Z</dc:date>
    </item>
    <item>
      <title>Quote:Scott R. (Intel) wrote:</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181677#M3553</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Scott R. (Intel) wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hi again Golam.&lt;/P&gt;&lt;P&gt;My apologies that I misunderstood.&lt;/P&gt;&lt;P&gt;If I understand correctly now, and looking at some of your other questions, I think you should take a look at the LocalAttestation sample project included with the SGX SDK.&amp;nbsp; In it, there are three enclaves, each of which attest to each other and then make secure calls to each other.&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dear Scott, could you please reply to my query in the previous post. It would be of great help as I am stuck with this from quite a long time.&lt;/P&gt;</description>
      <pubDate>Tue, 23 Apr 2019 20:34:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181677#M3553</guid>
      <dc:creator>kh__Naveen</dc:creator>
      <dc:date>2019-04-23T20:34:08Z</dc:date>
    </item>
    <item>
      <title>Hi Naveen.</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181678#M3554</link>
      <description>&lt;P&gt;Hi Naveen.&lt;/P&gt;&lt;P&gt;In this particular local attestation example, that's the exact function you need to be looking at.&amp;nbsp; See the TODO at the end of commented out line #10...&amp;nbsp;&lt;/P&gt;&lt;P&gt;peer_enclave_identity-&amp;gt;mr_signer != xx //TODO: To be hardcoded with values to check&lt;/P&gt;&lt;P&gt;Your MRSIGNER needs to be hardcoded in there... that's the main check.&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;</description>
      <pubDate>Wed, 24 Apr 2019 13:15:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181678#M3554</guid>
      <dc:creator>Scott_R_Intel</dc:creator>
      <dc:date>2019-04-24T13:15:19Z</dc:date>
    </item>
    <item>
      <title>Quote:Scott R. (Intel) wrote:</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181679#M3555</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Scott R. (Intel) wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hi Naveen.&lt;/P&gt;&lt;P&gt;In this particular local attestation example, that's the exact function you need to be looking at.&amp;nbsp; See the TODO at the end of commented out line #10...&amp;nbsp;&lt;/P&gt;&lt;P&gt;peer_enclave_identity-&amp;gt;mr_signer != xx //TODO: To be hardcoded with values to check&lt;/P&gt;&lt;P&gt;Your MRSIGNER needs to be hardcoded in there... that's the main check.&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for the reply Scott. In the section LOCAL ATTESTATION, in Intel SGX Developer's Guide, it is written that a report will be sent to the target enclave. Then the target enclave needs to call EGETKEY to derive a key and open the report. But I dont see any of this happening in the code :(. So&amp;nbsp; I am a little bit confused.&lt;/P&gt;</description>
      <pubDate>Wed, 24 Apr 2019 14:12:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181679#M3555</guid>
      <dc:creator>kh__Naveen</dc:creator>
      <dc:date>2019-04-24T14:12:19Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181680#M3556</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;Can anyone explain what following function doing?&lt;/P&gt;&lt;P&gt;&amp;nbsp;status = marshal_input_parameters_e2_foo1(target_fn_id, msg_type, var1, var2, &amp;amp;minp, &amp;amp;minp_len);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(status != SUCCESS)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return status;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;std::map&amp;lt;sgx_enclave_id_t, dh_session_t&amp;gt;::iterator it = g_src_session_info_map.find(dest_enclave_id);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(it != g_src_session_info_map.end())&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dh = &amp;amp;it-&amp;gt;second;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAFE_FREE(minp);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return INVALID_SESSION;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = send_request_receive_response(src_enclave_id, dest_enclave_id, dh, minp, minp_len, max_op_size, &amp;amp;op, &amp;amp;op_len);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(status != SUCCESS)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAFE_FREE(minp);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAFE_FREE(op);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return status;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status = unmarshal_retval_and_output_parameters_e2_foo1(op, &amp;amp;retval);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(status != SUCCESS)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAFE_FREE(minp);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAFE_FREE(op);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return status;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;</description>
      <pubDate>Wed, 24 Apr 2019 16:16:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181680#M3556</guid>
      <dc:creator>bashar__golam1</dc:creator>
      <dc:date>2019-04-24T16:16:31Z</dc:date>
    </item>
    <item>
      <title>Hi Bashar,</title>
      <link>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181681#M3557</link>
      <description>&lt;P&gt;Hi Bashar,&lt;/P&gt;&lt;P&gt;The code is marshalling, i.e filling a structure with data, and sending it over to the other enclave. The other enclave processes the data and sends over the results. The results will then be unmarshalled and verified.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Apr 2019 18:00:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Software-Guard-Extensions/SGX-Attestation-Windows/m-p/1181681#M3557</guid>
      <dc:creator>kh__Naveen</dc:creator>
      <dc:date>2019-04-25T18:00:41Z</dc:date>
    </item>
  </channel>
</rss>

