Add SGX KSS config_svn verification support in grpc_ratls
This commit is contained in:
		
							parent
							
								
									78450e58f8
								
							
						
					
					
						commit
						cf080a46a0
					
				@ -26,6 +26,7 @@ function build_instance() {
 | 
				
			|||||||
             .verify_mr_signer = "on" |
 | 
					             .verify_mr_signer = "on" |
 | 
				
			||||||
             .verify_isv_prod_id = "off" |
 | 
					             .verify_isv_prod_id = "off" |
 | 
				
			||||||
             .verify_isv_svn = "off" |
 | 
					             .verify_isv_svn = "off" |
 | 
				
			||||||
 | 
					             .verify_config_svn = "off" |
 | 
				
			||||||
             .verify_enclave_debuggable = "on" |
 | 
					             .verify_enclave_debuggable = "on" |
 | 
				
			||||||
	     .sgx_mrs[0].mr_enclave = ''"'`get_mr client mr_enclave`'" |
 | 
						     .sgx_mrs[0].mr_enclave = ''"'`get_mr client mr_enclave`'" |
 | 
				
			||||||
	     .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" |
 | 
						     .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" |
 | 
				
			||||||
@ -43,6 +44,7 @@ function build_instance() {
 | 
				
			|||||||
             .verify_mr_signer = "off" |
 | 
					             .verify_mr_signer = "off" |
 | 
				
			||||||
             .verify_isv_prod_id = "off" |
 | 
					             .verify_isv_prod_id = "off" |
 | 
				
			||||||
             .verify_isv_svn = "off" |
 | 
					             .verify_isv_svn = "off" |
 | 
				
			||||||
 | 
					             .verify_config_svn = "off" |
 | 
				
			||||||
             .verify_enclave_debuggable = "on" |
 | 
					             .verify_enclave_debuggable = "on" |
 | 
				
			||||||
             .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
					             .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -65,6 +65,7 @@ static sgx_config parse_sgx_config_json(const char* file) {
 | 
				
			|||||||
    sgx_cfg.verify_mr_signer = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_mr_signer"), "on");
 | 
					    sgx_cfg.verify_mr_signer = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_mr_signer"), "on");
 | 
				
			||||||
    sgx_cfg.verify_isv_prod_id = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_isv_prod_id"), "on");
 | 
					    sgx_cfg.verify_isv_prod_id = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_isv_prod_id"), "on");
 | 
				
			||||||
    sgx_cfg.verify_isv_svn = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_isv_svn"), "on");
 | 
					    sgx_cfg.verify_isv_svn = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_isv_svn"), "on");
 | 
				
			||||||
 | 
					    sgx_cfg.verify_config_svn = sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_config_svn"), "on");
 | 
				
			||||||
    sgx_cfg.verify_enclave_debuggable =
 | 
					    sgx_cfg.verify_enclave_debuggable =
 | 
				
			||||||
        sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_enclave_debuggable"), "on");
 | 
					        sgx_json.compare_item(sgx_json.get_item(sgx_json.get_handle(), "verify_enclave_debuggable"), "on");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -89,6 +90,9 @@ static sgx_config parse_sgx_config_json(const char* file) {
 | 
				
			|||||||
        auto isv_svn = sgx_json.print_item(sgx_json.get_item(obj, "isv_svn"));
 | 
					        auto isv_svn = sgx_json.print_item(sgx_json.get_item(obj, "isv_svn"));
 | 
				
			||||||
        sgx_cfg.sgx_mrs[i].isv_svn = strtoul(isv_svn, nullptr, 10);
 | 
					        sgx_cfg.sgx_mrs[i].isv_svn = strtoul(isv_svn, nullptr, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        auto config_svn = sgx_json.print_item(sgx_json.get_item(obj, "config_svn"));
 | 
				
			||||||
 | 
					        sgx_cfg.sgx_mrs[i].config_svn = strtoul(config_svn, nullptr, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (cJSON_IsTrue(sgx_json.get_item(obj, "debuggable")) == 0)
 | 
					        if (cJSON_IsTrue(sgx_json.get_item(obj, "debuggable")) == 0)
 | 
				
			||||||
            sgx_cfg.sgx_mrs[i].debuggable = false;
 | 
					            sgx_cfg.sgx_mrs[i].debuggable = false;
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
@ -112,7 +116,7 @@ void ra_tls_verify_init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static bool verify_measurement_internal(const char* mr_enclave, const char* mr_signer,
 | 
					static bool verify_measurement_internal(const char* mr_enclave, const char* mr_signer,
 | 
				
			||||||
                                        const char* isv_prod_id, const char* isv_svn,
 | 
					                                        const char* isv_prod_id, const char* isv_svn,
 | 
				
			||||||
                                        bool debuggable) {
 | 
					                                        const char* config_svn, bool debuggable) {
 | 
				
			||||||
    bool status = false;
 | 
					    bool status = false;
 | 
				
			||||||
    auto & sgx_cfg = _ctx_.sgx_cfg;
 | 
					    auto & sgx_cfg = _ctx_.sgx_cfg;
 | 
				
			||||||
    for (auto & obj : sgx_cfg.sgx_mrs) {
 | 
					    for (auto & obj : sgx_cfg.sgx_mrs) {
 | 
				
			||||||
@ -138,6 +142,11 @@ static bool verify_measurement_internal(const char* mr_enclave, const char* mr_s
 | 
				
			|||||||
            status = false;
 | 
					            status = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (status && sgx_cfg.verify_config_svn && \
 | 
				
			||||||
 | 
					            (obj.config_svn != *(uint16_t*)config_svn)) {
 | 
				
			||||||
 | 
					            status = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (status && sgx_cfg.verify_enclave_debuggable && \
 | 
					        if (status && sgx_cfg.verify_enclave_debuggable && \
 | 
				
			||||||
            (obj.debuggable != debuggable)) {
 | 
					            (obj.debuggable != debuggable)) {
 | 
				
			||||||
            status = false;
 | 
					            status = false;
 | 
				
			||||||
@ -152,12 +161,14 @@ static bool verify_measurement_internal(const char* mr_enclave, const char* mr_s
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int verify_measurement(const char* mr_enclave, const char* mr_signer,
 | 
					int verify_measurement(const char* mr_enclave, const char* mr_signer,
 | 
				
			||||||
                       const char* isv_prod_id, const char* isv_svn,
 | 
					                       const char* isv_prod_id, const char* isv_svn,
 | 
				
			||||||
                       bool debuggable) {
 | 
					                       const char* config_svn, bool debuggable) {
 | 
				
			||||||
    std::lock_guard<std::mutex> lock(_ctx_.mtx);
 | 
					    std::lock_guard<std::mutex> lock(_ctx_.mtx);
 | 
				
			||||||
    bool status = false;
 | 
					    bool status = false;
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        assert(mr_enclave && mr_signer && isv_prod_id && isv_svn);
 | 
					        assert(mr_enclave && mr_signer && isv_prod_id && isv_svn && config_svn);
 | 
				
			||||||
        status = verify_measurement_internal(mr_enclave, mr_signer, isv_prod_id, isv_svn, debuggable);
 | 
					        status = verify_measurement_internal(
 | 
				
			||||||
 | 
					            mr_enclave, mr_signer, isv_prod_id, isv_svn, config_svn, debuggable
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
        if (status) {
 | 
					        if (status) {
 | 
				
			||||||
            grpc_printf("  |- verify result  :  success\n");
 | 
					            grpc_printf("  |- verify result  :  success\n");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
@ -166,6 +177,7 @@ int verify_measurement(const char* mr_enclave, const char* mr_signer,
 | 
				
			|||||||
            grpc_printf("  |- mr_signer      :  %s\n", byte_to_hex(mr_signer, 32).c_str());
 | 
					            grpc_printf("  |- mr_signer      :  %s\n", byte_to_hex(mr_signer, 32).c_str());
 | 
				
			||||||
            grpc_printf("  |- isv_prod_id    :  %hu\n", *((uint16_t*)isv_prod_id));
 | 
					            grpc_printf("  |- isv_prod_id    :  %hu\n", *((uint16_t*)isv_prod_id));
 | 
				
			||||||
            grpc_printf("  |- isv_svn        :  %hu\n", *((uint16_t*)isv_svn));
 | 
					            grpc_printf("  |- isv_svn        :  %hu\n", *((uint16_t*)isv_svn));
 | 
				
			||||||
 | 
					            grpc_printf("  |- config_svn     :  %hu\n", *((uint16_t*)config_svn));
 | 
				
			||||||
            grpc_printf("  |- debuggable     :  %s\n", debuggable?"true":"false");
 | 
					            grpc_printf("  |- debuggable     :  %s\n", debuggable?"true":"false");
 | 
				
			||||||
            grpc_printf("  |- verify result  :  failed\n");
 | 
					            grpc_printf("  |- verify result  :  failed\n");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -50,6 +50,7 @@ struct sgx_measurement {
 | 
				
			|||||||
    char mr_signer[32];
 | 
					    char mr_signer[32];
 | 
				
			||||||
    uint16_t isv_prod_id;
 | 
					    uint16_t isv_prod_id;
 | 
				
			||||||
    uint16_t isv_svn;
 | 
					    uint16_t isv_svn;
 | 
				
			||||||
 | 
					    uint16_t config_svn;
 | 
				
			||||||
    bool debuggable;
 | 
					    bool debuggable;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -58,6 +59,7 @@ struct sgx_config {
 | 
				
			|||||||
    bool verify_mr_signer   = true;
 | 
					    bool verify_mr_signer   = true;
 | 
				
			||||||
    bool verify_isv_prod_id = true;
 | 
					    bool verify_isv_prod_id = true;
 | 
				
			||||||
    bool verify_isv_svn     = true;
 | 
					    bool verify_isv_svn     = true;
 | 
				
			||||||
 | 
					    bool verify_config_svn = true;
 | 
				
			||||||
    bool verify_enclave_debuggable = true;
 | 
					    bool verify_enclave_debuggable = true;
 | 
				
			||||||
    std::vector<sgx_measurement> sgx_mrs;
 | 
					    std::vector<sgx_measurement> sgx_mrs;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -100,7 +102,7 @@ void ra_tls_verify_init();
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int verify_measurement(const char* mr_enclave, const char* mr_signer,
 | 
					int verify_measurement(const char* mr_enclave, const char* mr_signer,
 | 
				
			||||||
                       const char* isv_prod_id, const char* isv_svn,
 | 
					                       const char* isv_prod_id, const char* isv_svn,
 | 
				
			||||||
                       bool debuggable);
 | 
					                       const char* config_svn, bool debuggable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void credential_option_set_certificate_provider(grpc::sgx::CredentialsOptions& options);
 | 
					void credential_option_set_certificate_provider(grpc::sgx::CredentialsOptions& options);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -308,6 +308,7 @@ int occlum_verify_cert(const unsigned char * der_crt, size_t len) {
 | 
				
			|||||||
                             (const char *)&p_rep_body->mr_signer,
 | 
					                             (const char *)&p_rep_body->mr_signer,
 | 
				
			||||||
                             (const char *)&p_rep_body->isv_prod_id,
 | 
					                             (const char *)&p_rep_body->isv_prod_id,
 | 
				
			||||||
                             (const char *)&p_rep_body->isv_svn,
 | 
					                             (const char *)&p_rep_body->isv_svn,
 | 
				
			||||||
 | 
					                             (const char *)&p_rep_body->config_svn,
 | 
				
			||||||
                             debuggable);
 | 
					                             debuggable);
 | 
				
			||||||
    if (ret != 0) {
 | 
					    if (ret != 0) {
 | 
				
			||||||
        grpc_printf("verify the measurement failed!\n");
 | 
					        grpc_printf("verify the measurement failed!\n");
 | 
				
			||||||
 | 
				
			|||||||
@ -3,13 +3,15 @@
 | 
				
			|||||||
    "verify_mr_signer" : "on",
 | 
					    "verify_mr_signer" : "on",
 | 
				
			||||||
    "verify_isv_prod_id" : "on",
 | 
					    "verify_isv_prod_id" : "on",
 | 
				
			||||||
    "verify_isv_svn" : "on",
 | 
					    "verify_isv_svn" : "on",
 | 
				
			||||||
 | 
					    "verify_config_svn" : "on",
 | 
				
			||||||
    "verify_enclave_debuggable" : "on",
 | 
					    "verify_enclave_debuggable" : "on",
 | 
				
			||||||
    "sgx_mrs": [
 | 
					    "sgx_mrs": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "mr_enclave" : "",
 | 
					            "mr_enclave" : "",
 | 
				
			||||||
            "mr_signer" : "",
 | 
					            "mr_signer" : "",
 | 
				
			||||||
            "isv_prod_id" : "0",
 | 
					            "isv_prod_id" : 0,
 | 
				
			||||||
            "isv_svn" : "0",
 | 
					            "isv_svn" : 0,
 | 
				
			||||||
 | 
					            "config_svn" : 0,
 | 
				
			||||||
            "debuggable" : false
 | 
					            "debuggable" : false
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
				
			|||||||
@ -21,13 +21,15 @@ The GRPC-RATLS server holds some sensitive data thus it is usually deploed on se
 | 
				
			|||||||
    "verify_mr_signer" : "on",
 | 
					    "verify_mr_signer" : "on",
 | 
				
			||||||
    "verify_isv_prod_id" : "on",
 | 
					    "verify_isv_prod_id" : "on",
 | 
				
			||||||
    "verify_isv_svn" : "on",
 | 
					    "verify_isv_svn" : "on",
 | 
				
			||||||
 | 
					    "verify_config_svn" : "on",
 | 
				
			||||||
    "verify_enclave_debuggable" : "on",
 | 
					    "verify_enclave_debuggable" : "on",
 | 
				
			||||||
    "sgx_mrs": [
 | 
					    "sgx_mrs": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "mr_enclave" : "",
 | 
					            "mr_enclave" : "",
 | 
				
			||||||
            "mr_signer" : "",
 | 
					            "mr_signer" : "",
 | 
				
			||||||
            "isv_prod_id" : "0",
 | 
					            "isv_prod_id" : 0,
 | 
				
			||||||
            "isv_svn" : "0",
 | 
					            "isv_svn" : 0,
 | 
				
			||||||
 | 
					            "config_svn" : 0,
 | 
				
			||||||
            "debuggable" : false
 | 
					            "debuggable" : false
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
@ -38,6 +40,8 @@ Users need decide which `verify_xxx` are taking effect.
 | 
				
			|||||||
1. if yes, fill in the measures data under `sgx_mrs`.
 | 
					1. if yes, fill in the measures data under `sgx_mrs`.
 | 
				
			||||||
2. if no, set `verify_xxx` to `off`.
 | 
					2. if no, set `verify_xxx` to `off`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* **config_svn** is a 16 bits information brought by [`SGX KSS feature`](https://github.com/occlum/occlum/blob/master/docs/remote_attestation.md#sgx-kss-key-separation-and-sharing-feature-support), which provides a benefit that the enclave SGX quote (config_svn part) could be modified in running stage instead of signing stage.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Details could refer to the `build_server_instance` in script [`build_content.sh`](./build_content.sh).
 | 
					Details could refer to the `build_server_instance` in script [`build_content.sh`](./build_content.sh).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The `RA Verify Config` JSON records the secrets. Each secret has a name and its base64 encoded string value, such as
 | 
					The `RA Verify Config` JSON records the secrets. Each secret has a name and its base64 encoded string value, such as
 | 
				
			||||||
 | 
				
			|||||||
@ -53,6 +53,8 @@ function build_client_instance()
 | 
				
			|||||||
        .resource_limits.kernel_space_heap_size = "128MB" |
 | 
					        .resource_limits.kernel_space_heap_size = "128MB" |
 | 
				
			||||||
        .resource_limits.max_num_of_threads = 32 |
 | 
					        .resource_limits.max_num_of_threads = 32 |
 | 
				
			||||||
        .metadata.debuggable = false |
 | 
					        .metadata.debuggable = false |
 | 
				
			||||||
 | 
					        .metadata.enable_kss = true |
 | 
				
			||||||
 | 
					        .metadata.version_number = 88 |
 | 
				
			||||||
        .env.default += ["PYTHONHOME=/opt/python-occlum"]' Occlum.json)" && \
 | 
					        .env.default += ["PYTHONHOME=/opt/python-occlum"]' Occlum.json)" && \
 | 
				
			||||||
    echo "${new_json}" > Occlum.json
 | 
					    echo "${new_json}" > Occlum.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -64,6 +66,7 @@ function build_client_instance()
 | 
				
			|||||||
        .verify_mr_signer = "on" |
 | 
					        .verify_mr_signer = "on" |
 | 
				
			||||||
        .verify_isv_prod_id = "off" |
 | 
					        .verify_isv_prod_id = "off" |
 | 
				
			||||||
        .verify_isv_svn = "off" |
 | 
					        .verify_isv_svn = "off" |
 | 
				
			||||||
 | 
					        .verify_config_svn = "off" |
 | 
				
			||||||
        .verify_enclave_debuggable = "on" |
 | 
					        .verify_enclave_debuggable = "on" |
 | 
				
			||||||
        .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" |
 | 
					        .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" |
 | 
				
			||||||
        .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
					        .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
				
			||||||
@ -109,10 +112,13 @@ function build_server_instance()
 | 
				
			|||||||
    jq '.verify_mr_enclave = "on" |
 | 
					    jq '.verify_mr_enclave = "on" |
 | 
				
			||||||
        .verify_mr_signer = "on" |
 | 
					        .verify_mr_signer = "on" |
 | 
				
			||||||
        .verify_isv_prod_id = "off" |
 | 
					        .verify_isv_prod_id = "off" |
 | 
				
			||||||
        .verify_isv_svn = "off" |
 | 
					        .verify_isv_svn = "on" |
 | 
				
			||||||
 | 
					        .verify_config_svn = "on" |
 | 
				
			||||||
        .verify_enclave_debuggable = "on" |
 | 
					        .verify_enclave_debuggable = "on" |
 | 
				
			||||||
        .sgx_mrs[0].mr_enclave = ''"'`get_mr client mr_enclave`'" |
 | 
					        .sgx_mrs[0].mr_enclave = ''"'`get_mr client mr_enclave`'" |
 | 
				
			||||||
        .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" |
 | 
					        .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" |
 | 
				
			||||||
 | 
					        .sgx_mrs[0].isv_svn = 88 |
 | 
				
			||||||
 | 
					        .sgx_mrs[0].config_svn = 1234 |
 | 
				
			||||||
        .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
					        .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    new_json="$(jq '.resource_limits.user_space_size = "500MB" |
 | 
					    new_json="$(jq '.resource_limits.user_space_size = "500MB" |
 | 
				
			||||||
 | 
				
			|||||||
@ -3,13 +3,15 @@
 | 
				
			|||||||
    "verify_mr_signer" : "on",
 | 
					    "verify_mr_signer" : "on",
 | 
				
			||||||
    "verify_isv_prod_id" : "on",
 | 
					    "verify_isv_prod_id" : "on",
 | 
				
			||||||
    "verify_isv_svn" : "on",
 | 
					    "verify_isv_svn" : "on",
 | 
				
			||||||
 | 
					    "verify_config_svn" : "on",
 | 
				
			||||||
    "verify_enclave_debuggable" : "on",
 | 
					    "verify_enclave_debuggable" : "on",
 | 
				
			||||||
    "sgx_mrs": [
 | 
					    "sgx_mrs": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "mr_enclave" : "",
 | 
					            "mr_enclave" : "",
 | 
				
			||||||
            "mr_signer" : "",
 | 
					            "mr_signer" : "",
 | 
				
			||||||
            "isv_prod_id" : "0",
 | 
					            "isv_prod_id" : 0,
 | 
				
			||||||
            "isv_svn" : "0",
 | 
					            "isv_svn" : 0,
 | 
				
			||||||
 | 
					            "config_svn" : 0,
 | 
				
			||||||
            "debuggable" : false
 | 
					            "debuggable" : false
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
				
			|||||||
@ -14,5 +14,5 @@ sleep 3
 | 
				
			|||||||
echo "Start Flask-TLS restful web portal on backgound ..."
 | 
					echo "Start Flask-TLS restful web portal on backgound ..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pushd occlum_client
 | 
					pushd occlum_client
 | 
				
			||||||
occlum run /bin/rest_api.py &
 | 
					occlum run --config-svn 1234 /bin/rest_api.py &
 | 
				
			||||||
popd
 | 
					popd
 | 
				
			||||||
@ -19,7 +19,7 @@ done
 | 
				
			|||||||
echo "Start Flask-TLS restful web portal on backgound ..."
 | 
					echo "Start Flask-TLS restful web portal on backgound ..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pushd occlum_client
 | 
					pushd occlum_client
 | 
				
			||||||
occlum run /bin/rest_api.py &
 | 
					occlum run --config-svn 1234 /bin/rest_api.py &
 | 
				
			||||||
popd
 | 
					popd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while ! nc -z $FLASK_SERVER_IP $FLASK_SERVER_PORT; do
 | 
					while ! nc -z $FLASK_SERVER_IP $FLASK_SERVER_PORT; do
 | 
				
			||||||
 | 
				
			|||||||
@ -77,6 +77,7 @@ function build_tf_instance()
 | 
				
			|||||||
        .verify_mr_signer = "on" |
 | 
					        .verify_mr_signer = "on" |
 | 
				
			||||||
        .verify_isv_prod_id = "off" |
 | 
					        .verify_isv_prod_id = "off" |
 | 
				
			||||||
        .verify_isv_svn = "off" |
 | 
					        .verify_isv_svn = "off" |
 | 
				
			||||||
 | 
					        .verify_config_svn = "off" |
 | 
				
			||||||
        .verify_enclave_debuggable = "on" |
 | 
					        .verify_enclave_debuggable = "on" |
 | 
				
			||||||
        .sgx_mrs[0].mr_signer = ''"'`get_mr tf mr_signer`'" |
 | 
					        .sgx_mrs[0].mr_signer = ''"'`get_mr tf mr_signer`'" |
 | 
				
			||||||
        .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
					        .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json
 | 
				
			||||||
@ -126,6 +127,7 @@ function build_server_instance()
 | 
				
			|||||||
        .verify_mr_signer = "on" |
 | 
					        .verify_mr_signer = "on" |
 | 
				
			||||||
        .verify_isv_prod_id = "off" |
 | 
					        .verify_isv_prod_id = "off" |
 | 
				
			||||||
        .verify_isv_svn = "off" |
 | 
					        .verify_isv_svn = "off" |
 | 
				
			||||||
 | 
					        .verify_config_svn = "off" |
 | 
				
			||||||
        .verify_enclave_debuggable = "on" |
 | 
					        .verify_enclave_debuggable = "on" |
 | 
				
			||||||
        .sgx_mrs[0].mr_enclave = ''"'`get_mr tf mr_enclave`'" |
 | 
					        .sgx_mrs[0].mr_enclave = ''"'`get_mr tf mr_enclave`'" |
 | 
				
			||||||
        .sgx_mrs[0].mr_signer = ''"'`get_mr tf mr_signer`'" |
 | 
					        .sgx_mrs[0].mr_signer = ''"'`get_mr tf mr_signer`'" |
 | 
				
			||||||
 | 
				
			|||||||
@ -3,13 +3,15 @@
 | 
				
			|||||||
    "verify_mr_signer" : "on",
 | 
					    "verify_mr_signer" : "on",
 | 
				
			||||||
    "verify_isv_prod_id" : "on",
 | 
					    "verify_isv_prod_id" : "on",
 | 
				
			||||||
    "verify_isv_svn" : "on",
 | 
					    "verify_isv_svn" : "on",
 | 
				
			||||||
 | 
					    "verify_config_svn" : "off",
 | 
				
			||||||
    "verify_enclave_debuggable" : "on",
 | 
					    "verify_enclave_debuggable" : "on",
 | 
				
			||||||
    "sgx_mrs": [
 | 
					    "sgx_mrs": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            "mr_enclave" : "",
 | 
					            "mr_enclave" : "",
 | 
				
			||||||
            "mr_signer" : "",
 | 
					            "mr_signer" : "",
 | 
				
			||||||
            "isv_prod_id" : "0",
 | 
					            "isv_prod_id" : 0,
 | 
				
			||||||
            "isv_svn" : "0",
 | 
					            "isv_svn" : 0,
 | 
				
			||||||
 | 
					            "config_svn" : 0,
 | 
				
			||||||
            "debuggable" : false
 | 
					            "debuggable" : false
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user