Skip to content

Commit

Permalink
Setting up native tasks for identity worker (#3129)
Browse files Browse the repository at this point in the history
* initial setup direct call requests

* adding direct call request handler init

* fixing typo

* adding io handler

* fixing dependencies

* fixing build

* cleaning up unused code

* fixing fmt issue

* extracting types

* fixing typo

* renaming DirectCallTask to NativeRequest

* refactoring names and improving error responses

* refactor: replace unwrap with expect in thread spawns

* fixing taplo issue

* Revert "refactor: replace unwrap with expect in thread spawns"

This reverts commit 3485f04.
  • Loading branch information
silva-fj authored Oct 15, 2024
1 parent 1ab58ff commit 5a1cb48
Show file tree
Hide file tree
Showing 12 changed files with 704 additions and 0 deletions.
42 changes: 42 additions & 0 deletions tee-worker/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions tee-worker/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ members = [
"identity/litentry/core/data-providers",
"identity/litentry/core/vc-task/sender",
"identity/litentry/core/vc-task/receiver",
"identity/litentry/core/native-task/sender",
"identity/litentry/core/native-task/receiver",
"identity/litentry/core/identity-verification",
"identity/litentry/core/stf-task/sender",
"identity/litentry/core/stf-task/receiver",
Expand Down Expand Up @@ -298,6 +300,8 @@ lc-stf-task-sender = { path = "identity/litentry/core/stf-task/sender", default-
lc-stf-task-receiver = { path = "identity/litentry/core/stf-task/receiver", default-features = false }
lc-vc-task-sender = { path = "identity/litentry/core/vc-task/sender", default-features = false }
lc-vc-task-receiver = { path = "identity/litentry/core/vc-task/receiver", default-features = false }
lc-native-task-sender = { path = "identity/litentry/core/native-task/sender", default-features = false }
lc-native-task-receiver = { path = "identity/litentry/core/native-task/receiver", default-features = false }

itc-peer-top-broadcaster = { path = "identity/core/peer-top-broadcaster", default-features = false }
itc-rpc-server = { path = "identity/core/rpc-server", default-features = false }
Expand Down
42 changes: 42 additions & 0 deletions tee-worker/identity/enclave-runtime/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions tee-worker/identity/enclave-runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ its-sidechain = { path = "../sidechain/sidechain-crate", default-features = fals
lc-data-providers = { path = "../litentry/core/data-providers", default-features = false, features = ["sgx"] }
lc-evm-dynamic-assertions = { path = "../litentry/core/evm-dynamic-assertions", default-features = false, features = ["sgx"] }
lc-identity-verification = { path = "../litentry/core/identity-verification", default-features = false, features = ["sgx"] }
lc-native-task-receiver = { path = "../litentry/core/native-task/receiver", default-features = false, features = ["sgx"] }
lc-parachain-extrinsic-task-receiver = { path = "../../common/litentry/core/parachain-extrinsic-task/receiver", default-features = false, features = ["sgx"] }
lc-stf-task-receiver = { path = "../litentry/core/stf-task/receiver", default-features = false, features = ["sgx"] }
lc-vc-task-receiver = { path = "../litentry/core/vc-task/receiver", default-features = false, features = ["sgx"] }
Expand Down
38 changes: 38 additions & 0 deletions tee-worker/identity/enclave-runtime/src/initialization/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ use its_sidechain::{
use jsonrpc_core::IoHandler;
use lc_data_providers::DataProviderConfig;
use lc_evm_dynamic_assertions::repository::EvmAssertionRepository;
use lc_native_task_receiver::{run_native_task_receiver, NativeTaskContext};
use lc_parachain_extrinsic_task_receiver::run_parachain_extrinsic_task_receiver;
use lc_stf_task_receiver::{run_stf_task_receiver, StfTaskContext};
use lc_vc_task_receiver::run_vc_handler_runner;
Expand Down Expand Up @@ -332,6 +333,37 @@ fn run_vc_issuance() -> Result<(), Error> {
Ok(())
}

fn run_native_task_handler() -> Result<(), Error> {
let author_api = GLOBAL_TOP_POOL_AUTHOR_COMPONENT.get()?;
let data_provider_config = GLOBAL_DATA_PROVIDER_CONFIG.get()?;
let shielding_key_repository = GLOBAL_SHIELDING_KEY_REPOSITORY_COMPONENT.get()?;
let ocall_api = GLOBAL_OCALL_API_COMPONENT.get()?;
let stf_enclave_signer = Arc::new(EnclaveStfEnclaveSigner::new(
GLOBAL_STATE_OBSERVER_COMPONENT.get()?,
ocall_api.clone(),
shielding_key_repository.clone(),
author_api.clone(),
));
let enclave_account = Arc::new(GLOBAL_SIGNING_KEY_REPOSITORY_COMPONENT.get()?.retrieve_key()?);
let extrinsic_factory = get_extrinsic_factory_from_integritee_solo_or_parachain()?;
let node_metadata_repo = get_node_metadata_repository_from_integritee_solo_or_parachain()?;

let context = NativeTaskContext::new(
shielding_key_repository,
author_api,
stf_enclave_signer,
enclave_account,
ocall_api,
data_provider_config,
extrinsic_factory,
node_metadata_repo,
);

run_native_task_receiver(Arc::new(context));

Ok(())
}

fn run_parachain_extrinsic_sender() -> Result<(), Error> {
let ocall_api = GLOBAL_OCALL_API_COMPONENT.get()?;
let extrinsics_factory = get_extrinsic_factory_from_integritee_solo_or_parachain()?;
Expand Down Expand Up @@ -413,6 +445,12 @@ pub(crate) fn init_enclave_sidechain_components(
run_vc_issuance().unwrap();
});

std::thread::spawn(move || {
println!("running native task handler");
#[allow(clippy::unwrap_used)]
run_native_task_handler().unwrap();
});

std::thread::spawn(move || {
println!("running parentchain extrinsic sender");
#[allow(clippy::unwrap_used)]
Expand Down
67 changes: 67 additions & 0 deletions tee-worker/identity/litentry/core/native-task/receiver/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
[package]
name = "lc-native-task-receiver"
version = "0.1.0"
edition = "2021"

[dependencies]
futures = { workspace = true, optional = true }
futures_sgx = { workspace = true, features = ["thread-pool"], optional = true }
sgx_tstd = { workspace = true, features = ["net", "thread"], optional = true }


codec = { package = "parity-scale-codec", workspace = true }
log = { workspace = true }
sp-core = { workspace = true, features = ["full_crypto"] }

ita-sgx-runtime = { package = "id-ita-sgx-runtime", path = "../../../../app-libs/sgx-runtime", default-features = false }
ita-stf = { package = "id-ita-stf", path = "../../../../app-libs/stf", default-features = false }
itp-enclave-metrics = { workspace = true }
itp-extrinsics-factory = { workspace = true }
itp-node-api = { workspace = true }
itp-ocall-api = { workspace = true }
itp-sgx-crypto = { workspace = true }
itp-sgx-externalities = { workspace = true }
itp-stf-executor = { package = "id-itp-stf-executor", path = "../../../../core-primitives/stf-executor", default-features = false }
itp-stf-primitives = { workspace = true }
itp-stf-state-handler = { workspace = true }
itp-top-pool-author = { package = "id-itp-top-pool-author", path = "../../../../core-primitives/top-pool-author", default-features = false }
itp-types = { workspace = true }

frame-support = { workspace = true }
lc-data-providers = { workspace = true }
lc-dynamic-assertion = { workspace = true }
lc-native-task-sender = { workspace = true }
litentry-macros = { workspace = true }
litentry-primitives = { workspace = true }

[features]
default = ["std"]
sgx = [
"futures_sgx",
"sgx_tstd",
"ita-stf/sgx",
"itp-top-pool-author/sgx",
"sp-core/full_crypto",
"litentry-primitives/sgx",
"itp-node-api/sgx",
"itp-extrinsics-factory/sgx",
"lc-native-task-sender/sgx",
]
std = [
"futures",
"log/std",
"ita-stf/std",
"itp-types/std",
"itp-top-pool-author/std",
"itp-stf-primitives/std",
"itp-extrinsics-factory/std",
"sp-core/std",
"litentry-primitives/std",
"ita-sgx-runtime/std",
"frame-support/std",
"itp-node-api/std",
"lc-native-task-sender/std",
]
development = [
"litentry-macros/development",
]
Loading

0 comments on commit 5a1cb48

Please sign in to comment.