Skip to content

Commit

Permalink
cli: attesteer commands send to chain
Browse files Browse the repository at this point in the history
  • Loading branch information
OverOrion committed Mar 14, 2023
1 parent 6875baa commit c920561
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
2 changes: 1 addition & 1 deletion cli/src/attesteer/commands/send_ias_attestation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use itc_rpc_client::direct_client::DirectApi;
use itp_rpc::{RpcRequest, RpcResponse, RpcReturnValue};
use itp_types::DirectRequestStatus;
use itp_utils::FromHexPrefixed;
use log::error;
use log::*;
use std::fs::read_to_string;

use crate::{command_utils::get_worker_api_direct, Cli};
Expand Down
44 changes: 35 additions & 9 deletions enclave-runtime/src/rpc/worker_api_direct.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@
*/

use crate::attestation::{
generate_dcap_ra_extrinsic_from_quote_internal,
generate_ias_ra_extrinsic_from_der_cert_internal,
use crate::{
attestation::{
generate_dcap_ra_extrinsic_from_quote_internal,
generate_ias_ra_extrinsic_from_der_cert_internal,
},
utils::get_validator_accessor_from_solo_or_parachain,
};
use codec::Encode;
use core::result::Result;
use ita_sgx_runtime::Runtime;
use itc_parentchain::light_client::{concurrent_access::ValidatorAccess, ExtrinsicSender};
use itp_primitives_cache::{GetPrimitives, GLOBAL_PRIMITIVES_CACHE};
use itp_rpc::RpcReturnValue;
use itp_sgx_crypto::Rsa3072Seal;
Expand Down Expand Up @@ -232,15 +236,26 @@ fn execute_getter_inner<G: ExecuteGetter>(
fn forward_dcap_quote_inner(params: Params) -> Result<OpaqueExtrinsic, String> {
let hex_encoded_params = params.parse::<Vec<String>>().map_err(|e| format!("{:?}", e))?;

let request =
Request::from_hex(&hex_encoded_params[0].clone()).map_err(|e| format!("{:?}", e))?;
if hex_encoded_params.len() != 1 {
return Err(format!(
"Wrong number of arguments for IAS attestation report forwarding: {}, expected: {}",
hex_encoded_params.len(),
1
))
}

let encoded_quote_to_forward: Vec<u8> = request.cyphertext;
let encoded_quote_to_forward: Vec<u8> =
itp_utils::hex::decode_hex(&hex_encoded_params[0]).map_err(|e| format!("{:?}", e))?;

let url = String::new();
let ext = generate_dcap_ra_extrinsic_from_quote_internal(url, &encoded_quote_to_forward)
.map_err(|e| format!("{:?}", e))?;

let validator_access = get_validator_accessor_from_solo_or_parachain().unwrap();
validator_access
.execute_mut_on_validator(|v| v.send_extrinsics(vec![ext.clone()]))
.unwrap();

Ok(ext)
}

Expand All @@ -249,15 +264,26 @@ fn attesteer_forward_ias_attestation_report_inner(
) -> Result<OpaqueExtrinsic, String> {
let hex_encoded_params = params.parse::<Vec<String>>().map_err(|e| format!("{:?}", e))?;

let request =
Request::from_hex(&hex_encoded_params[0].clone()).map_err(|e| format!("{:?}", e))?;
if hex_encoded_params.len() != 1 {
return Err(format!(
"Wrong number of arguments for IAS attestation report forwarding: {}, expected: {}",
hex_encoded_params.len(),
1
))
}

let ias_attestation_report: Vec<u8> = request.cyphertext;
let ias_attestation_report =
itp_utils::hex::decode_hex(&hex_encoded_params[0]).map_err(|e| format!("{:?}", e))?;

let url = String::new();
let ext = generate_ias_ra_extrinsic_from_der_cert_internal(url, &ias_attestation_report)
.map_err(|e| format!("{:?}", e))?;

let validator_access = get_validator_accessor_from_solo_or_parachain().unwrap();
validator_access
.execute_mut_on_validator(|v| v.send_extrinsics(vec![ext.clone()]))
.unwrap();

Ok(ext)
}

Expand Down

0 comments on commit c920561

Please sign in to comment.