From 2ec8630c3c0556ccb00c259da68fb968a390b003 Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Thu, 5 Oct 2023 09:59:09 +0200 Subject: [PATCH 01/62] first commit --- src-tauri/src/state/mod.rs | 8 +++- src-tauri/tests/tests/get_state.rs | 42 +++++++++++++------ src-tauri/tests/tests/states/get_state.json | 12 ++++++ .../tests/tests/states/initial_state.json | 6 +++ 4 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 src-tauri/tests/tests/states/get_state.json create mode 100644 src-tauri/tests/tests/states/initial_state.json diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index f01a623e7..0d8eb7902 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -29,10 +29,13 @@ pub struct Managers { } /// The inner state of the application managed by Tauri. -#[derive(Default)] +#[derive(Default, Serialize, Deserialize)] +#[serde(default)] pub struct AppState { + #[serde(skip)] pub managers: tauri::async_runtime::Mutex, pub active_profile: Mutex>, + #[serde(skip)] pub active_connection_request: Mutex>, pub locale: Mutex, pub credentials: Mutex>, @@ -45,6 +48,7 @@ pub struct AppState { /// A representation of the current state which is used for serialization. #[derive(Clone, Debug, Deserialize, Serialize, TS, Default, PartialEq)] #[ts(export)] +#[serde(default)] pub struct TransferState { pub active_profile: Option, pub locale: Locale, @@ -83,6 +87,7 @@ pub enum Locale { /// A profile of the current user. #[derive(Clone, Serialize, Debug, Deserialize, TS, PartialEq, Default)] #[ts(export)] +#[serde(default)] pub struct Profile { pub name: String, pub picture: Option, @@ -92,6 +97,7 @@ pub struct Profile { #[derive(Clone, Serialize, Debug, Deserialize, TS, PartialEq, Default)] #[ts(export)] +#[serde(default)] pub struct Connection { pub client_name: String, pub url: String, diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index 0e3e7b779..7d0ddd011 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -8,7 +8,33 @@ use identity_wallet::state::{ actions::{Action, ActionType}, AppState, TransferState, }; +use serde::de::DeserializeOwned; use serde_json::json; +use std::fs::File; +use std::path::Path; + +fn json_example(path: &str) -> T +where + T: DeserializeOwned, +{ + let file_path = Path::new(path); + let file = File::open(file_path).expect("file does not exist"); + serde_json::from_reader::<_, T>(file).expect("could not parse json") +} + +#[tokio::test] +#[serial_test::serial] +async fn pretty_print_test() { + let t_state = TransferState { + current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { + r#type: CurrentUserPromptType::Redirect, + target: "welcome".to_string(), + })), + ..TransferState::default() + }; + let s = serde_json::to_string_pretty(&t_state).unwrap(); + println!("{}", s); +} #[tokio::test] #[serial_test::serial] @@ -16,6 +42,7 @@ async fn test_get_state_create_new() { setup_state_file(); setup_stronghold(); + let transstate2 = json_example::("tests/tests/states/get_state.json"); assert_state_update( // Initial state. AppState::default(), @@ -46,19 +73,8 @@ async fn test_get_state_create_new() { ..TransferState::default() }), // The profile was created, so the user is redirected to the profile page. - Some(TransferState { - active_profile: Some(Profile { - name: "Ferris Crabman".to_string(), - picture: Some("🦀".to_string()), - theme: Some("system".to_string()), - primary_did: "did:example:placeholder".to_string(), - }), - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }), + Some(transstate2 + ), ], ) .await; diff --git a/src-tauri/tests/tests/states/get_state.json b/src-tauri/tests/tests/states/get_state.json new file mode 100644 index 000000000..6079ac638 --- /dev/null +++ b/src-tauri/tests/tests/states/get_state.json @@ -0,0 +1,12 @@ +{ + "active_profile": { + "name": "Ferris Crabman", + "picture": "🦀", + "theme": "system", + "primary_did": "did:example:placeholder" + }, + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/states/initial_state.json b/src-tauri/tests/tests/states/initial_state.json new file mode 100644 index 000000000..076b89bfc --- /dev/null +++ b/src-tauri/tests/tests/states/initial_state.json @@ -0,0 +1,6 @@ +{ + "current_user_prompt": { + "type": "redirect", + "target": "welcome" + } +} \ No newline at end of file From 25b09afe9b3bc5c1c9ba78c2c27d6f651bffee38 Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Fri, 6 Oct 2023 13:53:08 +0200 Subject: [PATCH 02/62] json files added for Transfer and actions, Appstate is problematic --- src-tauri/.snapshot | Bin 0 -> 556 bytes src-tauri/tests/common/mod.rs | 12 ++ .../actions/handle_oid4vp.json | 0 .../actions/handle_siopv2.json | 0 .../actions/read_cred.json | 0 .../states/handle_oid4vp.json | 0 .../states/handle_siopv2.json | 0 .../states/read_cred.json | 0 .../actions/create_new1.json | 3 + .../actions/create_new2.json | 9 ++ .../actions/unlock_storage1.json | 3 + .../actions/unlock_storage2.json | 6 + .../states/create_new1.json} | 2 +- .../states/create_new2.json} | 0 .../states/unlock_storage-app_state.json | 9 ++ .../states/unlock_storage1.json | 11 ++ .../states/unlock_storage2.json | 12 ++ .../actions/load_dev_profile.json | 3 + .../states/load_dev_profile.json | 83 ++++++++++++++ src-tauri/tests/tests/get_state.rs | 106 ++++-------------- src-tauri/tests/tests/load_dev_profile.rs | 97 +++++----------- src-tauri/tests/tests/qr_code_scanned.rs | 26 +++++ 22 files changed, 224 insertions(+), 158 deletions(-) create mode 100644 src-tauri/.snapshot create mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_oid4vp.json create mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_siopv2.json create mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/actions/read_cred.json create mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_oid4vp.json create mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_siopv2.json create mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/states/read_cred.json create mode 100644 src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json create mode 100644 src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json create mode 100644 src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json create mode 100644 src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json rename src-tauri/tests/tests/{states/initial_state.json => fixtures-get_state/states/create_new1.json} (91%) rename src-tauri/tests/tests/{states/get_state.json => fixtures-get_state/states/create_new2.json} (100%) create mode 100644 src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json create mode 100644 src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json create mode 100644 src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json create mode 100644 src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json create mode 100644 src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json diff --git a/src-tauri/.snapshot b/src-tauri/.snapshot new file mode 100644 index 0000000000000000000000000000000000000000..45441e75fd591a51501d1b6b5b2c7ec7787b3d54 GIT binary patch literal 556 zcmV+{0@M9aK~hvn0{~%XWi4fHV{&tsQT0${1H9|E` zWLj-%N^)xo^wRb4#3%_Ce{%{=IqK>`rJoYSMTo>&p2=p4=qzZ9TWDl_TcA*+=!mH+6$ zJWY^S=$}@eoQ`6Oy;IIrFPucsJ(<}ppR$V#9LAA1jmCj^de>Y@N-~5a_bk%5h2%-8 zpZZGd8He-+#M0 z^=+3wzvBpoMKY<=<}=do$h4=M!8>f*pVf)4(^Z->3$b=($c`5&25S&kDj%p3#KHo5 uwD`Z)VpOTq8BY{GxysB3BYl%I(n+TA0k+_(dYn9#220ckB%wS9YTW>_F#X~H literal 0 HcmV?d00001 diff --git a/src-tauri/tests/common/mod.rs b/src-tauri/tests/common/mod.rs index bd6e5d5ef..ef3a5ba77 100644 --- a/src-tauri/tests/common/mod.rs +++ b/src-tauri/tests/common/mod.rs @@ -8,11 +8,23 @@ use oid4vc_manager::{methods::key_method::KeySubject, ProviderManager}; use oid4vci::Wallet; use serde_json::json; use std::sync::Arc; +use serde::de::DeserializeOwned; +use std::fs::File; +use std::path::Path; pub mod assert_state_update; pub const TEST_PASSWORD: &str = "sup3rSecr3t"; +pub fn json_example(path: &str) -> T +where + T: DeserializeOwned, +{ + let file_path = Path::new(path); + let file = File::open(file_path).expect("file does not exist"); + serde_json::from_reader::<_, T>(file).expect("could not parse json") +} + pub fn test_managers( verifiable_credential_records: Vec, ) -> tauri::async_runtime::Mutex { diff --git a/src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_oid4vp.json b/src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_oid4vp.json new file mode 100644 index 000000000..e69de29bb diff --git a/src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_siopv2.json b/src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_siopv2.json new file mode 100644 index 000000000..e69de29bb diff --git a/src-tauri/tests/tests/fictures-qr_code_scanned/actions/read_cred.json b/src-tauri/tests/tests/fictures-qr_code_scanned/actions/read_cred.json new file mode 100644 index 000000000..e69de29bb diff --git a/src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_oid4vp.json b/src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_oid4vp.json new file mode 100644 index 000000000..e69de29bb diff --git a/src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_siopv2.json b/src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_siopv2.json new file mode 100644 index 000000000..e69de29bb diff --git a/src-tauri/tests/tests/fictures-qr_code_scanned/states/read_cred.json b/src-tauri/tests/tests/fictures-qr_code_scanned/states/read_cred.json new file mode 100644 index 000000000..e69de29bb diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json b/src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json new file mode 100644 index 000000000..a00784b46 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json @@ -0,0 +1,3 @@ +{ + "type": "[App] Get state" +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json b/src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json new file mode 100644 index 000000000..0010e60e3 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json @@ -0,0 +1,9 @@ +{ + "type": "[DID] Create new", + "payload": { + "name": "Ferris Crabman", + "picture": "🦀", + "theme": "system", + "password": "sup3rSecr3t" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json b/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json new file mode 100644 index 000000000..a00784b46 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json @@ -0,0 +1,3 @@ +{ + "type": "[App] Get state" +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json b/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json new file mode 100644 index 000000000..be08bc1ad --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json @@ -0,0 +1,6 @@ +{ + "type": "[Storage] Unlock", + "payload": { + "password": "sup3rSecr3t" + } + } \ No newline at end of file diff --git a/src-tauri/tests/tests/states/initial_state.json b/src-tauri/tests/tests/fixtures-get_state/states/create_new1.json similarity index 91% rename from src-tauri/tests/tests/states/initial_state.json rename to src-tauri/tests/tests/fixtures-get_state/states/create_new1.json index 076b89bfc..0d8bcd0bd 100644 --- a/src-tauri/tests/tests/states/initial_state.json +++ b/src-tauri/tests/tests/fixtures-get_state/states/create_new1.json @@ -2,5 +2,5 @@ "current_user_prompt": { "type": "redirect", "target": "welcome" - } + } } \ No newline at end of file diff --git a/src-tauri/tests/tests/states/get_state.json b/src-tauri/tests/tests/fixtures-get_state/states/create_new2.json similarity index 100% rename from src-tauri/tests/tests/states/get_state.json rename to src-tauri/tests/tests/fixtures-get_state/states/create_new2.json diff --git a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json new file mode 100644 index 000000000..355459d28 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json @@ -0,0 +1,9 @@ +{ + "managers": null, + "active_profile": { + "name": "Ferris Crabman", + "picture": "🦀", + "theme": "system", + "primary_did": "did:example:placeholder" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json new file mode 100644 index 000000000..7bb8e703d --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json @@ -0,0 +1,11 @@ +{ + "active_profile": { + "name": "Ferris Crabman", + "picture": "🦀", + "theme": "system", + "primary_did": "did:example:placeholder" + }, + "current_user_prompt": { + "type": "password-required" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json new file mode 100644 index 000000000..be8f6713a --- /dev/null +++ b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json @@ -0,0 +1,12 @@ +{ + "active_profile": { + "name": "Ferris Crabman", + "picture": "🦀", + "theme": "system", + "primary_did": "did:example:placeholder" + }, + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json b/src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json new file mode 100644 index 000000000..f1ed56ed6 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json @@ -0,0 +1,3 @@ +{ + "type": "[DEV] Load profile" +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json b/src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json new file mode 100644 index 000000000..aac627880 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json @@ -0,0 +1,83 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY" + }, + "locale": "en", + "credentials": [ + { + "id": "33653133-6636-3633-6462-356231643533", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "issuer": "http://192.168.1.127:9090/", + "issuanceDate": "2022-08-15T09:30:00Z", + "expirationDate": "2027-08-15T23:59:59Z", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "licenseClass": "Class C", + "issuedBy": "California", + "validity": "Valid" + } + }, + "metadata": { + "is_favorite": false, + "display": { + "icon": null, + "color": null, + "name": null + } + } + }, + { + "id": "37626466-3738-6437-6165-623533613665", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": "http://192.168.1.127:9090/", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } + }, + "metadata": { + "is_favorite": false, + "display": { + "icon": null, + "color": null, + "name": null + } + } + } + ], + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index 7d0ddd011..4e4722e9f 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -1,40 +1,12 @@ use std::sync::Mutex; - use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; -use crate::common::{test_managers, TEST_PASSWORD}; -use identity_wallet::state::user_prompt::{CurrentUserPrompt, CurrentUserPromptType, PasswordRequired, Redirect}; +use crate::common::{test_managers, json_example}; use identity_wallet::state::Profile; use identity_wallet::state::{ - actions::{Action, ActionType}, + actions::Action, AppState, TransferState, }; -use serde::de::DeserializeOwned; -use serde_json::json; -use std::fs::File; -use std::path::Path; - -fn json_example(path: &str) -> T -where - T: DeserializeOwned, -{ - let file_path = Path::new(path); - let file = File::open(file_path).expect("file does not exist"); - serde_json::from_reader::<_, T>(file).expect("could not parse json") -} -#[tokio::test] -#[serial_test::serial] -async fn pretty_print_test() { - let t_state = TransferState { - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "welcome".to_string(), - })), - ..TransferState::default() - }; - let s = serde_json::to_string_pretty(&t_state).unwrap(); - println!("{}", s); -} #[tokio::test] #[serial_test::serial] @@ -42,39 +14,24 @@ async fn test_get_state_create_new() { setup_state_file(); setup_stronghold(); - let transstate2 = json_example::("tests/tests/states/get_state.json"); + let state1 = json_example::("tests/tests/fixtures-get_state/states/create_new1.json"); + let state2 = json_example::("tests/tests/fixtures-get_state/states/create_new2.json"); + let action1 = json_example::("tests/tests/fixtures-get_state/actions/create_new1.json"); + let action2 = json_example::("tests/tests/fixtures-get_state/actions/create_new2.json"); assert_state_update( // Initial state. AppState::default(), vec![ // Get the initial state. - Action { - r#type: ActionType::GetState, - payload: None, - }, + action1, // Create a new profile. - Action { - r#type: ActionType::CreateNew, - payload: Some(json!({ - "name": "Ferris Crabman", - "picture": "🦀", - "theme": "system", - "password": TEST_PASSWORD - })), - }, + action2, ], vec![ // There is no profile yet, so the user is redirected to the welcome page. - Some(TransferState { - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "welcome".to_string(), - })), - ..TransferState::default() - }), + Some(state1), // The profile was created, so the user is redirected to the profile page. - Some(transstate2 - ), + Some(state2), ], ) .await; @@ -86,6 +43,12 @@ async fn test_get_state_unlock_storage() { setup_state_file(); setup_stronghold(); + +// let appstate = json_example::("tests/tests/fixtures-get_state/states/unlock_storage-app_state.json"); + let state1 = json_example::("tests/tests/fixtures-get_state/states/unlock_storage1.json"); + let state2 = json_example::("tests/tests/fixtures-get_state/states/unlock_storage2.json"); + let action1 = json_example::("tests/tests/fixtures-get_state/actions/unlock_storage1.json"); + let action2 = json_example::("tests/tests/fixtures-get_state/actions/unlock_storage2.json"); assert_state_update( // Initial state. AppState { @@ -100,44 +63,15 @@ async fn test_get_state_unlock_storage() { }, vec![ // Get the initial state. - Action { - r#type: ActionType::GetState, - payload: None, - }, + action1, // Unlock the storage. - Action { - r#type: ActionType::UnlockStorage, - payload: Some(json!({ "password": TEST_PASSWORD })), - }, + action2 ], vec![ // The storage is locked, so the user is prompted to unlock it. - Some(TransferState { - active_profile: Some(Profile { - name: "Ferris Crabman".to_string(), - picture: Some("🦀".to_string()), - theme: Some("system".to_string()), - primary_did: "did:example:placeholder".to_string(), - }), - current_user_prompt: Some(CurrentUserPrompt::PasswordRequired(PasswordRequired { - r#type: CurrentUserPromptType::PasswordRequired, - })), - ..TransferState::default() - }), + Some(state1), // The storage is unlocked, so the user is redirected to the profile page. - Some(TransferState { - active_profile: Some(Profile { - name: "Ferris Crabman".to_string(), - picture: Some("🦀".to_string()), - theme: Some("system".to_string()), - primary_did: "did:example:placeholder".to_string(), - }), - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }), + Some(state2), ], ) .await; diff --git a/src-tauri/tests/tests/load_dev_profile.rs b/src-tauri/tests/tests/load_dev_profile.rs index 4f1e5b368..a492c1090 100644 --- a/src-tauri/tests/tests/load_dev_profile.rs +++ b/src-tauri/tests/tests/load_dev_profile.rs @@ -1,9 +1,8 @@ use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; +use crate::common::json_example; use identity_wallet::state::reducers::load_dev_profile::{DRIVERS_LICENSE_CREDENTIAL, PERSONAL_INFORMATION}; -use identity_wallet::state::user_prompt::{CurrentUserPrompt, CurrentUserPromptType, Redirect}; -use identity_wallet::state::Profile; use identity_wallet::state::{ - actions::{Action, ActionType}, + actions::Action, AppState, TransferState, }; @@ -13,35 +12,21 @@ async fn test_load_dev_profile() { setup_state_file(); setup_stronghold(); - let personal_information = PERSONAL_INFORMATION.clone().display_credential; - let drivers_license_credential = DRIVERS_LICENSE_CREDENTIAL.clone().display_credential; + // let personal_information = PERSONAL_INFORMATION.clone().display_credential; + // let drivers_license_credential = DRIVERS_LICENSE_CREDENTIAL.clone().display_credential; - let credentials = { - let mut credentials = vec![personal_information, drivers_license_credential]; - credentials.sort_by(|a, b| a.id.cmp(&b.id)); - credentials - }; + // let credentials = { + // let mut credentials = vec![personal_information, drivers_license_credential]; + // credentials.sort_by(|a, b| a.id.cmp(&b.id)); + // credentials + // }; + let state = json_example::("tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json"); + let action = json_example::("tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json"); assert_state_update( AppState::default(), - vec![Action { - r#type: ActionType::LoadDevProfile, - payload: None, - }], - vec![Some(TransferState { - active_profile: Some(Profile { - name: "Ferris".to_string(), - picture: Some("🦀".to_string()), - theme: Some("system".to_string()), - primary_did: "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY".to_string(), - }), - credentials, - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - })], + vec![action], + vec![Some(state)], ) .await; } @@ -52,58 +37,28 @@ async fn test_load_dev_profile_twice() { setup_state_file(); setup_stronghold(); - let personal_information = PERSONAL_INFORMATION.clone().display_credential; - let drivers_license_credential = DRIVERS_LICENSE_CREDENTIAL.clone().display_credential; + // let personal_information = PERSONAL_INFORMATION.clone().display_credential; + // let drivers_license_credential = DRIVERS_LICENSE_CREDENTIAL.clone().display_credential; - let credentials = { - let mut credentials = vec![personal_information, drivers_license_credential]; - credentials.sort_by(|a, b| a.id.cmp(&b.id)); - credentials - }; + // let credentials = { + // let mut credentials = vec![personal_information, drivers_license_credential]; + // credentials.sort_by(|a, b| a.id.cmp(&b.id)); + // credentials + // }; + let state = json_example::("tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json"); + let action = json_example::("tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json"); assert_state_update( AppState::default(), vec![ // Load the profile twice. - Action { - r#type: ActionType::LoadDevProfile, - payload: None, - }, - Action { - r#type: ActionType::LoadDevProfile, - payload: None, - }, + action.clone(), + action ], vec![ // Each time the dev profile is loaded, the state should be the same. - Some(TransferState { - active_profile: Some(Profile { - name: "Ferris".to_string(), - picture: None, - theme: None, - primary_did: "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY".to_string(), - }), - credentials: credentials.clone(), - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }), - Some(TransferState { - active_profile: Some(Profile { - name: "Ferris".to_string(), - picture: None, - theme: None, - primary_did: "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY".to_string(), - }), - credentials, - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }), + Some(state.clone()), + Some(state), ], ) .await; diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index e6701b228..e2353eae0 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -2,6 +2,8 @@ use crate::common::{ assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}, test_managers, }; +use crate::common::json_example; +use identity_wallet::state::reducers::load_dev_profile::{DRIVERS_LICENSE_CREDENTIAL, PERSONAL_INFORMATION}; use identity_wallet::{ state::{ actions::{Action, ActionType}, @@ -23,6 +25,26 @@ use oid4vci::{ use serde_json::json; use std::sync::Mutex; + +#[tokio::test] +#[serial_test::serial] +async fn pretty_print_test() { +// let test = json_example::("tests/tests/actions/get_state.json"); + + let test = Action { + r#type: ActionType::QrCodeScanned, + payload: Some(json!({ + "form_urlencoded": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22http%3A%2F%2F192.168.1.127%3A9090%2F%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22jwt_vc_json%22%2C%22credential_definition%22%3A%7B%22type%22%3A%5B%22VerifiableCredential%22%2C%22PersonalInformation%22%5D%7D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%220YI5DXtuCltKyNa5%22%2C%22user_pin_required%22%3Afalse%7D%7D%7D" + }))}; + + let s = serde_json::to_string_pretty(&test).unwrap(); + println!("{}", s); +// let ds = serde_json::from_str::(&s).unwrap(); +// println!("{:#?}", ds); +// let dss = json_example::("tests/tests/actions/get_state.json"); +// println!("{:#?}", dss); +} + #[tokio::test] #[serial_test::serial] async fn test_qr_code_scanned_read_credential_offer() { @@ -47,6 +69,10 @@ async fn test_qr_code_scanned_read_credential_offer() { let credential_issuer: url::Url = "http://192.168.1.127:9090".parse().unwrap(); + let state1 = json_example::("tests/tests/fixtures-get_state/states/create_new1.json"); + let state2 = json_example::("tests/tests/fixtures-get_state/states/create_new2.json"); + let action1 = json_example::("tests/tests/fixtures-get_state/actions/create_new1.json"); + let action2 = json_example::("tests/tests/fixtures-get_state/actions/create_new2.json"); assert_state_update( // Initial state. AppState { From 7f1e9e143cddd2d065771ae3a0d0dba653282118 Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Fri, 6 Oct 2023 17:13:17 +0200 Subject: [PATCH 03/62] json files added until handle_siopv2 --- src-tauri/.snapshot | Bin 556 -> 556 bytes .../actions/handle_oid4vp.json | 0 .../actions/handle_siopv2.json | 0 .../actions/read_cred.json | 0 .../states/handle_oid4vp.json | 0 .../states/handle_siopv2.json | 0 .../states/read_cred.json | 0 .../actions/handle_oid4vp.json | 3 + .../actions/handle_siopv2_1.json | 6 + .../actions/handle_siopv2_2.json | 3 + .../actions/read_cred.json | 6 + .../states/handle_oid4vp.json | 3 + .../states/handle_siopv2_1.json | 15 +++ .../states/handle_siopv2_2.json | 3 + .../states/read_cred.json | 33 ++++++ src-tauri/tests/tests/qr_code_scanned.rs | 105 +++++++----------- 16 files changed, 114 insertions(+), 63 deletions(-) delete mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_oid4vp.json delete mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/actions/handle_siopv2.json delete mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/actions/read_cred.json delete mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_oid4vp.json delete mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/states/handle_siopv2.json delete mode 100644 src-tauri/tests/tests/fictures-qr_code_scanned/states/read_cred.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/read_cred.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/read_cred.json diff --git a/src-tauri/.snapshot b/src-tauri/.snapshot index 45441e75fd591a51501d1b6b5b2c7ec7787b3d54..6c1d5f219b7f285c70195402b77c62433453c6f2 100644 GIT binary patch delta 528 zcmV+r0`L8-1gr#*Cx29KcQ#39Hco3qWpH9tcx!lKVRu1MATclsWKCj5Nh>#SVOm0Z zWJfedtTVsT?MP)11#EiEk|Pf}w!RXA*Abx>w`GHhgO za5HT%O?5&!Gfz!9Pj5?aD^OxKb4z1PYc){{C+8@*S~$_K1b-+)+!6(GG?AWniG9B& zoI6jOF4zv?!%^AmqPIhU&iYG9V!~-Ut8rq=w`SJpom?I&@t8RWXsoi%zQMH-2 z?W>kCoaih|E%B)NO+BET+6nyobDy1H>$u$a2;dw)0_)3wk-P-Mz{k5u`zpLxsZ^Ze zMqfh?#|Va4mVdf$k=mET<5ES0j?qQk7#|D2?A6_viLHA!*YjnyxfMbUA?_Q<1fH4g zwapqTLj<6=hu@F4!4{JMHt1-;%k)wh`Ex}8DdY?_26CMY#+8+>JyHagrNW8c zymoaFNh~a?+F_=^xaGI)l3IKC_w9(LVULdc96S~0sYQd z%Ry-iZq;XumpQ$;WkegI#({K{f~HA9&@pJfT#xgjPZ>Oa{)##G*UC8TZtgUDGV-`-aRc=m{r&kqB-Wm+=OJmVTvtyvlzC#% Shi_`g;0aw0DY%vve*9r8Aoo=O delta 528 zcmV+r0`L8-1gr#*Cx1t6I7oL=QF=%;ayB$mcXl#vQ)O3CATclsLQ_UEL}E5HQ*K93 zO=Nj)YGQVIY%e!4Y*bHSb#Qb?T3JpvS~GP`NK91tsQT0${1H9|E`WLj-%N^)xo^wRb4#3%_Ce}8idO*!i6bQO@;0c&sM zX||(icgvxZ0N-~v2BP9eTpgx#`pQ-l1>v*8k8lov$Nl1n{7nWG@)5kGF#d_U9ULfe zHoszGJI$;)J=ua@f-;t|D@N*|N1}+PJXs z)bJVwn5L5gOn(UGk3j#X7hFO=!$Mem-YU$^=nD!DP(aIU|H-oW`w;9RlE$3VqqCk^ z5v1rG&I`X3pjIj~>E0o$l`)n7=)pWqkXPuRR-T-WVv4;}&Q&j*M9@8%*)5;4iwqpb zkvEOTfp~h?TuDkYgd_JX(zu1>NvWUuO6(hv;Azukr+@ps^j2^J7;djJ`+G+qL+}aA z;X?sTnisUHROEXf4e&MZI?g4;|PXDGO5$%Gt%$Kw5OZFJ8avZ)rqgu zRhlvjv36z1ju$BgYY("tests/tests/actions/get_state.json"); - let test = Action { - r#type: ActionType::QrCodeScanned, - payload: Some(json!({ - "form_urlencoded": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22http%3A%2F%2F192.168.1.127%3A9090%2F%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22jwt_vc_json%22%2C%22credential_definition%22%3A%7B%22type%22%3A%5B%22VerifiableCredential%22%2C%22PersonalInformation%22%5D%7D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%220YI5DXtuCltKyNa5%22%2C%22user_pin_required%22%3Afalse%7D%7D%7D" - }))}; + let managers = test_managers(vec![]); + let active_profile = Some(Profile { + name: "Ferris".to_string(), + picture: Some("🦀".to_string()), + theme: Some("system".to_string()), + primary_did: managers + .lock() + .await + .identity_manager + .as_ref() + .unwrap() + .subject + .identifier() + .unwrap(), + }); + + let test = TransferState { + active_profile: active_profile.clone(), + current_user_prompt: Some(CurrentUserPrompt::AcceptConnection(AcceptConnection { + r#type: CurrentUserPromptType::AcceptConnection, + client_name: "example.com".to_string(), + logo_uri: None, + redirect_uri: "https://example.com/".to_string(), + previously_connected: false, + })), + ..TransferState::default() + }; let s = serde_json::to_string_pretty(&test).unwrap(); println!("{}", s); -// let ds = serde_json::from_str::(&s).unwrap(); -// println!("{:#?}", ds); -// let dss = json_example::("tests/tests/actions/get_state.json"); -// println!("{:#?}", dss); + let ds = serde_json::from_str::(&s).unwrap(); + println!("{:#?}", ds); + let dss = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json"); + println!("{:#?}", dss); } #[tokio::test] @@ -67,12 +89,10 @@ async fn test_qr_code_scanned_read_credential_offer() { .unwrap(), }); - let credential_issuer: url::Url = "http://192.168.1.127:9090".parse().unwrap(); +// let credential_issuer: url::Url = "http://192.168.1.127:9090".parse().unwrap(); - let state1 = json_example::("tests/tests/fixtures-get_state/states/create_new1.json"); - let state2 = json_example::("tests/tests/fixtures-get_state/states/create_new2.json"); - let action1 = json_example::("tests/tests/fixtures-get_state/actions/create_new1.json"); - let action2 = json_example::("tests/tests/fixtures-get_state/actions/create_new2.json"); + let state = json_example::("tests/tests/fixtures-qr_code_scanned/states/read_cred.json"); + let action = json_example::("tests/tests/fixtures-qr_code_scanned/actions/read_cred.json"); assert_state_update( // Initial state. AppState { @@ -81,46 +101,9 @@ async fn test_qr_code_scanned_read_credential_offer() { ..AppState::default() }, // A QR code is scanned containing a credential offer. - vec![Action { - r#type: ActionType::QrCodeScanned, - payload: Some(json!({ - "form_urlencoded": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22http%3A%2F%2F192.168.1.127%3A9090%2F%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22jwt_vc_json%22%2C%22credential_definition%22%3A%7B%22type%22%3A%5B%22VerifiableCredential%22%2C%22PersonalInformation%22%5D%7D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%220YI5DXtuCltKyNa5%22%2C%22user_pin_required%22%3Afalse%7D%7D%7D" - })), - }], + vec![action], // The state is updated with a new user prompt containing the credential offer. - vec![Some(TransferState { - active_profile, - current_user_prompt: Some(CurrentUserPrompt::CredentialOffer(CredentialOfferPrompt { - r#type: CurrentUserPromptType::CredentialOffer, - issuer_name: credential_issuer.to_string(), - logo_uri: None, - credential_offer: serde_json::to_value(&CredentialOffer { - credential_issuer, - credentials: vec![CredentialsObject::ByValue( - CredentialFormats::::JwtVcJson(Parameters { - format: JwtVcJson, - parameters: ( - jwt_vc_json::CredentialDefinition { - type_: vec!["VerifiableCredential".to_string(), "PersonalInformation".to_string()], - credential_subject: None, - }, - None, - ) - .into(), - }), - )], - grants: Some(Grants { - authorization_code: None, - pre_authorized_code: Some(PreAuthorizedCode { - pre_authorized_code: "0YI5DXtuCltKyNa5".to_string(), - ..PreAuthorizedCode::default() - }), - }), - }) - .unwrap(), - })), - ..TransferState::default() - })], + vec![Some(state)], ).await; } @@ -146,6 +129,10 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { .unwrap(), }); + let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json"); + //let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json"); + let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json"); + let action2 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json"); assert_state_update( // Initial state. AppState { @@ -155,16 +142,8 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { }, // A QR code was scanned containing a SIOPv2 authorization request. vec![ - Action { - r#type: ActionType::QrCodeScanned, - payload: Some(json!({ - "form_urlencoded": "siopv2://idtoken?response_type=id_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&scope=openid&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" - })), - }, - Action { - r#type: ActionType::ConnectionAccepted, - payload: None - }, + action1, + action2 ], // The state is updated with a new user prompt containing the client's metadata. vec![ From dd23ba7ac99870bef846e2112f445f1ea41769d2 Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Mon, 9 Oct 2023 17:47:20 +0200 Subject: [PATCH 04/62] bug with json recognizing struct, problem is PasswordRequired, switched order for easy fix --- src-tauri/.snapshot | Bin 556 -> 556 bytes src-tauri/src/state/user_prompt.rs | 2 +- src-tauri/tests/tests/qr_code_scanned.rs | 12 +----------- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src-tauri/.snapshot b/src-tauri/.snapshot index 6c1d5f219b7f285c70195402b77c62433453c6f2..a03cf5f683cf0d6bf1bf6abbb77a7da2751ec167 100644 GIT binary patch delta 528 zcmV+r0`L8-1gr#*Cx1{wHbHJ!cs6o%RYYe6BJa%XgOZE#fzEiEk|SaNGhOK5F4F>PmZYeY9p zYIZnbb8kXJXJa#Tb7fjHK`}E~aZfgQQ8RZ6C*WfXGtbl^Ab&z3hJe?iouOA*1!F?B zZH?^?*(VepHc4)17t;gz{zrT$Z2JC6AR2{oQYTWgN6s>lADn zpDv$qvic!8z)5-FzS0e`BcdXI(qN7&{|&c&G<2+UsF*;q$%ewY#G4x`^5!kR2kOHYMb^wtkphXxp zlyYFfO_F|Yv+@<9+vAf@LaQ{`?=xo!9r#&;%zS#y=;UX3a8HWM-O39gyH)GJxKezU SZ5O%ElL_wn)ejotn6Wj9Wblmu delta 528 zcmV+r0`L8-1gr#*Cx29KcQ#39Hco3qWpH9tcx!lKVRu1MATclsWKCj5Nh>#SVOm0Z zWJfedtTVsT?MP)11#EiEk|Pf}w!RXA*Abx>w`GHhgO za5HT%O?5&!Gfz!9Pj5?aD^OxKb4z1PYc){{C+8@*S~$_K1b-+)+!6(GG?AWniG9B& zoI6jOF4zv?!%^AmqPIhU&iYG9V!~-Ut8rq=w`SJpom?I&@t8RWXsoi%zQMH-2 z?W>kCoaih|E%B)NO+BET+6nyobDy1H>$u$a2;dw)0_)3wk-P-Mz{k5u`zpLxsZ^Ze zMqfh?#|Va4mVdf$k=mET<5ES0j?qQk7#|D2?A6_viLHA!*YjnyxfMbUA?_Q<1fH4g zwapqTLj<6=hu@F4!4{JMHt1-;%k)wh`Ex}8DdY?_26CMY#+8+>JyHagrNW8c zymoaFNh~a?+F_=^xaGI)l3IKC_w9(LVULdc96S~0sYQd z%Ry-iZq;XumpQ$;WkegI#({K{f~HA9&@pJfT#xgjPZ>Oa{)##G*UC8TZtgUDGV-`-aRc=m{r&kqB-Wm+=OJmVTvtyvlzC#% Shi_`g;0aw0DY%vve*9r8Aoo=O diff --git a/src-tauri/src/state/user_prompt.rs b/src-tauri/src/state/user_prompt.rs index a50b50492..00b1244df 100644 --- a/src-tauri/src/state/user_prompt.rs +++ b/src-tauri/src/state/user_prompt.rs @@ -73,9 +73,9 @@ pub enum CurrentUserPrompt { Warning(Warning), Selection(Selection), CredentialOffer(CredentialOffer), - PasswordRequired(PasswordRequired), AcceptConnection(AcceptConnection), ShareCredentials(ShareCredentials), + PasswordRequired(PasswordRequired), } #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index a864f956f..9a285b363 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -147,17 +147,7 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { ], // The state is updated with a new user prompt containing the client's metadata. vec![ - Some(TransferState { - active_profile: active_profile.clone(), - current_user_prompt: Some(CurrentUserPrompt::AcceptConnection(AcceptConnection { - r#type: CurrentUserPromptType::AcceptConnection, - client_name: "example.com".to_string(), - logo_uri: None, - redirect_uri: "https://example.com/".to_string(), - previously_connected: false, - })), - ..TransferState::default() - }), + Some(state1), Some(TransferState { active_profile, current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { From 8b55bd6272d4a84a507ecd36504ad7a72f5e743d Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Wed, 11 Oct 2023 12:54:29 +0200 Subject: [PATCH 05/62] json files finished for actions and transferstates --- src-tauri/.snapshot | Bin 556 -> 2038 bytes src-tauri/src/state/user_prompt.rs | 9 +- .../actions/handle_oid4vp.json | 3 - .../actions/handle_oid4vp_1.json | 6 ++ .../actions/handle_oid4vp_2.json | 8 ++ .../states/handle_oid4vp.json | 3 - .../states/handle_oid4vp_1.json | 52 +++++++++++ .../states/handle_oid4vp_2.json | 48 ++++++++++ .../states/handle_siopv2_2.json | 13 ++- src-tauri/tests/tests/qr_code_scanned.rs | 82 ++++++------------ 10 files changed, 161 insertions(+), 63 deletions(-) delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json create mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json diff --git a/src-tauri/.snapshot b/src-tauri/.snapshot index a03cf5f683cf0d6bf1bf6abbb77a7da2751ec167..519cb9e562c0a9202e8e070796fe1e4115ad7fa5 100644 GIT binary patch delta 2021 zcmV)|Z zcWp~+aAiqvLq#}QK}1S&N@y{7R#s9>d0ABo??k5Q6Z%O6XMaX^K)R-K3j(!eG&3z zBR4tSk}19IWq*>RY8naX&ipRFjdBAOs$&m>YLlERa4c_n5zcACK`DwaVo1I*iKcel zkU?|4U{#+qNW>7fb|h2GND#k?i2SQtgP?l0nuBbCmLiTsZXLBAfpWusqV(I2OcI22 zybAyCZq$Q|45MZ~9J1_ctfAmX)pMVXzcPayjHE9rpnpq)%L@{Y22lw`3m%GsEmkz>X2iIYo=^|mJbIVDmvpP>!Oh$pwWx)XDWD~ z3Ssu+<$s10e>hb(^HX1H1%lf&sgFupyBlFkqd6Jo3nq>2wV(sC9CcU`Fy`w5F!k}f zYe2Rzvryax=oKiW+azfyTGG^7o<#&MkyCGjO}F~=^E)r; zp#nb5I+46(PYnX|;xkipJIK=2F9}&I5{SOIU4Pj%=Q4!;(cy91!BHV5`z?<>TzmrY zU#X|JZa3aKrc+|K*LuP9Yc2Ms99|TT${0Ko%=W-ea0Y~ZfvVN&6uUuYYb%Z3(vdw< zBuV*Y&>b(@oDO9oR6}9o5#%BGO0mQA*!4*slVYjOv87+t4O|6#T+QAc>~simlYua~ zDu48wIL4D+wppi(vrXUeD+?=(xwQTr1hbBryb7WthQ-OM?HbUi^I;T?IMq&tF)!T22BfJy7T_1JyQC_ zZ@A*2^D{st-J>*{X8Dz$N&#Z5oEU)Ke}4*T{pdZZgOj1*oI~xJ>U!~6pyG~DXL}hY zJD55ob!v!(8;DzErbUqe%)epamZ7QNhI6}xlW`DHR0M)DSD-~qAN-d#lS4>tznq;D z=VJU=&gI9z4PtwRhakCXl7)tHQ>QLNWD%kA8P}aUt&i43=QGc1y&W6UZg)$X!GF*N zaLd|Sz!h3-bqbpuiT=;zhsV6bu)!Oll{D)|1TdigHBhfY-HZ4x6muFyBvHo|q|1nJ=Fi4DexZR24mVJzRad(TUl`jT@Y2vh&Qn$huZj zUeSIChxOg=ffkyF(gp4Uc41LOVSlJx>^wb7mgTpH?GIsh3Wdkko^@do^Ia^(YQL?t znB8DA-`fI&w@H4a6IX?s&vwtUf2!i&Q0-92dG+JiAy=MnS>eOC5E6t{m}&eTg*P&1 z>y~5TUmQi@GM{ljo~!#-F|LHK_<(58Hy#Vmz~`+G36rTzipFPqV88?;pnob+gD-`S zVz&JA_-fSO&M4EoLSuIcaQ78HVljntrZ{|f9;k%lR=l@UH#ENBqY6)ojW-(OM3bDB zC_+(Om7Jq;$vAuh^^a?0ywCNQ33drqa^T3MTqewOMVJ~;MFO_^Il~HN74-J}=W;bg zJ=V420laW69xpLJzJq%pfrjkr-{~S}7 zd5Mq-iZwt18;6sDWJ5ZWS~`tiwfl-b6SKbAMPw9~k#Y>%G$9 zDmo9K0%NSy>b*kpSVp)H8_%a*+4%|&vNXAUpHLd;X&8L|zn4%8bsjn6T~$3Q21<9> z5|lBm$-RV3)H;awHJ|pXCXqBPrDRlT4pMJo^jKtp3dEwB&<0$HZE1e}CDEJZEM{Y? zS)s~BwxOw4rQkY2$_aTJPuc0eF&vr=j8j^Ya+m}{B15k86nw@E(EbP+*dZ{765=DQVob}4y-@m zza6>ss>$;u?J)v4IZyP7n`+fwLZncXxLR@paU$v5aX`$Dgny|uV;BqtkpND&hqH*m zmU+1?EkRsOA$enms)S*}Gi4SG$C&S&EB$c(qwP!bzbc5|zhYt!P10IWW}nhVhJou1 zCA^uy+{(_Z;l4k;Zl1CU0?S>;smLQ>%WaqPkxG7p9;=hD7nvJ$ozjJ9MM69QN?U}t z8*gw%e>ZgRyIy7meQO7VvdDI;aNw0G>XiQ4t_JjxAlu$+TOp>9w!?h-QwPQabrT58 z#M{m^PHH#EtP=~TL5blLF+fYiH831#HbMZzY)owu={5!VkR?k7-enm+JPsqG(O=Wv Dgde~X delta 528 zcmV+r0`L9y53B@`Cx1{wHbHJ!cs6o%RYYe6BJa%XgOZE#fzEiEk|SaNGhOK5F4F>PmZYeY9p zYIZnbb8kXJXJa#Tb7fjHK`}E~aZfgQQ8RZ6C*WfXGtbl^Ab&z3hJe?iouOA*1!F?B zZH?^?*(VepHc4)17t;gz{zrT$Z2JC6AR2{oQYTWgN6s>lADn zpDv$qvic!8z)5-FzS0e`BcdXI(qN7&{|&c&G<2+UsF*;q$%ewY#G4x`^5!kR2kOHYMb^wtkphXxp zlyYFfO_F|Yv+@<9+vAf@LaQ{`?=xo!9r#&;%zS#y=;UX3a8HWM-O39gyH)GJxKezU SZ5O%ElL_wn)ejotn6WiDxbWft diff --git a/src-tauri/src/state/user_prompt.rs b/src-tauri/src/state/user_prompt.rs index 00b1244df..4a24e2508 100644 --- a/src-tauri/src/state/user_prompt.rs +++ b/src-tauri/src/state/user_prompt.rs @@ -9,6 +9,7 @@ use ts_rs::TS; #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/Redirect.ts")] +#[serde(deny_unknown_fields)] pub struct Redirect { pub r#type: CurrentUserPromptType, pub target: String, @@ -16,6 +17,7 @@ pub struct Redirect { #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/Warning.ts")] +#[serde(deny_unknown_fields)] pub struct Warning { pub r#type: CurrentUserPromptType, pub message: String, @@ -23,6 +25,7 @@ pub struct Warning { #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/Selection.ts")] +#[serde(deny_unknown_fields)] pub struct Selection { pub r#type: CurrentUserPromptType, /// An option is in the form: (, ) @@ -32,6 +35,7 @@ pub struct Selection { #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/CredentialOffer.ts")] +#[serde(deny_unknown_fields)] pub struct CredentialOffer { pub r#type: CurrentUserPromptType, pub issuer_name: String, @@ -42,12 +46,14 @@ pub struct CredentialOffer { #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/PasswordRequired.ts")] +#[serde(deny_unknown_fields)] pub struct PasswordRequired { pub r#type: CurrentUserPromptType, } #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/AcceptConnection.ts")] +#[serde(deny_unknown_fields)] pub struct AcceptConnection { pub r#type: CurrentUserPromptType, pub client_name: String, @@ -58,6 +64,7 @@ pub struct AcceptConnection { #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] #[ts(export, export_to = "bindings/user-prompt/ShareCredentials.ts")] +#[serde(deny_unknown_fields)] pub struct ShareCredentials { pub r#type: CurrentUserPromptType, pub client_name: String, @@ -69,13 +76,13 @@ pub struct ShareCredentials { #[serde(untagged)] #[ts(export, export_to = "bindings/user-prompt/CurrentUserPrompt.ts")] pub enum CurrentUserPrompt { + PasswordRequired(PasswordRequired), Redirect(Redirect), Warning(Warning), Selection(Selection), CredentialOffer(CredentialOffer), AcceptConnection(AcceptConnection), ShareCredentials(ShareCredentials), - PasswordRequired(PasswordRequired), } #[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp.json deleted file mode 100644 index 544b7b4dd..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json new file mode 100644 index 000000000..49935070e --- /dev/null +++ b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json @@ -0,0 +1,6 @@ +{ + "type": "[QR Code] Scanned", + "payload": { + "form_urlencoded": "siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.birthdate%22%5D%7D%5D%7D%7D%5D%7D&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json new file mode 100644 index 000000000..fe58b7b83 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json @@ -0,0 +1,8 @@ +{ + "type": "[Authenticate] Credentials selected", + "payload": { + "credential_uuids": [ + "37626466-3738-6437-6165-623533613665" + ] + } + } \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp.json deleted file mode 100644 index 544b7b4dd..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json new file mode 100644 index 000000000..f1dcfad3d --- /dev/null +++ b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json @@ -0,0 +1,52 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6MkpwhupMkPtjsCXXSCoudH6FnzMUpA9U8JD6sxqvZtquiu" + }, + "credentials": [ + { + "id": "37626466-3738-6437-6165-623533613665", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": "did:key:z6MktjYzf6GuQRkh1Xs9GqBHSrJUM5KuqpcJ1ucWA7rgH5ph", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } + }, + "metadata": { + "is_favorite": false, + "display": { + "icon": null, + "color": null, + "name": null + } + } + } + ], + "current_user_prompt": { + "type": "share-credentials", + "client_name": "example.com", + "logo_uri": null, + "options": [ + "37626466-3738-6437-6165-623533613665" + ] + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json new file mode 100644 index 000000000..525ad0f44 --- /dev/null +++ b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json @@ -0,0 +1,48 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6Mkj8BwSPPbJFLbky8P62NmUGQmLz7foShA7F6ZB1gUwVj4" + }, + "credentials": [ + { + "id": "37626466-3738-6437-6165-623533613665", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": "did:key:z6MktjYzf6GuQRkh1Xs9GqBHSrJUM5KuqpcJ1ucWA7rgH5ph", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } + }, + "metadata": { + "is_favorite": false, + "display": { + "icon": null, + "color": null, + "name": null + } + } + } + ], + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json index 544b7b4dd..35e1eba2b 100644 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json +++ b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json @@ -1,3 +1,12 @@ { - -} \ No newline at end of file + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6MkfS6p7mcVxMG5hVBsrgRyrwT1ap7tQK7DuiZJo3LcSf5E" + }, + "current_user_prompt": { + "type": "redirect", + "target": "me" + } + } \ No newline at end of file diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index 9a285b363..ee61672b2 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -29,9 +29,17 @@ use std::sync::Mutex; #[tokio::test] #[serial_test::serial] async fn pretty_print_test() { -// let test = json_example::("tests/tests/actions/get_state.json"); - let managers = test_managers(vec![]); + let verifiable_credential_record = VerifiableCredentialRecord::from(CredentialFormats::::JwtVcJson(Credential { + format: JwtVcJson, + credential: json!("eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RqWXpmNkd1UVJraDFYczlHcUJIU3JKVU01S3VxcGNKMXVjV0E3cmdINXBoI3o2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCIsInN1YiI6ImRpZDprZXk6ejZNa2cxWFhHVXFma2hBS1Uxa1ZkMVBtdzZVRWoxdnhpTGoxeGM5MU1CejVvd05ZIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjEiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlBlcnNvbmFsSW5mb3JtYXRpb24iXSwiaXNzdWFuY2VEYXRlIjoiMjAyMi0wMS0wMVQwMDowMDowMFoiLCJpc3N1ZXIiOiJkaWQ6a2V5Ono2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1rZzFYWEdVcWZraEFLVTFrVmQxUG13NlVFajF2eGlMajF4YzkxTUJ6NW93TlkiLCJnaXZlbk5hbWUiOiJGZXJyaXMiLCJmYW1pbHlOYW1lIjoiQ3JhYm1hbiIsImVtYWlsIjoiZmVycmlzLmNyYWJtYW5AY3JhYm1haWwuY29tIiwiYmlydGhkYXRlIjoiMTk4NS0wNS0yMSJ9fX0.ETqRaVMxFZQLN8OmngL1IPGAA2xH9Nsir9vRvJTLLBOJbnGuPdvcMQkN720MQuk9LWmsqNMBrUQegIuJ9IQLBg") + })); + + let credentials = vec![verifiable_credential_record.display_credential.clone()]; + + let uuid = verifiable_credential_record.display_credential.id.clone(); + + let managers = test_managers(vec![verifiable_credential_record]); let active_profile = Some(Profile { name: "Ferris".to_string(), picture: Some("🦀".to_string()), @@ -48,22 +56,21 @@ async fn pretty_print_test() { }); let test = TransferState { - active_profile: active_profile.clone(), - current_user_prompt: Some(CurrentUserPrompt::AcceptConnection(AcceptConnection { - r#type: CurrentUserPromptType::AcceptConnection, - client_name: "example.com".to_string(), - logo_uri: None, - redirect_uri: "https://example.com/".to_string(), - previously_connected: false, + active_profile, + credentials, + current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { + r#type: CurrentUserPromptType::Redirect, + target: "me".to_string(), })), ..TransferState::default() }; + let s = serde_json::to_string_pretty(&test).unwrap(); println!("{}", s); let ds = serde_json::from_str::(&s).unwrap(); println!("{:#?}", ds); - let dss = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json"); + let dss = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json"); println!("{:#?}", dss); } @@ -130,7 +137,7 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { }); let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json"); - //let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json"); + let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json"); let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json"); let action2 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json"); assert_state_update( @@ -148,14 +155,7 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { // The state is updated with a new user prompt containing the client's metadata. vec![ Some(state1), - Some(TransferState { - active_profile, - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }), + Some(state2), ], ).await; } @@ -173,7 +173,7 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { let credentials = vec![verifiable_credential_record.display_credential.clone()]; - let uuid = verifiable_credential_record.display_credential.id.clone(); +// let uuid = verifiable_credential_record.display_credential.id.clone(); let managers = test_managers(vec![verifiable_credential_record]); let active_profile = Some(Profile { @@ -191,6 +191,10 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { .unwrap(), }); + let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json"); + let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json"); + let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json"); + let action2 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json"); assert_state_update( // Initial state. AppState { @@ -201,43 +205,13 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { }, // A QR code was scanned containing a OID4VP authorization request. vec![ - Action { - r#type: ActionType::QrCodeScanned, - payload: Some(json!({ - "form_urlencoded": "siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.birthdate%22%5D%7D%5D%7D%7D%5D%7D&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" - })), - }, - Action { - r#type: ActionType::CredentialsSelected, - payload: Some( - json!({ - "credential_uuids": [uuid] - }) - ), - }, + action1, + action2, ], // The state is updated with a new user prompt containing the uuid's of the candidate verifiable credentials. vec![ - Some(TransferState { - active_profile: active_profile.clone(), - credentials: credentials.clone(), - current_user_prompt: Some(CurrentUserPrompt::ShareCredentials(ShareCredentials { - r#type: CurrentUserPromptType::ShareCredentials, - client_name: "example.com".to_string(), - logo_uri: None, - options: vec![uuid], - })), - ..TransferState::default() - }), - Some(TransferState { - active_profile, - credentials, - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }), + Some(state1), + Some(state2), ], ).await; } From 5be6dd0cc49e536913f049773c776e9e94812f36 Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Wed, 11 Oct 2023 13:15:52 +0200 Subject: [PATCH 06/62] added comments --- src-tauri/tests/tests/get_state.rs | 3 ++- src-tauri/tests/tests/load_dev_profile.rs | 2 ++ src-tauri/tests/tests/qr_code_scanned.rs | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index 4e4722e9f..a0908af5b 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -14,6 +14,7 @@ async fn test_get_state_create_new() { setup_state_file(); setup_stronghold(); + // Deserializing the Transferstates and Actions from the accompanying json files. let state1 = json_example::("tests/tests/fixtures-get_state/states/create_new1.json"); let state2 = json_example::("tests/tests/fixtures-get_state/states/create_new2.json"); let action1 = json_example::("tests/tests/fixtures-get_state/actions/create_new1.json"); @@ -44,7 +45,7 @@ async fn test_get_state_unlock_storage() { setup_stronghold(); -// let appstate = json_example::("tests/tests/fixtures-get_state/states/unlock_storage-app_state.json"); + // Deserializing the Transferstates and Actions from the accompanying json files. let state1 = json_example::("tests/tests/fixtures-get_state/states/unlock_storage1.json"); let state2 = json_example::("tests/tests/fixtures-get_state/states/unlock_storage2.json"); let action1 = json_example::("tests/tests/fixtures-get_state/actions/unlock_storage1.json"); diff --git a/src-tauri/tests/tests/load_dev_profile.rs b/src-tauri/tests/tests/load_dev_profile.rs index a492c1090..27b37a648 100644 --- a/src-tauri/tests/tests/load_dev_profile.rs +++ b/src-tauri/tests/tests/load_dev_profile.rs @@ -21,6 +21,7 @@ async fn test_load_dev_profile() { // credentials // }; + // Deserializing the Transferstates and Actions from the accompanying json files. let state = json_example::("tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json"); let action = json_example::("tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json"); assert_state_update( @@ -46,6 +47,7 @@ async fn test_load_dev_profile_twice() { // credentials // }; + // Deserializing the Transferstates and Actions from the accompanying json files. let state = json_example::("tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json"); let action = json_example::("tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json"); assert_state_update( diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index ee61672b2..db3a82e6e 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -29,7 +29,7 @@ use std::sync::Mutex; #[tokio::test] #[serial_test::serial] async fn pretty_print_test() { - + // A function to test the serialization and deserialization json output let verifiable_credential_record = VerifiableCredentialRecord::from(CredentialFormats::::JwtVcJson(Credential { format: JwtVcJson, credential: json!("eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RqWXpmNkd1UVJraDFYczlHcUJIU3JKVU01S3VxcGNKMXVjV0E3cmdINXBoI3o2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCIsInN1YiI6ImRpZDprZXk6ejZNa2cxWFhHVXFma2hBS1Uxa1ZkMVBtdzZVRWoxdnhpTGoxeGM5MU1CejVvd05ZIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjEiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlBlcnNvbmFsSW5mb3JtYXRpb24iXSwiaXNzdWFuY2VEYXRlIjoiMjAyMi0wMS0wMVQwMDowMDowMFoiLCJpc3N1ZXIiOiJkaWQ6a2V5Ono2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1rZzFYWEdVcWZraEFLVTFrVmQxUG13NlVFajF2eGlMajF4YzkxTUJ6NW93TlkiLCJnaXZlbk5hbWUiOiJGZXJyaXMiLCJmYW1pbHlOYW1lIjoiQ3JhYm1hbiIsImVtYWlsIjoiZmVycmlzLmNyYWJtYW5AY3JhYm1haWwuY29tIiwiYmlydGhkYXRlIjoiMTk4NS0wNS0yMSJ9fX0.ETqRaVMxFZQLN8OmngL1IPGAA2xH9Nsir9vRvJTLLBOJbnGuPdvcMQkN720MQuk9LWmsqNMBrUQegIuJ9IQLBg") @@ -98,6 +98,7 @@ async fn test_qr_code_scanned_read_credential_offer() { // let credential_issuer: url::Url = "http://192.168.1.127:9090".parse().unwrap(); + // Deserializing the Transferstates and Actions from the accompanying json files. let state = json_example::("tests/tests/fixtures-qr_code_scanned/states/read_cred.json"); let action = json_example::("tests/tests/fixtures-qr_code_scanned/actions/read_cred.json"); assert_state_update( @@ -136,6 +137,7 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { .unwrap(), }); + // Deserializing the Transferstates and Actions from the accompanying json files. let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json"); let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json"); let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json"); @@ -191,6 +193,7 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { .unwrap(), }); + // Deserializing the Transferstates and Actions from the accompanying json files. let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json"); let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json"); let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json"); From 5e55671086c9ab01d285a916472f4bd4f42ac98b Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Mon, 16 Oct 2023 15:59:53 +0200 Subject: [PATCH 07/62] resolved PR comments --- .gitignore | 1 + src-tauri/.snapshot | Bin 2038 -> 0 bytes src-tauri/src/verifiable_credential_record.rs | 3 + src-tauri/tests/common/mod.rs | 4 +- .../actions/create_new2.json | 9 -- .../actions/unlock_storage1.json | 3 - .../states/unlock_storage-app_state.json | 9 -- .../states/unlock_storage2.json | 12 -- .../states/load_dev_profile.json | 83 ------------ .../actions/handle_oid4vp_1.json | 6 - .../actions/handle_oid4vp_2.json | 8 -- .../actions/handle_siopv2_1.json | 6 - .../actions/read_cred.json | 6 - .../states/handle_oid4vp_2.json | 48 ------- .../states/handle_siopv2_2.json | 12 -- .../states/read_cred.json | 33 ----- .../actions/authenticate_connect_accept.json} | 2 +- .../actions/authenticate_cred_selected.json | 8 ++ .../tests/fixtures/actions/create_new.json | 9 ++ .../actions/dev_load_profile.json} | 2 +- .../actions/get_state.json} | 2 +- .../fixtures/actions/qr_scanned_id_token.json | 6 + .../actions/qr_scanned_openid_cred.json | 6 + .../fixtures/actions/qr_scanned_vp_token.json | 6 + .../actions/unlock_storage.json} | 4 +- .../states/active_pf_password_required.json} | 8 +- .../states/active_pf_redirect_me.json} | 2 +- .../states/no_profile_redirect_welcome.json} | 2 +- .../states/pf_accept_connect.json} | 2 +- .../fixtures/states/pf_credential_offer.json | 33 +++++ .../states/pf_with_did_redirect_me.json | 12 ++ ...driverl_and_personal_info_redirect_me.json | 67 ++++++++++ .../pf_with_person_info_redirect_me.json | 40 ++++++ .../pf_with_person_info_share_cred.json} | 10 +- src-tauri/tests/tests/get_state.rs | 35 ++--- src-tauri/tests/tests/load_dev_profile.rs | 43 ++---- src-tauri/tests/tests/qr_code_scanned.rs | 124 ++++-------------- 37 files changed, 254 insertions(+), 412 deletions(-) delete mode 100644 src-tauri/.snapshot delete mode 100644 src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json delete mode 100644 src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json delete mode 100644 src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json delete mode 100644 src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json delete mode 100644 src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/actions/read_cred.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json delete mode 100644 src-tauri/tests/tests/fixtures-qr_code_scanned/states/read_cred.json rename src-tauri/tests/tests/{fixtures-qr_code_scanned/actions/handle_siopv2_2.json => fixtures/actions/authenticate_connect_accept.json} (96%) create mode 100644 src-tauri/tests/tests/fixtures/actions/authenticate_cred_selected.json create mode 100644 src-tauri/tests/tests/fixtures/actions/create_new.json rename src-tauri/tests/tests/{fixtures-load_dev_profile/actions/load_dev_profile.json => fixtures/actions/dev_load_profile.json} (94%) rename src-tauri/tests/tests/{fixtures-get_state/actions/create_new1.json => fixtures/actions/get_state.json} (94%) create mode 100644 src-tauri/tests/tests/fixtures/actions/qr_scanned_id_token.json create mode 100644 src-tauri/tests/tests/fixtures/actions/qr_scanned_openid_cred.json create mode 100644 src-tauri/tests/tests/fixtures/actions/qr_scanned_vp_token.json rename src-tauri/tests/tests/{fixtures-get_state/actions/unlock_storage2.json => fixtures/actions/unlock_storage.json} (61%) rename src-tauri/tests/tests/{fixtures-get_state/states/unlock_storage1.json => fixtures/states/active_pf_password_required.json} (80%) rename src-tauri/tests/tests/{fixtures-get_state/states/create_new2.json => fixtures/states/active_pf_redirect_me.json} (99%) rename src-tauri/tests/tests/{fixtures-get_state/states/create_new1.json => fixtures/states/no_profile_redirect_welcome.json} (97%) rename src-tauri/tests/tests/{fixtures-qr_code_scanned/states/handle_siopv2_1.json => fixtures/states/pf_accept_connect.json} (99%) create mode 100644 src-tauri/tests/tests/fixtures/states/pf_credential_offer.json create mode 100644 src-tauri/tests/tests/fixtures/states/pf_with_did_redirect_me.json create mode 100644 src-tauri/tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json create mode 100644 src-tauri/tests/tests/fixtures/states/pf_with_person_info_redirect_me.json rename src-tauri/tests/tests/{fixtures-qr_code_scanned/states/handle_oid4vp_1.json => fixtures/states/pf_with_person_info_share_cred.json} (87%) diff --git a/.gitignore b/.gitignore index 86334568b..f00bb2059 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ vite.config.ts.timestamp-* .env .env.* !.env.example +.snapshot diff --git a/src-tauri/.snapshot b/src-tauri/.snapshot deleted file mode 100644 index 519cb9e562c0a9202e8e070796fe1e4115ad7fa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2038 zcmV)|ZcWp~+aAiqvLq#}QK}1S&N@y{7 zR#s9>d0ABo??k5Q6Z%O6XGV5Fx~6gq0<~o{c!RIe>Muj>z1N<26xaoRWsEZ}9=?TK zTz}a5KG7d?``Is2pMgYniDVyD(}68Jc@=Hef{zR~fu$)!Fizuv>v$=1E?**!1<$Ja z6e?tYRqoKGQsxuQ$aItnaNQ9=RD}02KX2A9RapxoH#yysDZTAwlA~%G3FyxJF29X( z0~M-c4})rxoGWlFZ+a2VX~ID%iZ5bFzA=fWcHNLcbG~3zpEO9s5Vm$CQ_M&Zzln(a zt6PJhdbXN_Y=M>{jzn%9wH|?T!+xUl+m1{Ugmk}sr`;78SS zpN+pVgB*;cFDjr*gUbsK=&n@}pfu`|`b*Rk%S;!3_W?5TnjP6>!^sjEfBXj=N07MS zw6>dL-1<>QW(WR2)khF+std|{)v{Ef{M2kZj}Hy}w#qa1zfQ=0W@+4|qxlN-Y^aQg zf9jB9h-;>7ewGgh9V$BGChMY+AfVBU@MkJ`p9*321Fe>hb(^HX1H1%lf&sgFup zyBlFkqd6Jo3nq>2wV(sC9CcU`Fy`w5F!k}fYe2Rzvryax=oKiW+azfyTGG^7o<#&MkyCGjO}F~=^E)r;p#nb5I+46(PYnX|;xkipJIK=2F9}&I z5{SOIUD-9~GKBuo;c?r+Q6VP#Ess51d;;-bsi(JYH{Lp?Q)0K*dcpK-E%v4yUKEbX z7(5fq_P|bX284Zqs@3WgyFq4aD~;aLkv&o*N%>{a9WUCP4rL-#Lt*0)>ifiSr$^qV-wlU}x2r;D>q-|;I8D~!3c{v8Cf zj+wj)q9caI$*S!d-tdh3nW3i|MK0W%jBvHo|q|1nJ=Fi4DexZ zR24mVJzRad(TUl`jT@Y2vh&Qn$huZjUeSIChxOg=ffkyF(gp4Uc41LOVW?c}JUvU6 z<+q3J4`Fu-g~!&Obzu_oT`a|Fzpb>G-C#4{+X95QNq(dgSB0C;cF(eZs^Z^J?NG>h z_2bwfSDtTK;lsBO5`x97W+WpK(8)tNT_lu7t1nfN0P+9t+RF z=dBM3lc`LK#%FtAzyu?pDp7+kg^psj{PXx~)Zfl1)4W1scL{L!6+U7yg>$Aje0UzH zgyUAcw^KJXzTl$@Pl}B<8skKhoR%m;QCyXrqjJeOd;;~4Yh=97^_K~D30898$fR5* z%yUJU8c;<7w)#243S|}a_Wb8^HAOw!U6)5)F*a;hOpnH=Ij&a+3^@=g!Q?zYA@ z9Fvhg`nht|J3S0s*rt+9Z2ufnmwAbh35qp90UL*tfn-BElUh2BU$y&+J`=Ob|E08S z-brIS^D4$+SjZbo3Mi}T`-L_vxhG)iE4xXzJWmd!W39<>r4TadlNmNoo<(2nc3j{V z9mv&Q0icqfBXd|p9~k#Y>%G$9Dmo9K0%NSy>b*kpSVp)H8_%a*+4%|&vNXAUpHLd; zX&8L|zn4%8bsjn6T~$3Q21<9>5|lBm$-RV3)H;awHJ|pXCXqBPrDRlT4pMJo^jKtp z3dEwB&<0$HZE1e}CDEJZEM{Y?S)s~BwxOw4rQk!*4_KLm$N9?DU z3M$PD z1hF;TS2pGr0DvJ<4Tx(FtUutt9l7+X$@3-cF#t1OY*-e zh~K|rVh>HyT2N-6(nf}X>kTEmnZVr2&aC0SKfP|AvIzpqUB{`&BVfyIm-3NHeuEyX zldl(<8+4u0g=j@WJON5ugtr@Sa7KSObnm-n1$}D=gtEwXt8n0zDe9E|+O7ulks#aN zYg-|vkha5o`cntS19cM!%*5NyG)`(a$gC3!r$LF~6EQ$b#5FJ+Xf{Fs#B5A$66rPt U`H&?`2Hs^EK0FR1qS0T|-sMulr2qf` diff --git a/src-tauri/src/verifiable_credential_record.rs b/src-tauri/src/verifiable_credential_record.rs index 44ac474fd..bf8075935 100644 --- a/src-tauri/src/verifiable_credential_record.rs +++ b/src-tauri/src/verifiable_credential_record.rs @@ -1,3 +1,5 @@ +use std::default; + use oid4vci::credential_format_profiles::{CredentialFormats, WithCredential}; use serde::{Deserialize, Serialize}; use serde_json::json; @@ -69,6 +71,7 @@ pub struct DisplayCredential { pub format: CredentialFormats<()>, #[ts(type = "object")] pub data: serde_json::Value, + #[serde(default)] pub metadata: CredentialMetadata, } diff --git a/src-tauri/tests/common/mod.rs b/src-tauri/tests/common/mod.rs index ef3a5ba77..35d15e72e 100644 --- a/src-tauri/tests/common/mod.rs +++ b/src-tauri/tests/common/mod.rs @@ -6,11 +6,11 @@ use identity_wallet::{ }; use oid4vc_manager::{methods::key_method::KeySubject, ProviderManager}; use oid4vci::Wallet; -use serde_json::json; -use std::sync::Arc; use serde::de::DeserializeOwned; +use serde_json::json; use std::fs::File; use std::path::Path; +use std::sync::Arc; pub mod assert_state_update; diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json b/src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json deleted file mode 100644 index 0010e60e3..000000000 --- a/src-tauri/tests/tests/fixtures-get_state/actions/create_new2.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "[DID] Create new", - "payload": { - "name": "Ferris Crabman", - "picture": "🦀", - "theme": "system", - "password": "sup3rSecr3t" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json b/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json deleted file mode 100644 index a00784b46..000000000 --- a/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage1.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "[App] Get state" -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json deleted file mode 100644 index 355459d28..000000000 --- a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage-app_state.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "managers": null, - "active_profile": { - "name": "Ferris Crabman", - "picture": "🦀", - "theme": "system", - "primary_did": "did:example:placeholder" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json b/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json deleted file mode 100644 index be8f6713a..000000000 --- a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage2.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "active_profile": { - "name": "Ferris Crabman", - "picture": "🦀", - "theme": "system", - "primary_did": "did:example:placeholder" - }, - "current_user_prompt": { - "type": "redirect", - "target": "me" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json b/src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json deleted file mode 100644 index aac627880..000000000 --- a/src-tauri/tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "active_profile": { - "name": "Ferris", - "picture": "🦀", - "theme": "system", - "primary_did": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY" - }, - "locale": "en", - "credentials": [ - { - "id": "33653133-6636-3633-6462-356231643533", - "issuer_name": null, - "format": { - "format": "jwt_vc_json" - }, - "data": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1" - ], - "type": [ - "VerifiableCredential", - "DriverLicenseCredential" - ], - "issuer": "http://192.168.1.127:9090/", - "issuanceDate": "2022-08-15T09:30:00Z", - "expirationDate": "2027-08-15T23:59:59Z", - "credentialSubject": { - "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", - "licenseClass": "Class C", - "issuedBy": "California", - "validity": "Valid" - } - }, - "metadata": { - "is_favorite": false, - "display": { - "icon": null, - "color": null, - "name": null - } - } - }, - { - "id": "37626466-3738-6437-6165-623533613665", - "issuer_name": null, - "format": { - "format": "jwt_vc_json" - }, - "data": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1" - ], - "type": [ - "VerifiableCredential", - "PersonalInformation" - ], - "issuanceDate": "2022-01-01T00:00:00Z", - "issuer": "http://192.168.1.127:9090/", - "credentialSubject": { - "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", - "givenName": "Ferris", - "familyName": "Crabman", - "email": "ferris.crabman@crabmail.com", - "birthdate": "1985-05-21" - } - }, - "metadata": { - "is_favorite": false, - "display": { - "icon": null, - "color": null, - "name": null - } - } - } - ], - "current_user_prompt": { - "type": "redirect", - "target": "me" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json deleted file mode 100644 index 49935070e..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "[QR Code] Scanned", - "payload": { - "form_urlencoded": "siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.birthdate%22%5D%7D%5D%7D%7D%5D%7D&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json deleted file mode 100644 index fe58b7b83..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "[Authenticate] Credentials selected", - "payload": { - "credential_uuids": [ - "37626466-3738-6437-6165-623533613665" - ] - } - } \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json deleted file mode 100644 index 395f78731..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "[QR Code] Scanned", - "payload": { - "form_urlencoded": "siopv2://idtoken?response_type=id_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&scope=openid&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/read_cred.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/read_cred.json deleted file mode 100644 index 78463b393..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/read_cred.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "[QR Code] Scanned", - "payload": { - "form_urlencoded": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22http%3A%2F%2F192.168.1.127%3A9090%2F%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22jwt_vc_json%22%2C%22credential_definition%22%3A%7B%22type%22%3A%5B%22VerifiableCredential%22%2C%22PersonalInformation%22%5D%7D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%220YI5DXtuCltKyNa5%22%2C%22user_pin_required%22%3Afalse%7D%7D%7D" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json deleted file mode 100644 index 525ad0f44..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "active_profile": { - "name": "Ferris", - "picture": "🦀", - "theme": "system", - "primary_did": "did:key:z6Mkj8BwSPPbJFLbky8P62NmUGQmLz7foShA7F6ZB1gUwVj4" - }, - "credentials": [ - { - "id": "37626466-3738-6437-6165-623533613665", - "issuer_name": null, - "format": { - "format": "jwt_vc_json" - }, - "data": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1" - ], - "type": [ - "VerifiableCredential", - "PersonalInformation" - ], - "issuanceDate": "2022-01-01T00:00:00Z", - "issuer": "did:key:z6MktjYzf6GuQRkh1Xs9GqBHSrJUM5KuqpcJ1ucWA7rgH5ph", - "credentialSubject": { - "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", - "givenName": "Ferris", - "familyName": "Crabman", - "email": "ferris.crabman@crabmail.com", - "birthdate": "1985-05-21" - } - }, - "metadata": { - "is_favorite": false, - "display": { - "icon": null, - "color": null, - "name": null - } - } - } - ], - "current_user_prompt": { - "type": "redirect", - "target": "me" - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json deleted file mode 100644 index 35e1eba2b..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "active_profile": { - "name": "Ferris", - "picture": "🦀", - "theme": "system", - "primary_did": "did:key:z6MkfS6p7mcVxMG5hVBsrgRyrwT1ap7tQK7DuiZJo3LcSf5E" - }, - "current_user_prompt": { - "type": "redirect", - "target": "me" - } - } \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/read_cred.json b/src-tauri/tests/tests/fixtures-qr_code_scanned/states/read_cred.json deleted file mode 100644 index 23822aeef..000000000 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/read_cred.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "active_profile": { - "name": "Ferris", - "picture": "🦀", - "theme": "system", - "primary_did": "did:key:z6Mkr8yRGc8hG7t26CtjSaEfWZZsEDZZ3HECsUdwVyR4NThQ" - }, - "current_user_prompt": { - "type": "credential-offer", - "issuer_name": "http://192.168.1.127:9090/", - "logo_uri": null, - "credential_offer": { - "credential_issuer": "http://192.168.1.127:9090/", - "credentials": [ - { - "format": "jwt_vc_json", - "credential_definition": { - "type": [ - "VerifiableCredential", - "PersonalInformation" - ] - } - } - ], - "grants": { - "urn:ietf:params:oauth:grant-type:pre-authorized_code": { - "pre-authorized_code": "0YI5DXtuCltKyNa5", - "user_pin_required": false - } - } - } - } -} \ No newline at end of file diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json b/src-tauri/tests/tests/fixtures/actions/authenticate_connect_accept.json similarity index 96% rename from src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json rename to src-tauri/tests/tests/fixtures/actions/authenticate_connect_accept.json index 3c21dee04..bdfb13809 100644 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json +++ b/src-tauri/tests/tests/fixtures/actions/authenticate_connect_accept.json @@ -1,3 +1,3 @@ { "type": "[Authenticate] Connection accepted" -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures/actions/authenticate_cred_selected.json b/src-tauri/tests/tests/fixtures/actions/authenticate_cred_selected.json new file mode 100644 index 000000000..3605f79e1 --- /dev/null +++ b/src-tauri/tests/tests/fixtures/actions/authenticate_cred_selected.json @@ -0,0 +1,8 @@ +{ + "type": "[Authenticate] Credentials selected", + "payload": { + "credential_uuids": [ + "37626466-3738-6437-6165-623533613665" + ] + } +} diff --git a/src-tauri/tests/tests/fixtures/actions/create_new.json b/src-tauri/tests/tests/fixtures/actions/create_new.json new file mode 100644 index 000000000..a50b4d8db --- /dev/null +++ b/src-tauri/tests/tests/fixtures/actions/create_new.json @@ -0,0 +1,9 @@ +{ + "type": "[DID] Create new", + "payload": { + "name": "Ferris Crabman", + "picture": "🦀", + "theme": "system", + "password": "sup3rSecr3t" + } +} diff --git a/src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json b/src-tauri/tests/tests/fixtures/actions/dev_load_profile.json similarity index 94% rename from src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json rename to src-tauri/tests/tests/fixtures/actions/dev_load_profile.json index f1ed56ed6..983780814 100644 --- a/src-tauri/tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json +++ b/src-tauri/tests/tests/fixtures/actions/dev_load_profile.json @@ -1,3 +1,3 @@ { "type": "[DEV] Load profile" -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json b/src-tauri/tests/tests/fixtures/actions/get_state.json similarity index 94% rename from src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json rename to src-tauri/tests/tests/fixtures/actions/get_state.json index a00784b46..e80c6fb06 100644 --- a/src-tauri/tests/tests/fixtures-get_state/actions/create_new1.json +++ b/src-tauri/tests/tests/fixtures/actions/get_state.json @@ -1,3 +1,3 @@ { "type": "[App] Get state" -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures/actions/qr_scanned_id_token.json b/src-tauri/tests/tests/fixtures/actions/qr_scanned_id_token.json new file mode 100644 index 000000000..6cdb8919b --- /dev/null +++ b/src-tauri/tests/tests/fixtures/actions/qr_scanned_id_token.json @@ -0,0 +1,6 @@ +{ + "type": "[QR Code] Scanned", + "payload": { + "form_urlencoded": "siopv2://idtoken?response_type=id_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&scope=openid&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" + } +} diff --git a/src-tauri/tests/tests/fixtures/actions/qr_scanned_openid_cred.json b/src-tauri/tests/tests/fixtures/actions/qr_scanned_openid_cred.json new file mode 100644 index 000000000..d77ae0d37 --- /dev/null +++ b/src-tauri/tests/tests/fixtures/actions/qr_scanned_openid_cred.json @@ -0,0 +1,6 @@ +{ + "type": "[QR Code] Scanned", + "payload": { + "form_urlencoded": "openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22http%3A%2F%2F192.168.1.127%3A9090%2F%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22jwt_vc_json%22%2C%22credential_definition%22%3A%7B%22type%22%3A%5B%22VerifiableCredential%22%2C%22PersonalInformation%22%5D%7D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%220YI5DXtuCltKyNa5%22%2C%22user_pin_required%22%3Afalse%7D%7D%7D" + } +} diff --git a/src-tauri/tests/tests/fixtures/actions/qr_scanned_vp_token.json b/src-tauri/tests/tests/fixtures/actions/qr_scanned_vp_token.json new file mode 100644 index 000000000..ec8a6b344 --- /dev/null +++ b/src-tauri/tests/tests/fixtures/actions/qr_scanned_vp_token.json @@ -0,0 +1,6 @@ +{ + "type": "[QR Code] Scanned", + "payload": { + "form_urlencoded": "siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.birthdate%22%5D%7D%5D%7D%7D%5D%7D&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce" + } +} diff --git a/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json b/src-tauri/tests/tests/fixtures/actions/unlock_storage.json similarity index 61% rename from src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json rename to src-tauri/tests/tests/fixtures/actions/unlock_storage.json index be08bc1ad..2ee26b56c 100644 --- a/src-tauri/tests/tests/fixtures-get_state/actions/unlock_storage2.json +++ b/src-tauri/tests/tests/fixtures/actions/unlock_storage.json @@ -1,6 +1,6 @@ { "type": "[Storage] Unlock", "payload": { - "password": "sup3rSecr3t" + "password": "sup3rSecr3t" } - } \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json b/src-tauri/tests/tests/fixtures/states/active_pf_password_required.json similarity index 80% rename from src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json rename to src-tauri/tests/tests/fixtures/states/active_pf_password_required.json index 7bb8e703d..a053f9937 100644 --- a/src-tauri/tests/tests/fixtures-get_state/states/unlock_storage1.json +++ b/src-tauri/tests/tests/fixtures/states/active_pf_password_required.json @@ -4,8 +4,8 @@ "picture": "🦀", "theme": "system", "primary_did": "did:example:placeholder" - }, - "current_user_prompt": { + }, + "current_user_prompt": { "type": "password-required" - } -} \ No newline at end of file + } +} diff --git a/src-tauri/tests/tests/fixtures-get_state/states/create_new2.json b/src-tauri/tests/tests/fixtures/states/active_pf_redirect_me.json similarity index 99% rename from src-tauri/tests/tests/fixtures-get_state/states/create_new2.json rename to src-tauri/tests/tests/fixtures/states/active_pf_redirect_me.json index 6079ac638..5ce942105 100644 --- a/src-tauri/tests/tests/fixtures-get_state/states/create_new2.json +++ b/src-tauri/tests/tests/fixtures/states/active_pf_redirect_me.json @@ -9,4 +9,4 @@ "type": "redirect", "target": "me" } -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures-get_state/states/create_new1.json b/src-tauri/tests/tests/fixtures/states/no_profile_redirect_welcome.json similarity index 97% rename from src-tauri/tests/tests/fixtures-get_state/states/create_new1.json rename to src-tauri/tests/tests/fixtures/states/no_profile_redirect_welcome.json index 0d8bcd0bd..97fa3dd5f 100644 --- a/src-tauri/tests/tests/fixtures-get_state/states/create_new1.json +++ b/src-tauri/tests/tests/fixtures/states/no_profile_redirect_welcome.json @@ -3,4 +3,4 @@ "type": "redirect", "target": "welcome" } -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json b/src-tauri/tests/tests/fixtures/states/pf_accept_connect.json similarity index 99% rename from src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json rename to src-tauri/tests/tests/fixtures/states/pf_accept_connect.json index 123fdb222..c796b22d4 100644 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json +++ b/src-tauri/tests/tests/fixtures/states/pf_accept_connect.json @@ -12,4 +12,4 @@ "redirect_uri": "https://example.com/", "previously_connected": false } -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/fixtures/states/pf_credential_offer.json b/src-tauri/tests/tests/fixtures/states/pf_credential_offer.json new file mode 100644 index 000000000..56b38d731 --- /dev/null +++ b/src-tauri/tests/tests/fixtures/states/pf_credential_offer.json @@ -0,0 +1,33 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6Mkr8yRGc8hG7t26CtjSaEfWZZsEDZZ3HECsUdwVyR4NThQ" + }, + "current_user_prompt": { + "type": "credential-offer", + "issuer_name": "http://192.168.1.127:9090/", + "logo_uri": null, + "credential_offer": { + "credential_issuer": "http://192.168.1.127:9090/", + "credentials": [ + { + "format": "jwt_vc_json", + "credential_definition": { + "type": [ + "VerifiableCredential", + "PersonalInformation" + ] + } + } + ], + "grants": { + "urn:ietf:params:oauth:grant-type:pre-authorized_code": { + "pre-authorized_code": "0YI5DXtuCltKyNa5", + "user_pin_required": false + } + } + } + } +} diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_did_redirect_me.json b/src-tauri/tests/tests/fixtures/states/pf_with_did_redirect_me.json new file mode 100644 index 000000000..cfd3237cb --- /dev/null +++ b/src-tauri/tests/tests/fixtures/states/pf_with_did_redirect_me.json @@ -0,0 +1,12 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6MkfS6p7mcVxMG5hVBsrgRyrwT1ap7tQK7DuiZJo3LcSf5E" + }, + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json b/src-tauri/tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json new file mode 100644 index 000000000..81827bbee --- /dev/null +++ b/src-tauri/tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json @@ -0,0 +1,67 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY" + }, + "locale": "en", + "credentials": [ + { + "id": "33653133-6636-3633-6462-356231643533", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "issuer": "http://192.168.1.127:9090/", + "issuanceDate": "2022-08-15T09:30:00Z", + "expirationDate": "2027-08-15T23:59:59Z", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "licenseClass": "Class C", + "issuedBy": "California", + "validity": "Valid" + } + } + }, + { + "id": "37626466-3738-6437-6165-623533613665", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": "http://192.168.1.127:9090/", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } + } + } + ], + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_person_info_redirect_me.json b/src-tauri/tests/tests/fixtures/states/pf_with_person_info_redirect_me.json new file mode 100644 index 000000000..b681850c3 --- /dev/null +++ b/src-tauri/tests/tests/fixtures/states/pf_with_person_info_redirect_me.json @@ -0,0 +1,40 @@ +{ + "active_profile": { + "name": "Ferris", + "picture": "🦀", + "theme": "system", + "primary_did": "did:key:z6Mkj8BwSPPbJFLbky8P62NmUGQmLz7foShA7F6ZB1gUwVj4" + }, + "credentials": [ + { + "id": "37626466-3738-6437-6165-623533613665", + "issuer_name": null, + "format": { + "format": "jwt_vc_json" + }, + "data": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": "did:key:z6MktjYzf6GuQRkh1Xs9GqBHSrJUM5KuqpcJ1ucWA7rgH5ph", + "credentialSubject": { + "id": "did:key:z6Mkg1XXGUqfkhAKU1kVd1Pmw6UEj1vxiLj1xc91MBz5owNY", + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } + } + } + ], + "current_user_prompt": { + "type": "redirect", + "target": "me" + } +} diff --git a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json b/src-tauri/tests/tests/fixtures/states/pf_with_person_info_share_cred.json similarity index 87% rename from src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json rename to src-tauri/tests/tests/fixtures/states/pf_with_person_info_share_cred.json index f1dcfad3d..124751e5c 100644 --- a/src-tauri/tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json +++ b/src-tauri/tests/tests/fixtures/states/pf_with_person_info_share_cred.json @@ -30,14 +30,6 @@ "email": "ferris.crabman@crabmail.com", "birthdate": "1985-05-21" } - }, - "metadata": { - "is_favorite": false, - "display": { - "icon": null, - "color": null, - "name": null - } } } ], @@ -49,4 +41,4 @@ "37626466-3738-6437-6165-623533613665" ] } -} \ No newline at end of file +} diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index a0908af5b..37a4692a2 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -1,12 +1,8 @@ -use std::sync::Mutex; use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; -use crate::common::{test_managers, json_example}; +use crate::common::{json_example, test_managers}; use identity_wallet::state::Profile; -use identity_wallet::state::{ - actions::Action, - AppState, TransferState, -}; - +use identity_wallet::state::{actions::Action, AppState, TransferState}; +use std::sync::Mutex; #[tokio::test] #[serial_test::serial] @@ -15,17 +11,16 @@ async fn test_get_state_create_new() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures-get_state/states/create_new1.json"); - let state2 = json_example::("tests/tests/fixtures-get_state/states/create_new2.json"); - let action1 = json_example::("tests/tests/fixtures-get_state/actions/create_new1.json"); - let action2 = json_example::("tests/tests/fixtures-get_state/actions/create_new2.json"); + let state1 = json_example::("tests/tests/fixtures/states/no_profile_redirect_welcome.json"); + let state2 = json_example::("tests/tests/fixtures/states/active_pf_redirect_me.json"); + let action1 = json_example::("tests/tests/fixtures/actions/get_state.json"); + let action2 = json_example::("tests/tests/fixtures/actions/create_new.json"); assert_state_update( // Initial state. AppState::default(), vec![ // Get the initial state. - action1, - // Create a new profile. + action1, // Create a new profile. action2, ], vec![ @@ -44,12 +39,11 @@ async fn test_get_state_unlock_storage() { setup_state_file(); setup_stronghold(); - // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures-get_state/states/unlock_storage1.json"); - let state2 = json_example::("tests/tests/fixtures-get_state/states/unlock_storage2.json"); - let action1 = json_example::("tests/tests/fixtures-get_state/actions/unlock_storage1.json"); - let action2 = json_example::("tests/tests/fixtures-get_state/actions/unlock_storage2.json"); + let state1 = json_example::("tests/tests/fixtures/states/active_pf_password_required.json"); + let state2 = json_example::("tests/tests/fixtures/states/active_pf_redirect_me.json"); + let action1 = json_example::("tests/tests/fixtures/actions/get_state.json"); + let action2 = json_example::("tests/tests/fixtures/actions/unlock_storage.json"); assert_state_update( // Initial state. AppState { @@ -64,9 +58,8 @@ async fn test_get_state_unlock_storage() { }, vec![ // Get the initial state. - action1, - // Unlock the storage. - action2 + action1, // Unlock the storage. + action2, ], vec![ // The storage is locked, so the user is prompted to unlock it. diff --git a/src-tauri/tests/tests/load_dev_profile.rs b/src-tauri/tests/tests/load_dev_profile.rs index 27b37a648..e8fa6f13c 100644 --- a/src-tauri/tests/tests/load_dev_profile.rs +++ b/src-tauri/tests/tests/load_dev_profile.rs @@ -1,10 +1,6 @@ use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; use crate::common::json_example; -use identity_wallet::state::reducers::load_dev_profile::{DRIVERS_LICENSE_CREDENTIAL, PERSONAL_INFORMATION}; -use identity_wallet::state::{ - actions::Action, - AppState, TransferState, -}; +use identity_wallet::state::{actions::Action, AppState, TransferState}; #[tokio::test] #[serial_test::serial] @@ -12,24 +8,11 @@ async fn test_load_dev_profile() { setup_state_file(); setup_stronghold(); - // let personal_information = PERSONAL_INFORMATION.clone().display_credential; - // let drivers_license_credential = DRIVERS_LICENSE_CREDENTIAL.clone().display_credential; - - // let credentials = { - // let mut credentials = vec![personal_information, drivers_license_credential]; - // credentials.sort_by(|a, b| a.id.cmp(&b.id)); - // credentials - // }; - // Deserializing the Transferstates and Actions from the accompanying json files. - let state = json_example::("tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json"); - let action = json_example::("tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json"); - assert_state_update( - AppState::default(), - vec![action], - vec![Some(state)], - ) - .await; + let state = + json_example::("tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let action = json_example::("tests/tests/fixtures/actions/dev_load_profile.json"); + assert_state_update(AppState::default(), vec![action], vec![Some(state)]).await; } #[tokio::test] @@ -38,24 +21,16 @@ async fn test_load_dev_profile_twice() { setup_state_file(); setup_stronghold(); - // let personal_information = PERSONAL_INFORMATION.clone().display_credential; - // let drivers_license_credential = DRIVERS_LICENSE_CREDENTIAL.clone().display_credential; - - // let credentials = { - // let mut credentials = vec![personal_information, drivers_license_credential]; - // credentials.sort_by(|a, b| a.id.cmp(&b.id)); - // credentials - // }; - // Deserializing the Transferstates and Actions from the accompanying json files. - let state = json_example::("tests/tests/fixtures-load_dev_profile/states/load_dev_profile.json"); - let action = json_example::("tests/tests/fixtures-load_dev_profile/actions/load_dev_profile.json"); + let state = + json_example::("tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let action = json_example::("tests/tests/fixtures/actions/dev_load_profile.json"); assert_state_update( AppState::default(), vec![ // Load the profile twice. action.clone(), - action + action, ], vec![ // Each time the dev profile is loaded, the state should be the same. diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index db3a82e6e..e1a8ece85 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -1,79 +1,18 @@ +use crate::common::json_example; use crate::common::{ assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}, test_managers, }; -use crate::common::json_example; -use identity_wallet::state::reducers::load_dev_profile::{DRIVERS_LICENSE_CREDENTIAL, PERSONAL_INFORMATION}; use identity_wallet::{ - state::{ - actions::{Action, ActionType}, - user_prompt::{ - AcceptConnection, CredentialOffer as CredentialOfferPrompt, CurrentUserPrompt, CurrentUserPromptType, - Redirect, ShareCredentials, - }, - AppState, Profile, TransferState, - }, + state::{actions::Action, AppState, Profile, TransferState}, verifiable_credential_record::VerifiableCredentialRecord, }; -use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::{self, JwtVcJson}; -use oid4vci::credential_format_profiles::{Credential, Parameters, WithCredential, WithParameters}; -use oid4vci::credential_offer::{Grants, PreAuthorizedCode}; -use oid4vci::{ - credential_format_profiles::CredentialFormats, - credential_offer::{CredentialOffer, CredentialsObject}, -}; +use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::JwtVcJson; +use oid4vci::credential_format_profiles::CredentialFormats; +use oid4vci::credential_format_profiles::{Credential, WithCredential}; use serde_json::json; use std::sync::Mutex; - -#[tokio::test] -#[serial_test::serial] -async fn pretty_print_test() { - // A function to test the serialization and deserialization json output - let verifiable_credential_record = VerifiableCredentialRecord::from(CredentialFormats::::JwtVcJson(Credential { - format: JwtVcJson, - credential: json!("eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RqWXpmNkd1UVJraDFYczlHcUJIU3JKVU01S3VxcGNKMXVjV0E3cmdINXBoI3o2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCJ9.eyJpc3MiOiJkaWQ6a2V5Ono2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCIsInN1YiI6ImRpZDprZXk6ejZNa2cxWFhHVXFma2hBS1Uxa1ZkMVBtdzZVRWoxdnhpTGoxeGM5MU1CejVvd05ZIiwiZXhwIjo5OTk5OTk5OTk5LCJpYXQiOjAsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjEiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlBlcnNvbmFsSW5mb3JtYXRpb24iXSwiaXNzdWFuY2VEYXRlIjoiMjAyMi0wMS0wMVQwMDowMDowMFoiLCJpc3N1ZXIiOiJkaWQ6a2V5Ono2TWt0all6ZjZHdVFSa2gxWHM5R3FCSFNySlVNNUt1cXBjSjF1Y1dBN3JnSDVwaCIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmtleTp6Nk1rZzFYWEdVcWZraEFLVTFrVmQxUG13NlVFajF2eGlMajF4YzkxTUJ6NW93TlkiLCJnaXZlbk5hbWUiOiJGZXJyaXMiLCJmYW1pbHlOYW1lIjoiQ3JhYm1hbiIsImVtYWlsIjoiZmVycmlzLmNyYWJtYW5AY3JhYm1haWwuY29tIiwiYmlydGhkYXRlIjoiMTk4NS0wNS0yMSJ9fX0.ETqRaVMxFZQLN8OmngL1IPGAA2xH9Nsir9vRvJTLLBOJbnGuPdvcMQkN720MQuk9LWmsqNMBrUQegIuJ9IQLBg") - })); - - let credentials = vec![verifiable_credential_record.display_credential.clone()]; - - let uuid = verifiable_credential_record.display_credential.id.clone(); - - let managers = test_managers(vec![verifiable_credential_record]); - let active_profile = Some(Profile { - name: "Ferris".to_string(), - picture: Some("🦀".to_string()), - theme: Some("system".to_string()), - primary_did: managers - .lock() - .await - .identity_manager - .as_ref() - .unwrap() - .subject - .identifier() - .unwrap(), - }); - - let test = TransferState { - active_profile, - credentials, - current_user_prompt: Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, - target: "me".to_string(), - })), - ..TransferState::default() - }; - - - let s = serde_json::to_string_pretty(&test).unwrap(); - println!("{}", s); - let ds = serde_json::from_str::(&s).unwrap(); - println!("{:#?}", ds); - let dss = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json"); - println!("{:#?}", dss); -} - #[tokio::test] #[serial_test::serial] async fn test_qr_code_scanned_read_credential_offer() { @@ -96,11 +35,9 @@ async fn test_qr_code_scanned_read_credential_offer() { .unwrap(), }); -// let credential_issuer: url::Url = "http://192.168.1.127:9090".parse().unwrap(); - // Deserializing the Transferstates and Actions from the accompanying json files. - let state = json_example::("tests/tests/fixtures-qr_code_scanned/states/read_cred.json"); - let action = json_example::("tests/tests/fixtures-qr_code_scanned/actions/read_cred.json"); + let state = json_example::("tests/tests/fixtures/states/pf_credential_offer.json"); + let action = json_example::("tests/tests/fixtures/actions/qr_scanned_openid_cred.json"); assert_state_update( // Initial state. AppState { @@ -112,7 +49,8 @@ async fn test_qr_code_scanned_read_credential_offer() { vec![action], // The state is updated with a new user prompt containing the credential offer. vec![Some(state)], - ).await; + ) + .await; } #[tokio::test] @@ -138,10 +76,10 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_1.json"); - let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_siopv2_2.json"); - let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_1.json"); - let action2 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_siopv2_2.json"); + let state1 = json_example::("tests/tests/fixtures/states/pf_accept_connect.json"); + let state2 = json_example::("tests/tests/fixtures/states/pf_with_did_redirect_me.json"); + let action1 = json_example::("tests/tests/fixtures/actions/qr_scanned_id_token.json"); + let action2 = json_example::("tests/tests/fixtures/actions/authenticate_connect_accept.json"); assert_state_update( // Initial state. AppState { @@ -150,16 +88,11 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { ..AppState::default() }, // A QR code was scanned containing a SIOPv2 authorization request. - vec![ - action1, - action2 - ], + vec![action1, action2], // The state is updated with a new user prompt containing the client's metadata. - vec![ - Some(state1), - Some(state2), - ], - ).await; + vec![Some(state1), Some(state2)], + ) + .await; } #[tokio::test] @@ -175,8 +108,6 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { let credentials = vec![verifiable_credential_record.display_credential.clone()]; -// let uuid = verifiable_credential_record.display_credential.id.clone(); - let managers = test_managers(vec![verifiable_credential_record]); let active_profile = Some(Profile { name: "Ferris".to_string(), @@ -194,10 +125,10 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_1.json"); - let state2 = json_example::("tests/tests/fixtures-qr_code_scanned/states/handle_oid4vp_2.json"); - let action1 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_1.json"); - let action2 = json_example::("tests/tests/fixtures-qr_code_scanned/actions/handle_oid4vp_2.json"); + let state1 = json_example::("tests/tests/fixtures/states/pf_with_person_info_share_cred.json"); + let state2 = json_example::("tests/tests/fixtures/states/pf_with_person_info_redirect_me.json"); + let action1 = json_example::("tests/tests/fixtures/actions/qr_scanned_vp_token.json"); + let action2 = json_example::("tests/tests/fixtures/actions/authenticate_cred_selected.json"); assert_state_update( // Initial state. AppState { @@ -207,14 +138,9 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { ..AppState::default() }, // A QR code was scanned containing a OID4VP authorization request. - vec![ - action1, - action2, - ], + vec![action1, action2], // The state is updated with a new user prompt containing the uuid's of the candidate verifiable credentials. - vec![ - Some(state1), - Some(state2), - ], - ).await; + vec![Some(state1), Some(state2)], + ) + .await; } From 246d950c44180b49f66dd653a7a7b3643a4edbbf Mon Sep 17 00:00:00 2001 From: Oran Dan Date: Tue, 17 Oct 2023 14:21:23 +0200 Subject: [PATCH 08/62] resolved 2nd review --- src-tauri/src/state/user_prompt.rs | 2 +- src-tauri/src/verifiable_credential_record.rs | 2 -- .../actions/authenticate_connect_accept.json | 0 .../actions/authenticate_cred_selected.json | 0 .../fixtures/actions/create_new.json | 0 .../fixtures/actions/dev_load_profile.json | 0 .../fixtures/actions/get_state.json | 0 .../fixtures/actions/qr_scanned_id_token.json | 0 .../actions/qr_scanned_openid_cred.json | 0 .../fixtures/actions/qr_scanned_vp_token.json | 0 .../fixtures/actions/unlock_storage.json | 0 .../states/active_pf_password_required.json | 0 .../states/active_pf_redirect_me.json | 0 .../states/no_profile_redirect_welcome.json | 0 .../fixtures/states/pf_accept_connect.json | 0 .../fixtures/states/pf_credential_offer.json | 0 .../states/pf_with_did_redirect_me.json | 0 ...driverl_and_personal_info_redirect_me.json | 0 .../pf_with_person_info_redirect_me.json | 0 .../pf_with_person_info_share_cred.json | 0 src-tauri/tests/tests/get_state.rs | 16 +++++++-------- src-tauri/tests/tests/load_dev_profile.rs | 8 ++++---- src-tauri/tests/tests/qr_code_scanned.rs | 20 +++++++++---------- 23 files changed, 23 insertions(+), 25 deletions(-) rename src-tauri/tests/{tests => }/fixtures/actions/authenticate_connect_accept.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/authenticate_cred_selected.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/create_new.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/dev_load_profile.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/get_state.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/qr_scanned_id_token.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/qr_scanned_openid_cred.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/qr_scanned_vp_token.json (100%) rename src-tauri/tests/{tests => }/fixtures/actions/unlock_storage.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/active_pf_password_required.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/active_pf_redirect_me.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/no_profile_redirect_welcome.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/pf_accept_connect.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/pf_credential_offer.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/pf_with_did_redirect_me.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/pf_with_person_info_redirect_me.json (100%) rename src-tauri/tests/{tests => }/fixtures/states/pf_with_person_info_share_cred.json (100%) diff --git a/src-tauri/src/state/user_prompt.rs b/src-tauri/src/state/user_prompt.rs index 4a24e2508..439b1455c 100644 --- a/src-tauri/src/state/user_prompt.rs +++ b/src-tauri/src/state/user_prompt.rs @@ -76,11 +76,11 @@ pub struct ShareCredentials { #[serde(untagged)] #[ts(export, export_to = "bindings/user-prompt/CurrentUserPrompt.ts")] pub enum CurrentUserPrompt { - PasswordRequired(PasswordRequired), Redirect(Redirect), Warning(Warning), Selection(Selection), CredentialOffer(CredentialOffer), + PasswordRequired(PasswordRequired), AcceptConnection(AcceptConnection), ShareCredentials(ShareCredentials), } diff --git a/src-tauri/src/verifiable_credential_record.rs b/src-tauri/src/verifiable_credential_record.rs index bf8075935..33012195b 100644 --- a/src-tauri/src/verifiable_credential_record.rs +++ b/src-tauri/src/verifiable_credential_record.rs @@ -1,5 +1,3 @@ -use std::default; - use oid4vci::credential_format_profiles::{CredentialFormats, WithCredential}; use serde::{Deserialize, Serialize}; use serde_json::json; diff --git a/src-tauri/tests/tests/fixtures/actions/authenticate_connect_accept.json b/src-tauri/tests/fixtures/actions/authenticate_connect_accept.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/authenticate_connect_accept.json rename to src-tauri/tests/fixtures/actions/authenticate_connect_accept.json diff --git a/src-tauri/tests/tests/fixtures/actions/authenticate_cred_selected.json b/src-tauri/tests/fixtures/actions/authenticate_cred_selected.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/authenticate_cred_selected.json rename to src-tauri/tests/fixtures/actions/authenticate_cred_selected.json diff --git a/src-tauri/tests/tests/fixtures/actions/create_new.json b/src-tauri/tests/fixtures/actions/create_new.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/create_new.json rename to src-tauri/tests/fixtures/actions/create_new.json diff --git a/src-tauri/tests/tests/fixtures/actions/dev_load_profile.json b/src-tauri/tests/fixtures/actions/dev_load_profile.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/dev_load_profile.json rename to src-tauri/tests/fixtures/actions/dev_load_profile.json diff --git a/src-tauri/tests/tests/fixtures/actions/get_state.json b/src-tauri/tests/fixtures/actions/get_state.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/get_state.json rename to src-tauri/tests/fixtures/actions/get_state.json diff --git a/src-tauri/tests/tests/fixtures/actions/qr_scanned_id_token.json b/src-tauri/tests/fixtures/actions/qr_scanned_id_token.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/qr_scanned_id_token.json rename to src-tauri/tests/fixtures/actions/qr_scanned_id_token.json diff --git a/src-tauri/tests/tests/fixtures/actions/qr_scanned_openid_cred.json b/src-tauri/tests/fixtures/actions/qr_scanned_openid_cred.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/qr_scanned_openid_cred.json rename to src-tauri/tests/fixtures/actions/qr_scanned_openid_cred.json diff --git a/src-tauri/tests/tests/fixtures/actions/qr_scanned_vp_token.json b/src-tauri/tests/fixtures/actions/qr_scanned_vp_token.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/qr_scanned_vp_token.json rename to src-tauri/tests/fixtures/actions/qr_scanned_vp_token.json diff --git a/src-tauri/tests/tests/fixtures/actions/unlock_storage.json b/src-tauri/tests/fixtures/actions/unlock_storage.json similarity index 100% rename from src-tauri/tests/tests/fixtures/actions/unlock_storage.json rename to src-tauri/tests/fixtures/actions/unlock_storage.json diff --git a/src-tauri/tests/tests/fixtures/states/active_pf_password_required.json b/src-tauri/tests/fixtures/states/active_pf_password_required.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/active_pf_password_required.json rename to src-tauri/tests/fixtures/states/active_pf_password_required.json diff --git a/src-tauri/tests/tests/fixtures/states/active_pf_redirect_me.json b/src-tauri/tests/fixtures/states/active_pf_redirect_me.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/active_pf_redirect_me.json rename to src-tauri/tests/fixtures/states/active_pf_redirect_me.json diff --git a/src-tauri/tests/tests/fixtures/states/no_profile_redirect_welcome.json b/src-tauri/tests/fixtures/states/no_profile_redirect_welcome.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/no_profile_redirect_welcome.json rename to src-tauri/tests/fixtures/states/no_profile_redirect_welcome.json diff --git a/src-tauri/tests/tests/fixtures/states/pf_accept_connect.json b/src-tauri/tests/fixtures/states/pf_accept_connect.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/pf_accept_connect.json rename to src-tauri/tests/fixtures/states/pf_accept_connect.json diff --git a/src-tauri/tests/tests/fixtures/states/pf_credential_offer.json b/src-tauri/tests/fixtures/states/pf_credential_offer.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/pf_credential_offer.json rename to src-tauri/tests/fixtures/states/pf_credential_offer.json diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_did_redirect_me.json b/src-tauri/tests/fixtures/states/pf_with_did_redirect_me.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/pf_with_did_redirect_me.json rename to src-tauri/tests/fixtures/states/pf_with_did_redirect_me.json diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json b/src-tauri/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json rename to src-tauri/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_person_info_redirect_me.json b/src-tauri/tests/fixtures/states/pf_with_person_info_redirect_me.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/pf_with_person_info_redirect_me.json rename to src-tauri/tests/fixtures/states/pf_with_person_info_redirect_me.json diff --git a/src-tauri/tests/tests/fixtures/states/pf_with_person_info_share_cred.json b/src-tauri/tests/fixtures/states/pf_with_person_info_share_cred.json similarity index 100% rename from src-tauri/tests/tests/fixtures/states/pf_with_person_info_share_cred.json rename to src-tauri/tests/fixtures/states/pf_with_person_info_share_cred.json diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index 37a4692a2..ee70b5827 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -11,10 +11,10 @@ async fn test_get_state_create_new() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures/states/no_profile_redirect_welcome.json"); - let state2 = json_example::("tests/tests/fixtures/states/active_pf_redirect_me.json"); - let action1 = json_example::("tests/tests/fixtures/actions/get_state.json"); - let action2 = json_example::("tests/tests/fixtures/actions/create_new.json"); + let state1 = json_example::("tests/fixtures/states/no_profile_redirect_welcome.json"); + let state2 = json_example::("tests/fixtures/states/active_pf_redirect_me.json"); + let action1 = json_example::("tests/fixtures/actions/get_state.json"); + let action2 = json_example::("tests/fixtures/actions/create_new.json"); assert_state_update( // Initial state. AppState::default(), @@ -40,10 +40,10 @@ async fn test_get_state_unlock_storage() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures/states/active_pf_password_required.json"); - let state2 = json_example::("tests/tests/fixtures/states/active_pf_redirect_me.json"); - let action1 = json_example::("tests/tests/fixtures/actions/get_state.json"); - let action2 = json_example::("tests/tests/fixtures/actions/unlock_storage.json"); + let state1 = json_example::("tests/fixtures/states/active_pf_password_required.json"); + let state2 = json_example::("tests/fixtures/states/active_pf_redirect_me.json"); + let action1 = json_example::("tests/fixtures/actions/get_state.json"); + let action2 = json_example::("tests/fixtures/actions/unlock_storage.json"); assert_state_update( // Initial state. AppState { diff --git a/src-tauri/tests/tests/load_dev_profile.rs b/src-tauri/tests/tests/load_dev_profile.rs index e8fa6f13c..e1bcf9e50 100644 --- a/src-tauri/tests/tests/load_dev_profile.rs +++ b/src-tauri/tests/tests/load_dev_profile.rs @@ -10,8 +10,8 @@ async fn test_load_dev_profile() { // Deserializing the Transferstates and Actions from the accompanying json files. let state = - json_example::("tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); - let action = json_example::("tests/tests/fixtures/actions/dev_load_profile.json"); + json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let action = json_example::("tests/fixtures/actions/dev_load_profile.json"); assert_state_update(AppState::default(), vec![action], vec![Some(state)]).await; } @@ -23,8 +23,8 @@ async fn test_load_dev_profile_twice() { // Deserializing the Transferstates and Actions from the accompanying json files. let state = - json_example::("tests/tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); - let action = json_example::("tests/tests/fixtures/actions/dev_load_profile.json"); + json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let action = json_example::("tests/fixtures/actions/dev_load_profile.json"); assert_state_update( AppState::default(), vec![ diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index e1a8ece85..66dababcf 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -36,8 +36,8 @@ async fn test_qr_code_scanned_read_credential_offer() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state = json_example::("tests/tests/fixtures/states/pf_credential_offer.json"); - let action = json_example::("tests/tests/fixtures/actions/qr_scanned_openid_cred.json"); + let state = json_example::("tests/fixtures/states/pf_credential_offer.json"); + let action = json_example::("tests/fixtures/actions/qr_scanned_openid_cred.json"); assert_state_update( // Initial state. AppState { @@ -76,10 +76,10 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures/states/pf_accept_connect.json"); - let state2 = json_example::("tests/tests/fixtures/states/pf_with_did_redirect_me.json"); - let action1 = json_example::("tests/tests/fixtures/actions/qr_scanned_id_token.json"); - let action2 = json_example::("tests/tests/fixtures/actions/authenticate_connect_accept.json"); + let state1 = json_example::("tests/fixtures/states/pf_accept_connect.json"); + let state2 = json_example::("tests/fixtures/states/pf_with_did_redirect_me.json"); + let action1 = json_example::("tests/fixtures/actions/qr_scanned_id_token.json"); + let action2 = json_example::("tests/fixtures/actions/authenticate_connect_accept.json"); assert_state_update( // Initial state. AppState { @@ -125,10 +125,10 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/tests/fixtures/states/pf_with_person_info_share_cred.json"); - let state2 = json_example::("tests/tests/fixtures/states/pf_with_person_info_redirect_me.json"); - let action1 = json_example::("tests/tests/fixtures/actions/qr_scanned_vp_token.json"); - let action2 = json_example::("tests/tests/fixtures/actions/authenticate_cred_selected.json"); + let state1 = json_example::("tests/fixtures/states/pf_with_person_info_share_cred.json"); + let state2 = json_example::("tests/fixtures/states/pf_with_person_info_redirect_me.json"); + let action1 = json_example::("tests/fixtures/actions/qr_scanned_vp_token.json"); + let action2 = json_example::("tests/fixtures/actions/authenticate_cred_selected.json"); assert_state_update( // Initial state. AppState { From f2a1de1a7c2c7a526c5b5ff1070ddcc34190e14c Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 10 Oct 2023 22:36:04 +0800 Subject: [PATCH 09/62] feat: refactor backend --- src-tauri/bindings/CurrentUserPrompt.ts | 3 + src-tauri/bindings/TransferState.ts | 2 +- src-tauri/src/command.rs | 22 +-- src-tauri/src/state/reducers/authorization.rs | 26 ++-- .../src/state/reducers/credential_offer.rs | 23 +-- .../src/state/reducers/load_dev_profile.rs | 7 +- src-tauri/src/state/reducers/mod.rs | 7 +- src-tauri/src/state/reducers/storage.rs | 11 +- src-tauri/src/state/user_prompt.rs | 141 ++++++------------ 9 files changed, 85 insertions(+), 157 deletions(-) create mode 100644 src-tauri/bindings/CurrentUserPrompt.ts diff --git a/src-tauri/bindings/CurrentUserPrompt.ts b/src-tauri/bindings/CurrentUserPrompt.ts new file mode 100644 index 000000000..26b72f984 --- /dev/null +++ b/src-tauri/bindings/CurrentUserPrompt.ts @@ -0,0 +1,3 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. + +export type CurrentUserPrompt = { "type": "redirect", target: string, } | { "type": "warning", message: string, } | { "type": "selection", options: Array, } | { "type": "password-required" } | { "type": "accept-connection", client_name: string, logo_uri: string | null, redirect_uri: string, previously_connected: boolean, } | { "type": "credential-offer", issuer_name: string, logo_uri: string | null, credential_offer: object, } | { "type": "share-credentials", client_name: string, logo_uri: string | null, options: Array, }; \ No newline at end of file diff --git a/src-tauri/bindings/TransferState.ts b/src-tauri/bindings/TransferState.ts index bc35136f5..a147710e6 100644 --- a/src-tauri/bindings/TransferState.ts +++ b/src-tauri/bindings/TransferState.ts @@ -1,6 +1,6 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { Connection } from "./Connection"; -import type { CurrentUserPrompt } from "./user-prompt/CurrentUserPrompt"; +import type { CurrentUserPrompt } from "./CurrentUserPrompt"; import type { DisplayCredential } from "./display-credential/DisplayCredential"; import type { Locale } from "./Locale"; import type { Profile } from "./Profile"; diff --git a/src-tauri/src/command.rs b/src-tauri/src/command.rs index a8596f280..0201ee973 100644 --- a/src-tauri/src/command.rs +++ b/src-tauri/src/command.rs @@ -10,7 +10,7 @@ use crate::state::reducers::{ create_identity, initialize_stronghold, reset_state, set_locale, update_credential_metadata, update_profile_settings, }; -use crate::state::user_prompt::{CurrentUserPrompt, CurrentUserPromptType, PasswordRequired, Redirect}; +use crate::state::user_prompt::CurrentUserPrompt; use crate::state::{AppState, TransferState}; use log::{info, warn}; use oid4vc_core::authorization_request::AuthorizationRequest; @@ -35,16 +35,12 @@ pub(crate) async fn handle_action_inner( *app_state.connections.lock().unwrap() = transfer_state.connections; if app_state.active_profile.lock().unwrap().is_some() { - *app_state.current_user_prompt.lock().unwrap() = - Some(CurrentUserPrompt::PasswordRequired(PasswordRequired { - r#type: CurrentUserPromptType::PasswordRequired, - })); + *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::PasswordRequired); } else { // TODO: bug: if state is present, but empty, user will never be redirected to neither welcome or profile page - *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect { target: "welcome".to_string(), - })); + }); } } ActionType::UnlockStorage => { @@ -67,10 +63,9 @@ pub(crate) async fn handle_action_inner( save_state(TransferState::from(app_state)).await.ok(); } // When everything is done, we redirect the user to the "me" page - *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect { target: "me".to_string(), - })); + }); save_state(TransferState::from(app_state)).await.ok(); } ActionType::SetLocale => { @@ -149,10 +144,9 @@ pub(crate) async fn handle_action_inner( .current_user_prompt .lock() .unwrap() - .replace(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + .replace(CurrentUserPrompt::Redirect { target: redirect.to_string(), - })); + }); } else { app_state.current_user_prompt.lock().unwrap().take(); } diff --git a/src-tauri/src/state/reducers/authorization.rs b/src-tauri/src/state/reducers/authorization.rs index 00dcdb135..22941dd10 100644 --- a/src-tauri/src/state/reducers/authorization.rs +++ b/src-tauri/src/state/reducers/authorization.rs @@ -1,10 +1,6 @@ use crate::{ get_unverified_jwt_claims, - state::{ - actions::Action, - user_prompt::{AcceptConnection, CurrentUserPrompt, CurrentUserPromptType, Redirect, ShareCredentials}, - AppState, Connection, - }, + state::{actions::Action, user_prompt::CurrentUserPrompt, AppState, Connection}, }; use identity_credential::{credential::Jwt, presentation::Presentation}; use log::info; @@ -70,13 +66,12 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any .current_user_prompt .lock() .unwrap() - .replace(CurrentUserPrompt::AcceptConnection(AcceptConnection { - r#type: CurrentUserPromptType::AcceptConnection, + .replace(CurrentUserPrompt::AcceptConnection { client_name, logo_uri, redirect_uri, previously_connected, - })); + }); } else if let Result::Ok(oid4vp_authorization_request) = provider_manager .validate_request::(serde_json::from_value(payload.clone())?) .await @@ -116,12 +111,11 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any // TODO: communicate when no credentials are available. if !uuids.is_empty() { - *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::ShareCredentials(ShareCredentials { - r#type: CurrentUserPromptType::ShareCredentials, + *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::ShareCredentials { client_name, logo_uri, options: uuids, - })); + }); } } else { return Err(anyhow::anyhow!("unable to validate request")); @@ -197,10 +191,9 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti .current_user_prompt .lock() .unwrap() - .replace(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + .replace(CurrentUserPrompt::Redirect { target: "me".to_string(), - })); + }); Ok(()) } @@ -349,10 +342,9 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio .current_user_prompt .lock() .unwrap() - .replace(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + .replace(CurrentUserPrompt::Redirect { target: "me".to_string(), - })); + }); Ok(()) } diff --git a/src-tauri/src/state/reducers/credential_offer.rs b/src-tauri/src/state/reducers/credential_offer.rs index f4b3cbc10..13327959f 100644 --- a/src-tauri/src/state/reducers/credential_offer.rs +++ b/src-tauri/src/state/reducers/credential_offer.rs @@ -1,9 +1,5 @@ use crate::{ - state::{ - actions::Action, - user_prompt::{CredentialOffer as CredentialOfferPrompt, CurrentUserPrompt, CurrentUserPromptType, Redirect}, - AppState, - }, + state::{actions::Action, user_prompt::CurrentUserPrompt, AppState}, verifiable_credential_record::VerifiableCredentialRecord, }; use log::info; @@ -100,17 +96,14 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: }) .unwrap_or((credential_issuer_url.to_string(), None)); - let credential_offer = serde_json::to_value(credential_offer)?; - info!("issuer_name in credential_offer: {:?}", issuer_name); info!("logo_uri in credential_offer: {:?}", logo_uri); - *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::CredentialOffer(CredentialOfferPrompt { - r#type: CurrentUserPromptType::CredentialOffer, + *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::CredentialOffer { issuer_name, logo_uri, credential_offer, - })); + }); Ok(()) } @@ -142,10 +135,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow info!("current_user_prompt: {:?}", current_user_prompt); let credential_offer = match current_user_prompt { - CurrentUserPrompt::CredentialOffer(offer) => { - let credential_offer: CredentialOffer = serde_json::from_value(offer.credential_offer)?; - credential_offer - } + CurrentUserPrompt::CredentialOffer { credential_offer, .. } => credential_offer, _ => unreachable!(), }; @@ -279,10 +269,9 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow .current_user_prompt .lock() .unwrap() - .replace(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + .replace(CurrentUserPrompt::Redirect { target: "me".to_string(), - })); + }); Ok(()) } diff --git a/src-tauri/src/state/reducers/load_dev_profile.rs b/src-tauri/src/state/reducers/load_dev_profile.rs index 0421cf27c..bff7abb16 100644 --- a/src-tauri/src/state/reducers/load_dev_profile.rs +++ b/src-tauri/src/state/reducers/load_dev_profile.rs @@ -1,6 +1,6 @@ use crate::crypto::stronghold::StrongholdManager; use crate::state::actions::Action; -use crate::state::user_prompt::{CurrentUserPrompt, CurrentUserPromptType, Redirect}; +use crate::state::user_prompt::CurrentUserPrompt; use crate::state::{AppState, Connection, Profile}; use crate::verifiable_credential_record::VerifiableCredentialRecord; use did_key::{generate, Ed25519KeyPair}; @@ -123,9 +123,8 @@ pub async fn load_dev_profile(state: &AppState, _action: Action) -> anyhow::Resu last_connected: "2023-09-11T19:53:53.937981+00:00".to_string(), }]; - *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect { target: "me".to_string(), - })); + }); Ok(()) } diff --git a/src-tauri/src/state/reducers/mod.rs b/src-tauri/src/state/reducers/mod.rs index bf4467182..b8ea02747 100644 --- a/src-tauri/src/state/reducers/mod.rs +++ b/src-tauri/src/state/reducers/mod.rs @@ -6,7 +6,7 @@ pub mod storage; use super::{IdentityManager, Locale}; use crate::crypto::stronghold::StrongholdManager; use crate::state::actions::Action; -use crate::state::user_prompt::{CurrentUserPrompt, CurrentUserPromptType, Redirect}; +use crate::state::user_prompt::CurrentUserPrompt; use crate::state::{AppState, Profile}; use crate::verifiable_credential_record::VerifiableCredentialRecord; use did_key::{from_existing_key, Ed25519KeyPair}; @@ -220,10 +220,9 @@ pub fn reset_state(state: &AppState, _action: Action) -> anyhow::Result<()> { *state.locale.lock().unwrap() = Locale::default(); state.credentials.lock().unwrap().clear(); state.connections.lock().unwrap().clear(); - *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + *state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect { target: "welcome".to_string(), - })); + }); *state.user_journey.lock().unwrap() = None; Ok(()) } diff --git a/src-tauri/src/state/reducers/storage.rs b/src-tauri/src/state/reducers/storage.rs index 2be17129a..2c6d37405 100644 --- a/src-tauri/src/state/reducers/storage.rs +++ b/src-tauri/src/state/reducers/storage.rs @@ -1,10 +1,6 @@ use crate::{ crypto::stronghold::StrongholdManager, - state::{ - actions::Action, - user_prompt::{CurrentUserPrompt, CurrentUserPromptType, Redirect}, - AppState, IdentityManager, - }, + state::{actions::Action, user_prompt::CurrentUserPrompt, AppState, IdentityManager}, }; use did_key::{from_existing_key, Ed25519KeyPair}; use log::info; @@ -52,10 +48,9 @@ pub async fn unlock_storage(state: &AppState, action: Action) -> anyhow::Result< .current_user_prompt .lock() .unwrap() - .replace(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + .replace(CurrentUserPrompt::Redirect { target: "me".to_string(), - })); + }); Ok(()) } diff --git a/src-tauri/src/state/user_prompt.rs b/src-tauri/src/state/user_prompt.rs index 439b1455c..8b34df0b0 100644 --- a/src-tauri/src/state/user_prompt.rs +++ b/src-tauri/src/state/user_prompt.rs @@ -1,104 +1,61 @@ +use oid4vci::credential_offer::CredentialOffer; +use serde::{Deserialize, Serialize}; +use ts_rs::TS; + /// "User prompts" are a way for the backend to communicate a desired/required user interaction to the frontend. /// This application design leaves it up to the frontend how it wants to handle such "user prompts". /// Having too much frontend logic in the backend would pollute the loose coupling and make it a lot harder to maintain. /// For example, the backend can "ask" the frontend to redirect the user to a specific page (e.g. the welcome page). /// Another example would be that the backend requires some user input to continue, but does not want to be specific about what /// is displayed to the user exactly. -use serde::{Deserialize, Serialize}; -use ts_rs::TS; - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/Redirect.ts")] -#[serde(deny_unknown_fields)] -pub struct Redirect { - pub r#type: CurrentUserPromptType, - pub target: String, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/Warning.ts")] -#[serde(deny_unknown_fields)] -pub struct Warning { - pub r#type: CurrentUserPromptType, - pub message: String, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/Selection.ts")] -#[serde(deny_unknown_fields)] -pub struct Selection { - pub r#type: CurrentUserPromptType, - /// An option is in the form: (, ) - // pub options: Vec<(String, String)>, - pub options: Vec, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/CredentialOffer.ts")] -#[serde(deny_unknown_fields)] -pub struct CredentialOffer { - pub r#type: CurrentUserPromptType, - pub issuer_name: String, - pub logo_uri: Option, - #[ts(type = "object")] - pub credential_offer: serde_json::Value, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/PasswordRequired.ts")] -#[serde(deny_unknown_fields)] -pub struct PasswordRequired { - pub r#type: CurrentUserPromptType, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/AcceptConnection.ts")] -#[serde(deny_unknown_fields)] -pub struct AcceptConnection { - pub r#type: CurrentUserPromptType, - pub client_name: String, - pub logo_uri: Option, - pub redirect_uri: String, - pub previously_connected: bool, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/ShareCredentials.ts")] -#[serde(deny_unknown_fields)] -pub struct ShareCredentials { - pub r#type: CurrentUserPromptType, - pub client_name: String, - pub logo_uri: Option, - pub options: Vec, -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[serde(untagged)] -#[ts(export, export_to = "bindings/user-prompt/CurrentUserPrompt.ts")] +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq, TS)] +#[serde(tag = "type")] +#[ts(export)] pub enum CurrentUserPrompt { - Redirect(Redirect), - Warning(Warning), - Selection(Selection), - CredentialOffer(CredentialOffer), - PasswordRequired(PasswordRequired), - AcceptConnection(AcceptConnection), - ShareCredentials(ShareCredentials), -} - -#[derive(Clone, Serialize, Deserialize, Debug, TS, PartialEq)] -#[ts(export, export_to = "bindings/user-prompt/CurrentUserPromptType.ts")] -pub enum CurrentUserPromptType { #[serde(rename = "redirect")] - Redirect, - // TODO: remove or rename generic warning + Redirect { target: String }, #[serde(rename = "warning")] - Warning, - #[serde(rename = "accept-connection")] // SIOPv2 - AcceptConnection, - #[serde(rename = "share-credentials")] // VP - ShareCredentials, - #[serde(rename = "credential-offer")] - CredentialOffer, + Warning { message: String }, + #[serde(rename = "selection")] + Selection { options: Vec }, #[serde(rename = "password-required")] PasswordRequired, + #[serde(rename = "accept-connection")] + AcceptConnection { + client_name: String, + logo_uri: Option, + redirect_uri: String, + previously_connected: bool, + }, + #[serde(rename = "credential-offer")] + CredentialOffer { + issuer_name: String, + logo_uri: Option, + #[ts(type = "object")] + credential_offer: CredentialOffer, + }, + #[serde(rename = "share-credentials")] + ShareCredentials { + client_name: String, + logo_uri: Option, + options: Vec, + }, +} + +#[test] +fn test() { + // let up = CurrentUserPrompt::CredentialOffer { + // issuer_name: "test".into(), + // logo_uri: None, + // credential_offer: serde_json::json!({}), + // }; + + let up2 = CurrentUserPrompt::Redirect { target: "test".into() }; + + // let json = serde_json::to_string_pretty(&up).unwrap(); + // println!("{}", json); + let json = serde_json::to_string_pretty(&up2).unwrap(); + println!("{}", json); + + // let cup: CurrentUserPrompt = serde_json::from_str(&json).unwrap(); } From e7d17fb5fe26fd710e77a954699a0c8f508f0c47 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 10 Oct 2023 23:10:37 +0800 Subject: [PATCH 10/62] fix: deprecate Selection --- src-tauri/src/state/user_prompt.rs | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src-tauri/src/state/user_prompt.rs b/src-tauri/src/state/user_prompt.rs index 8b34df0b0..2ceecb93d 100644 --- a/src-tauri/src/state/user_prompt.rs +++ b/src-tauri/src/state/user_prompt.rs @@ -16,8 +16,6 @@ pub enum CurrentUserPrompt { Redirect { target: String }, #[serde(rename = "warning")] Warning { message: String }, - #[serde(rename = "selection")] - Selection { options: Vec }, #[serde(rename = "password-required")] PasswordRequired, #[serde(rename = "accept-connection")] @@ -41,21 +39,3 @@ pub enum CurrentUserPrompt { options: Vec, }, } - -#[test] -fn test() { - // let up = CurrentUserPrompt::CredentialOffer { - // issuer_name: "test".into(), - // logo_uri: None, - // credential_offer: serde_json::json!({}), - // }; - - let up2 = CurrentUserPrompt::Redirect { target: "test".into() }; - - // let json = serde_json::to_string_pretty(&up).unwrap(); - // println!("{}", json); - let json = serde_json::to_string_pretty(&up2).unwrap(); - println!("{}", json); - - // let cup: CurrentUserPrompt = serde_json::from_str(&json).unwrap(); -} From 6b690bea7899d272e9e254afc61d84eee5b4d937 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 10 Oct 2023 23:11:15 +0800 Subject: [PATCH 11/62] fix: remove user-prompt bindings --- src-tauri/bindings/CurrentUserPrompt.ts | 2 +- src-tauri/bindings/user-prompt/AcceptConnection.ts | 4 ---- src-tauri/bindings/user-prompt/CredentialOffer.ts | 4 ---- src-tauri/bindings/user-prompt/CurrentUserPrompt.ts | 10 ---------- .../bindings/user-prompt/CurrentUserPromptType.ts | 3 --- src-tauri/bindings/user-prompt/PasswordRequired.ts | 4 ---- src-tauri/bindings/user-prompt/Redirect.ts | 4 ---- src-tauri/bindings/user-prompt/Selection.ts | 4 ---- src-tauri/bindings/user-prompt/ShareCredentials.ts | 4 ---- src-tauri/bindings/user-prompt/Warning.ts | 4 ---- src/routes/+layout.svelte | 5 +---- src/stores.ts | 3 +-- 12 files changed, 3 insertions(+), 48 deletions(-) delete mode 100644 src-tauri/bindings/user-prompt/AcceptConnection.ts delete mode 100644 src-tauri/bindings/user-prompt/CredentialOffer.ts delete mode 100644 src-tauri/bindings/user-prompt/CurrentUserPrompt.ts delete mode 100644 src-tauri/bindings/user-prompt/CurrentUserPromptType.ts delete mode 100644 src-tauri/bindings/user-prompt/PasswordRequired.ts delete mode 100644 src-tauri/bindings/user-prompt/Redirect.ts delete mode 100644 src-tauri/bindings/user-prompt/Selection.ts delete mode 100644 src-tauri/bindings/user-prompt/ShareCredentials.ts delete mode 100644 src-tauri/bindings/user-prompt/Warning.ts diff --git a/src-tauri/bindings/CurrentUserPrompt.ts b/src-tauri/bindings/CurrentUserPrompt.ts index 26b72f984..dfa3644dd 100644 --- a/src-tauri/bindings/CurrentUserPrompt.ts +++ b/src-tauri/bindings/CurrentUserPrompt.ts @@ -1,3 +1,3 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type CurrentUserPrompt = { "type": "redirect", target: string, } | { "type": "warning", message: string, } | { "type": "selection", options: Array, } | { "type": "password-required" } | { "type": "accept-connection", client_name: string, logo_uri: string | null, redirect_uri: string, previously_connected: boolean, } | { "type": "credential-offer", issuer_name: string, logo_uri: string | null, credential_offer: object, } | { "type": "share-credentials", client_name: string, logo_uri: string | null, options: Array, }; \ No newline at end of file +export type CurrentUserPrompt = { "type": "redirect", target: string, } | { "type": "warning", message: string, } | { "type": "password-required" } | { "type": "accept-connection", client_name: string, logo_uri: string | null, redirect_uri: string, previously_connected: boolean, } | { "type": "credential-offer", issuer_name: string, logo_uri: string | null, credential_offer: object, } | { "type": "share-credentials", client_name: string, logo_uri: string | null, options: Array, }; \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/AcceptConnection.ts b/src-tauri/bindings/user-prompt/AcceptConnection.ts deleted file mode 100644 index 6475dd308..000000000 --- a/src-tauri/bindings/user-prompt/AcceptConnection.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface AcceptConnection { type: CurrentUserPromptType, client_name: string, logo_uri: string | null, redirect_uri: string, previously_connected: boolean, } \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/CredentialOffer.ts b/src-tauri/bindings/user-prompt/CredentialOffer.ts deleted file mode 100644 index 9eee659f1..000000000 --- a/src-tauri/bindings/user-prompt/CredentialOffer.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface CredentialOffer { type: CurrentUserPromptType, issuer_name: string, logo_uri: string | null, credential_offer: object, } \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/CurrentUserPrompt.ts b/src-tauri/bindings/user-prompt/CurrentUserPrompt.ts deleted file mode 100644 index 43cf48436..000000000 --- a/src-tauri/bindings/user-prompt/CurrentUserPrompt.ts +++ /dev/null @@ -1,10 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { AcceptConnection } from "./AcceptConnection"; -import type { CredentialOffer } from "./CredentialOffer"; -import type { PasswordRequired } from "./PasswordRequired"; -import type { Redirect } from "./Redirect"; -import type { Selection } from "./Selection"; -import type { ShareCredentials } from "./ShareCredentials"; -import type { Warning } from "./Warning"; - -export type CurrentUserPrompt = Redirect | Warning | Selection | CredentialOffer | PasswordRequired | AcceptConnection | ShareCredentials; \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/CurrentUserPromptType.ts b/src-tauri/bindings/user-prompt/CurrentUserPromptType.ts deleted file mode 100644 index fa9a2c082..000000000 --- a/src-tauri/bindings/user-prompt/CurrentUserPromptType.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export type CurrentUserPromptType = "redirect" | "warning" | "accept-connection" | "share-credentials" | "credential-offer" | "password-required"; \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/PasswordRequired.ts b/src-tauri/bindings/user-prompt/PasswordRequired.ts deleted file mode 100644 index 2a1b136d9..000000000 --- a/src-tauri/bindings/user-prompt/PasswordRequired.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface PasswordRequired { type: CurrentUserPromptType, } \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/Redirect.ts b/src-tauri/bindings/user-prompt/Redirect.ts deleted file mode 100644 index 07a073ffa..000000000 --- a/src-tauri/bindings/user-prompt/Redirect.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface Redirect { type: CurrentUserPromptType, target: string, } \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/Selection.ts b/src-tauri/bindings/user-prompt/Selection.ts deleted file mode 100644 index c84918181..000000000 --- a/src-tauri/bindings/user-prompt/Selection.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface Selection { type: CurrentUserPromptType, options: Array, } \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/ShareCredentials.ts b/src-tauri/bindings/user-prompt/ShareCredentials.ts deleted file mode 100644 index 7875b9b39..000000000 --- a/src-tauri/bindings/user-prompt/ShareCredentials.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface ShareCredentials { type: CurrentUserPromptType, client_name: string, logo_uri: string | null, options: Array, } \ No newline at end of file diff --git a/src-tauri/bindings/user-prompt/Warning.ts b/src-tauri/bindings/user-prompt/Warning.ts deleted file mode 100644 index 23aff8ca3..000000000 --- a/src-tauri/bindings/user-prompt/Warning.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { CurrentUserPromptType } from "./CurrentUserPromptType"; - -export interface Warning { type: CurrentUserPromptType, message: string, } \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 5f68635d3..50a586618 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -19,14 +19,12 @@ import Trash from '~icons/ph/trash'; import Warning from '~icons/ph/warning'; - import type { Selection } from '../../src-tauri/bindings/user-prompt/Selection'; - import '../app.css'; import { melt } from '@melt-ui/svelte'; import Button from '$src/lib/components/Button.svelte'; - import BottomDrawer from '$src/lib/components/molecules/dialogs/BottomDrawer.svelte'; + import BottomDrawer from '$srSelectionc/lib/components/molecules/dialogs/BottomDrawer.svelte'; import { determineTheme } from './utils'; @@ -58,7 +56,6 @@ // User prompt let type = $state?.current_user_prompt?.type; - console.log('options', ($state?.current_user_prompt as Selection)?.options); if (type && type !== 'redirect') { goto(`/prompt/${type}`); diff --git a/src/stores.ts b/src/stores.ts index 276a7c356..e1e323ac9 100644 --- a/src/stores.ts +++ b/src/stores.ts @@ -9,7 +9,6 @@ import type { Locales } from '$src/i18n/i18n-types'; // TODO: run some copy task instead of importing across root to make the frontend independent import type { TransferState as State } from '../src-tauri/bindings/TransferState'; -import type { Redirect } from '../src-tauri/bindings/user-prompt/Redirect'; interface StateChangedEvent { event: string; @@ -33,7 +32,7 @@ export const state = writable(undefined, (set) => { setLocale(state.locale as Locales); if (state.current_user_prompt?.type === 'redirect') { - const redirect_target = (state.current_user_prompt as Redirect).target; + const redirect_target = state.current_user_prompt.target; info(`redirecting to: "/${redirect_target}"`); goto(`/${redirect_target}`); } From f42ad82d305df7ef3b58c0daeb59ed0ee9d507bc Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 10 Oct 2023 23:22:23 +0800 Subject: [PATCH 12/62] test: add unit tests --- src-tauri/src/state/user_prompt.rs | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src-tauri/src/state/user_prompt.rs b/src-tauri/src/state/user_prompt.rs index 2ceecb93d..00ff40395 100644 --- a/src-tauri/src/state/user_prompt.rs +++ b/src-tauri/src/state/user_prompt.rs @@ -21,6 +21,7 @@ pub enum CurrentUserPrompt { #[serde(rename = "accept-connection")] AcceptConnection { client_name: String, + #[ts(optional)] logo_uri: Option, redirect_uri: String, previously_connected: bool, @@ -28,6 +29,7 @@ pub enum CurrentUserPrompt { #[serde(rename = "credential-offer")] CredentialOffer { issuer_name: String, + #[ts(optional)] logo_uri: Option, #[ts(type = "object")] credential_offer: CredentialOffer, @@ -35,7 +37,48 @@ pub enum CurrentUserPrompt { #[serde(rename = "share-credentials")] ShareCredentials { client_name: String, + #[ts(optional)] logo_uri: Option, options: Vec, }, } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_serialize_current_user_prompt() { + let prompt = CurrentUserPrompt::Redirect { + target: "welcome".to_string(), + }; + + let serialized = serde_json::to_string(&prompt).unwrap(); + assert_eq!(serialized, r#"{"type":"redirect","target":"welcome"}"#); + + let prompt = CurrentUserPrompt::Warning { + message: "This is a warning!".to_string(), + }; + assert_eq!( + serde_json::to_string(&prompt).unwrap(), + r#"{"type":"warning","message":"This is a warning!"}"# + ); + + let prompt = CurrentUserPrompt::PasswordRequired; + assert_eq!( + serde_json::to_string(&prompt).unwrap(), + r#"{"type":"password-required"}"# + ); + + let prompt = CurrentUserPrompt::AcceptConnection { + client_name: "Test Client".to_string(), + logo_uri: None, + redirect_uri: "https://example.com".to_string(), + previously_connected: false, + }; + assert_eq!( + serde_json::to_string(&prompt).unwrap(), + r#"{"type":"accept-connection","client_name":"Test Client","logo_uri":null,"redirect_uri":"https://example.com","previously_connected":false}"# + ); + } +} From 6e6cf5d3a02296c926b238111920151af587cfe1 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 17 Oct 2023 10:54:34 +0800 Subject: [PATCH 13/62] fix: fix rebase --- src/routes/+layout.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 50a586618..96ec7b333 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -24,7 +24,7 @@ import { melt } from '@melt-ui/svelte'; import Button from '$src/lib/components/Button.svelte'; - import BottomDrawer from '$srSelectionc/lib/components/molecules/dialogs/BottomDrawer.svelte'; + import BottomDrawer from '$src/lib/components/molecules/dialogs/BottomDrawer.svelte'; import { determineTheme } from './utils'; From e39d2dc1c5fac56888e63c5000fa76e663b699d1 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 17 Oct 2023 11:11:38 +0800 Subject: [PATCH 14/62] fix: update bindings --- src-tauri/bindings/CurrentUserPrompt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/bindings/CurrentUserPrompt.ts b/src-tauri/bindings/CurrentUserPrompt.ts index dfa3644dd..8eef430a0 100644 --- a/src-tauri/bindings/CurrentUserPrompt.ts +++ b/src-tauri/bindings/CurrentUserPrompt.ts @@ -1,3 +1,3 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -export type CurrentUserPrompt = { "type": "redirect", target: string, } | { "type": "warning", message: string, } | { "type": "password-required" } | { "type": "accept-connection", client_name: string, logo_uri: string | null, redirect_uri: string, previously_connected: boolean, } | { "type": "credential-offer", issuer_name: string, logo_uri: string | null, credential_offer: object, } | { "type": "share-credentials", client_name: string, logo_uri: string | null, options: Array, }; \ No newline at end of file +export type CurrentUserPrompt = { "type": "redirect", target: string, } | { "type": "warning", message: string, } | { "type": "password-required" } | { "type": "accept-connection", client_name: string, logo_uri?: string, redirect_uri: string, previously_connected: boolean, } | { "type": "credential-offer", issuer_name: string, logo_uri?: string, credential_offer: object, } | { "type": "share-credentials", client_name: string, logo_uri?: string, options: Array, }; \ No newline at end of file From b4d53a8740dd9d6b5057180bbbc20f0ad410ccbb Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 11:00:44 +0800 Subject: [PATCH 15/62] fix: remove redundant TransferState --- src-tauri/Cargo.lock | 1 + src-tauri/Cargo.toml | 1 + .../{TransferState.ts => AppState.ts} | 2 +- src-tauri/src/command.rs | 56 +++++++++---------- src-tauri/src/state/mod.rs | 38 +++---------- src-tauri/src/state/persistence.rs | 17 +++--- src-tauri/tests/common/assert_state_update.rs | 27 +++++---- src/stores.ts | 2 +- 8 files changed, 61 insertions(+), 83 deletions(-) rename src-tauri/bindings/{TransferState.ts => AppState.ts} (60%) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 53b3edf74..4bf19d05b 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2993,6 +2993,7 @@ dependencies = [ "async-recursion", "base64 0.13.1", "chrono", + "derivative", "did-key", "fern", "futures", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 20b8781ac..72143fa74 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -54,6 +54,7 @@ async-recursion = "1.0" uuid = { version = "1.4", features = ["v4", "fast-rng"] } chrono = "0.4" sha256 = "1.4" +derivative = "2.2" [dev-dependencies] tauri = { version = "=2.0.0-alpha.15", features = ["rustls-tls", "test"] } diff --git a/src-tauri/bindings/TransferState.ts b/src-tauri/bindings/AppState.ts similarity index 60% rename from src-tauri/bindings/TransferState.ts rename to src-tauri/bindings/AppState.ts index a147710e6..f5372eb4f 100644 --- a/src-tauri/bindings/TransferState.ts +++ b/src-tauri/bindings/AppState.ts @@ -5,4 +5,4 @@ import type { DisplayCredential } from "./display-credential/DisplayCredential"; import type { Locale } from "./Locale"; import type { Profile } from "./Profile"; -export interface TransferState { active_profile: Profile | null, locale: Locale, credentials: Array, current_user_prompt: CurrentUserPrompt | null, debug_messages: Array, user_journey?: object, connections: Array, } \ No newline at end of file +export interface AppState { active_profile: Profile | null, locale: Locale, credentials: Array, current_user_prompt: CurrentUserPrompt | null, debug_messages: Array, user_journey: object, connections: Array, } \ No newline at end of file diff --git a/src-tauri/src/command.rs b/src-tauri/src/command.rs index 0201ee973..f919c5cb2 100644 --- a/src-tauri/src/command.rs +++ b/src-tauri/src/command.rs @@ -11,7 +11,7 @@ use crate::state::reducers::{ update_profile_settings, }; use crate::state::user_prompt::CurrentUserPrompt; -use crate::state::{AppState, TransferState}; +use crate::state::AppState; use log::{info, warn}; use oid4vc_core::authorization_request::AuthorizationRequest; use oid4vci::credential_offer::CredentialOfferQuery; @@ -27,12 +27,12 @@ pub(crate) async fn handle_action_inner( match r#type { ActionType::GetState => { - let transfer_state: TransferState = load_state().await.unwrap_or_default(); - // TODO: find a better way to populate all fields with values from json file - *app_state.active_profile.lock().unwrap() = transfer_state.active_profile; - *app_state.locale.lock().unwrap() = transfer_state.locale; - *app_state.connections.lock().unwrap() = transfer_state.connections; + let loaded_state: AppState = load_state().await.unwrap_or_default(); + + *app_state.active_profile.lock().unwrap() = loaded_state.active_profile.lock().unwrap().clone(); + *app_state.locale.lock().unwrap() = loaded_state.locale.lock().unwrap().clone(); + *app_state.connections.lock().unwrap() = loaded_state.connections.lock().unwrap().clone(); if app_state.active_profile.lock().unwrap().is_some() { *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::PasswordRequired); @@ -45,7 +45,7 @@ pub(crate) async fn handle_action_inner( } ActionType::UnlockStorage => { if unlock_storage(app_state, Action { r#type, payload }).await.is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::Reset => { @@ -57,25 +57,25 @@ pub(crate) async fn handle_action_inner( ActionType::CreateNew => { let action = Action { r#type, payload }; if initialize_stronghold(app_state, action.clone()).await.is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } if create_identity(app_state, action).await.is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } // When everything is done, we redirect the user to the "me" page *app_state.current_user_prompt.lock().unwrap() = Some(CurrentUserPrompt::Redirect { target: "me".to_string(), }); - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } ActionType::SetLocale => { if set_locale(app_state, Action { r#type, payload }).is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::UpdateProfileSettings => { if update_profile_settings(app_state, Action { r#type, payload }).is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::QrCodeScanned => { @@ -111,14 +111,14 @@ pub(crate) async fn handle_action_inner( } else { info!("Unable to parse QR code data"); }; - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } ActionType::ReadRequest => { if read_authorization_request(app_state, Action { r#type, payload }) .await .is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::ConnectionAccepted => { @@ -126,7 +126,7 @@ pub(crate) async fn handle_action_inner( .await .is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::ReadCredentialOffer => { @@ -134,7 +134,7 @@ pub(crate) async fn handle_action_inner( .await .is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::CancelUserFlow => { @@ -151,11 +151,11 @@ pub(crate) async fn handle_action_inner( app_state.current_user_prompt.lock().unwrap().take(); } - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } ActionType::LoadDevProfile => { if load_dev_profile(app_state, Action { r#type, payload }).await.is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::CredentialsSelected => { @@ -163,7 +163,7 @@ pub(crate) async fn handle_action_inner( .await .is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::CredentialOffersSelected => { @@ -171,7 +171,7 @@ pub(crate) async fn handle_action_inner( .await .is_ok() { - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::UpdateCredentialMetadata => { @@ -180,12 +180,12 @@ pub(crate) async fn handle_action_inner( .is_ok() { *app_state.current_user_prompt.lock().unwrap() = None; - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } } ActionType::CancelUserJourney => { *app_state.user_journey.lock().unwrap() = None; - save_state(TransferState::from(app_state)).await.ok(); + save_state(app_state).await.ok(); } ActionType::Unknown => { warn!( @@ -208,18 +208,14 @@ pub async fn handle_action( ) -> Result<(), String> { handle_action_inner(action, _app_handle, app_state.inner()).await.ok(); - let updated_state = TransferState::from(app_state.inner()); - emit_event(window, updated_state).ok(); + emit_event(window, app_state.inner()).ok(); Result::Ok(()) } -fn emit_event(window: tauri::Window, transfer_state: TransferState) -> anyhow::Result<()> { +fn emit_event(window: tauri::Window, app_state: &AppState) -> anyhow::Result<()> { const STATE_CHANGED_EVENT: &str = "state-changed"; - window.emit(STATE_CHANGED_EVENT, &transfer_state)?; - info!( - "emitted event `{}` with payload `{:?}`", - STATE_CHANGED_EVENT, &transfer_state - ); + window.emit(STATE_CHANGED_EVENT, app_state)?; + info!("emitted event `{}` with payload `{:?}`", STATE_CHANGED_EVENT, app_state); Ok(()) } diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index 0d8eb7902..7b9d60b16 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -7,6 +7,7 @@ use crate::{ crypto::stronghold::StrongholdManager, state::user_prompt::CurrentUserPrompt, verifiable_credential_record::DisplayCredential, }; +use derivative::Derivative; use oid4vc_core::Subject; use oid4vc_manager::ProviderManager; use oid4vci::Wallet; @@ -29,51 +30,26 @@ pub struct Managers { } /// The inner state of the application managed by Tauri. -#[derive(Default, Serialize, Deserialize)] -#[serde(default)] +#[derive(Default, Serialize, Deserialize, Derivative, TS)] +#[derivative(Debug)] +#[ts(export)] pub struct AppState { #[serde(skip)] + #[derivative(Debug = "ignore")] pub managers: tauri::async_runtime::Mutex, pub active_profile: Mutex>, #[serde(skip)] + #[derivative(Debug = "ignore")] pub active_connection_request: Mutex>, pub locale: Mutex, pub credentials: Mutex>, pub current_user_prompt: Mutex>, pub debug_messages: Mutex>, + #[ts(type = "object")] pub user_journey: Mutex>, pub connections: Mutex>, } -/// A representation of the current state which is used for serialization. -#[derive(Clone, Debug, Deserialize, Serialize, TS, Default, PartialEq)] -#[ts(export)] -#[serde(default)] -pub struct TransferState { - pub active_profile: Option, - pub locale: Locale, - pub credentials: Vec, - pub current_user_prompt: Option, - pub debug_messages: Vec, - #[ts(optional, type = "object")] - pub user_journey: Option, - pub connections: Vec, -} - -impl From<&AppState> for TransferState { - fn from(state: &AppState) -> TransferState { - TransferState { - active_profile: state.active_profile.lock().unwrap().clone(), - locale: state.locale.lock().unwrap().clone(), - credentials: state.credentials.lock().unwrap().clone(), - current_user_prompt: state.current_user_prompt.lock().unwrap().clone(), - debug_messages: state.debug_messages.lock().unwrap().clone(), - user_journey: state.user_journey.lock().unwrap().clone(), - connections: state.connections.lock().unwrap().clone(), - } - } -} - #[derive(Clone, Serialize, Debug, Deserialize, TS, PartialEq, Default)] #[serde(rename_all = "lowercase")] #[ts(export)] diff --git a/src-tauri/src/state/persistence.rs b/src-tauri/src/state/persistence.rs index 83eee99fb..d9cf43b80 100644 --- a/src-tauri/src/state/persistence.rs +++ b/src-tauri/src/state/persistence.rs @@ -4,26 +4,25 @@ use tokio::{ io::AsyncWriteExt, }; -use crate::state::TransferState; +use crate::state::AppState; use crate::STATE_FILE; -/// Loads a [TransferState] from the app's data directory. +/// Loads an [AppState] from the app's data directory. /// If it does not exist or it cannot be parsed, it will fallback to default values. -pub async fn load_state() -> anyhow::Result { +pub async fn load_state() -> anyhow::Result { let state_file = STATE_FILE.lock().unwrap().clone(); let bytes = read(state_file).await?; let content = String::from_utf8(bytes)?; - let transfer_state: TransferState = serde_json::from_str(&content)?; + let app_state: AppState = serde_json::from_str(&content)?; debug!("state loaded from disk"); - Ok(transfer_state) + Ok(app_state) } -/// Persists a [TransferState] to the app's data directory. -pub async fn save_state(transfer_state: TransferState) -> anyhow::Result<()> { +/// Persists a [AppState] to the app's data directory. +pub async fn save_state(app_state: &AppState) -> anyhow::Result<()> { let state_file = STATE_FILE.lock().unwrap().clone(); let mut file = File::create(state_file).await?; - file.write_all(serde_json::to_string(&transfer_state)?.as_bytes()) - .await?; + file.write_all(serde_json::to_string(app_state)?.as_bytes()).await?; debug!("state saved to disk"); Ok(()) } diff --git a/src-tauri/tests/common/assert_state_update.rs b/src-tauri/tests/common/assert_state_update.rs index 08a868f39..969b045d3 100644 --- a/src-tauri/tests/common/assert_state_update.rs +++ b/src-tauri/tests/common/assert_state_update.rs @@ -1,5 +1,5 @@ use identity_wallet::{ - state::{actions::Action, persistence::save_state, AppState, TransferState}, + state::{actions::Action, persistence::save_state, AppState}, STATE_FILE, STRONGHOLD, }; use serde_json::json; @@ -10,10 +10,10 @@ use tempfile::NamedTempFile; pub async fn assert_state_update( current_state: AppState, actions: Vec, - expected_states: Vec>, + expected_states: Vec>, ) { // Save the current state to the state file. - save_state(TransferState::from(¤t_state)).await.unwrap(); + save_state(¤t_state).await.unwrap(); // Initialize the app with the given state and action handler. let app = tauri::test::mock_builder() @@ -43,15 +43,15 @@ pub async fn assert_state_update( // Assert that the state is updated as expected. if let Some(expected_state) = expected_state { - let TransferState { + let AppState { active_profile, locale, credentials, current_user_prompt, .. - } = TransferState::from(app.app_handle().state::().inner()); + } = app.app_handle().state::().inner(); - let TransferState { + let AppState { active_profile: expected_active_profile, locale: expected_locale, credentials: expected_credentials, @@ -59,15 +59,20 @@ pub async fn assert_state_update( .. } = expected_state; - match (active_profile.as_ref(), expected_active_profile.as_ref()) { + let active_profile = active_profile.lock().unwrap().clone(); + let expected_active_profile = expected_active_profile.lock().unwrap().clone(); + match (active_profile, expected_active_profile) { (Some(active_profile), Some(expected_active_profile)) => { assert_eq!(active_profile.name, expected_active_profile.name); } - _ => assert_eq!(active_profile, *expected_active_profile), + (active_profile, expected_active_profile) => assert_eq!(active_profile, expected_active_profile), } - assert_eq!(locale, *expected_locale); - assert_eq!(credentials, *expected_credentials); - assert_eq!(current_user_prompt, *expected_current_user_prompt); + assert_eq!(*locale.lock().unwrap(), *expected_locale.lock().unwrap()); + assert_eq!(*credentials.lock().unwrap(), *expected_credentials.lock().unwrap()); + assert_eq!( + *current_user_prompt.lock().unwrap(), + *expected_current_user_prompt.lock().unwrap() + ); } } } diff --git a/src/stores.ts b/src/stores.ts index e1e323ac9..045cd7215 100644 --- a/src/stores.ts +++ b/src/stores.ts @@ -8,7 +8,7 @@ import { setLocale } from '$src/i18n/i18n-svelte'; import type { Locales } from '$src/i18n/i18n-types'; // TODO: run some copy task instead of importing across root to make the frontend independent -import type { TransferState as State } from '../src-tauri/bindings/TransferState'; +import type { AppState as State } from '../src-tauri/bindings/AppState'; interface StateChangedEvent { event: string; From ac2c4bba7f665a7f63dc6c065362801309d7dd99 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 17 Oct 2023 11:46:19 +0800 Subject: [PATCH 16/62] test: add `test_app_state_serialize` unit test --- src-tauri/Cargo.lock | 7 +++++ src-tauri/Cargo.toml | 1 + src-tauri/src/state/mod.rs | 54 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 4bf19d05b..59e785033 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2999,6 +2999,7 @@ dependencies = [ "futures", "identity_core 0.7.0-alpha.7", "identity_credential 1.0.0-rc.1", + "indoc", "iota_stronghold 2.0.0", "jsonwebtoken", "lazy_static", @@ -3339,6 +3340,12 @@ dependencies = [ "serde", ] +[[package]] +name = "indoc" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" + [[package]] name = "infer" version = "0.12.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 72143fa74..e40944d16 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -65,6 +65,7 @@ reqwest = { version = "0.11", default-features = false, features = [ "rustls-tls", ] } url = "2.4" +indoc = "2.0" [features] # this feature is used for production builds or when `devPath` points to the filesystem diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index 7b9d60b16..df077728c 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -82,3 +82,57 @@ pub struct Connection { pub first_connected: String, pub last_connected: String, } + +#[cfg(test)] +mod tests { + use super::*; + use crate::state::user_prompt::{CurrentUserPromptType, Redirect}; + use indoc::indoc; + + #[test] + fn test_app_state_serialize() { + let state = AppState { + active_profile: Mutex::new(Some(Profile { + name: "John Doe".to_string(), + picture: None, + theme: None, + primary_did: "did:example:123".to_string(), + })), + locale: Mutex::new(Locale::En), + credentials: Mutex::new(vec![]), + current_user_prompt: Mutex::new(Some(CurrentUserPrompt::Redirect(Redirect { + r#type: CurrentUserPromptType::Redirect, + target: "me".to_string(), + }))), + debug_messages: Mutex::new(vec![]), + user_journey: Mutex::new(None), + connections: Mutex::new(vec![]), + ..Default::default() + }; + + let serialized = serde_json::to_string_pretty(&state).unwrap(); + + // AppState is serialized without the `managers` and `active_connection_request` fields. + assert_eq!( + serialized, + indoc! { + r#"{ + "active_profile": { + "name": "John Doe", + "picture": null, + "theme": null, + "primary_did": "did:example:123" + }, + "locale": "en", + "credentials": [], + "current_user_prompt": { + "type": "redirect", + "target": "me" + }, + "debug_messages": [], + "user_journey": null, + "connections": [] + }"#} + ); + } +} From 5fb068af75c5a32a3d19b04e8f7b6f0755e7aca1 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 17 Oct 2023 12:01:46 +0800 Subject: [PATCH 17/62] docs: improve description --- src-tauri/src/state/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index df077728c..4e4f4f3c2 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -29,7 +29,8 @@ pub struct Managers { pub identity_manager: Option, } -/// The inner state of the application managed by Tauri. +/// The inner state of the application managed by Tauri. When the state is serialized in order to be sent to the +/// frontend, the `managers` and `active_connection_request` fields are skipped. #[derive(Default, Serialize, Deserialize, Derivative, TS)] #[derivative(Debug)] #[ts(export)] From 0939e547dc9851226176ac066fd0674224e58e8e Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 18 Oct 2023 10:41:02 +0800 Subject: [PATCH 18/62] fix: replace TransferState in tests --- src-tauri/src/state/mod.rs | 7 +++---- src-tauri/tests/tests/get_state.rs | 10 +++++----- src-tauri/tests/tests/load_dev_profile.rs | 13 ++++++------- src-tauri/tests/tests/qr_code_scanned.rs | 12 ++++++------ 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index 4e4f4f3c2..997847dd9 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -34,6 +34,7 @@ pub struct Managers { #[derive(Default, Serialize, Deserialize, Derivative, TS)] #[derivative(Debug)] #[ts(export)] +#[serde(default)] pub struct AppState { #[serde(skip)] #[derivative(Debug = "ignore")] @@ -87,7 +88,6 @@ pub struct Connection { #[cfg(test)] mod tests { use super::*; - use crate::state::user_prompt::{CurrentUserPromptType, Redirect}; use indoc::indoc; #[test] @@ -101,10 +101,9 @@ mod tests { })), locale: Mutex::new(Locale::En), credentials: Mutex::new(vec![]), - current_user_prompt: Mutex::new(Some(CurrentUserPrompt::Redirect(Redirect { - r#type: CurrentUserPromptType::Redirect, + current_user_prompt: Mutex::new(Some(CurrentUserPrompt::Redirect { target: "me".to_string(), - }))), + })), debug_messages: Mutex::new(vec![]), user_journey: Mutex::new(None), connections: Mutex::new(vec![]), diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index ee70b5827..ad03770f8 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -1,7 +1,7 @@ use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; use crate::common::{json_example, test_managers}; use identity_wallet::state::Profile; -use identity_wallet::state::{actions::Action, AppState, TransferState}; +use identity_wallet::state::{actions::Action, AppState}; use std::sync::Mutex; #[tokio::test] @@ -11,8 +11,8 @@ async fn test_get_state_create_new() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/fixtures/states/no_profile_redirect_welcome.json"); - let state2 = json_example::("tests/fixtures/states/active_pf_redirect_me.json"); + let state1 = json_example::("tests/fixtures/states/no_profile_redirect_welcome.json"); + let state2 = json_example::("tests/fixtures/states/active_pf_redirect_me.json"); let action1 = json_example::("tests/fixtures/actions/get_state.json"); let action2 = json_example::("tests/fixtures/actions/create_new.json"); assert_state_update( @@ -40,8 +40,8 @@ async fn test_get_state_unlock_storage() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/fixtures/states/active_pf_password_required.json"); - let state2 = json_example::("tests/fixtures/states/active_pf_redirect_me.json"); + let state1 = json_example::("tests/fixtures/states/active_pf_password_required.json"); + let state2 = json_example::("tests/fixtures/states/active_pf_redirect_me.json"); let action1 = json_example::("tests/fixtures/actions/get_state.json"); let action2 = json_example::("tests/fixtures/actions/unlock_storage.json"); assert_state_update( diff --git a/src-tauri/tests/tests/load_dev_profile.rs b/src-tauri/tests/tests/load_dev_profile.rs index e1bcf9e50..46033e34d 100644 --- a/src-tauri/tests/tests/load_dev_profile.rs +++ b/src-tauri/tests/tests/load_dev_profile.rs @@ -1,6 +1,6 @@ use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; use crate::common::json_example; -use identity_wallet::state::{actions::Action, AppState, TransferState}; +use identity_wallet::state::{actions::Action, AppState}; #[tokio::test] #[serial_test::serial] @@ -9,8 +9,7 @@ async fn test_load_dev_profile() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state = - json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let state = json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); let action = json_example::("tests/fixtures/actions/dev_load_profile.json"); assert_state_update(AppState::default(), vec![action], vec![Some(state)]).await; } @@ -22,8 +21,8 @@ async fn test_load_dev_profile_twice() { setup_stronghold(); // Deserializing the Transferstates and Actions from the accompanying json files. - let state = - json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let state1 = json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); + let state2 = json_example::("tests/fixtures/states/pf_with_driverl_and_personal_info_redirect_me.json"); let action = json_example::("tests/fixtures/actions/dev_load_profile.json"); assert_state_update( AppState::default(), @@ -34,8 +33,8 @@ async fn test_load_dev_profile_twice() { ], vec![ // Each time the dev profile is loaded, the state should be the same. - Some(state.clone()), - Some(state), + Some(state1), + Some(state2), ], ) .await; diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index 66dababcf..731f26649 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -4,7 +4,7 @@ use crate::common::{ test_managers, }; use identity_wallet::{ - state::{actions::Action, AppState, Profile, TransferState}, + state::{actions::Action, AppState, Profile}, verifiable_credential_record::VerifiableCredentialRecord, }; use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::JwtVcJson; @@ -36,7 +36,7 @@ async fn test_qr_code_scanned_read_credential_offer() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state = json_example::("tests/fixtures/states/pf_credential_offer.json"); + let state = json_example::("tests/fixtures/states/pf_credential_offer.json"); let action = json_example::("tests/fixtures/actions/qr_scanned_openid_cred.json"); assert_state_update( // Initial state. @@ -76,8 +76,8 @@ async fn test_qr_code_scanned_handle_siopv2_authorization_request() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/fixtures/states/pf_accept_connect.json"); - let state2 = json_example::("tests/fixtures/states/pf_with_did_redirect_me.json"); + let state1 = json_example::("tests/fixtures/states/pf_accept_connect.json"); + let state2 = json_example::("tests/fixtures/states/pf_with_did_redirect_me.json"); let action1 = json_example::("tests/fixtures/actions/qr_scanned_id_token.json"); let action2 = json_example::("tests/fixtures/actions/authenticate_connect_accept.json"); assert_state_update( @@ -125,8 +125,8 @@ async fn test_qr_code_scanned_handle_oid4vp_authorization_request() { }); // Deserializing the Transferstates and Actions from the accompanying json files. - let state1 = json_example::("tests/fixtures/states/pf_with_person_info_share_cred.json"); - let state2 = json_example::("tests/fixtures/states/pf_with_person_info_redirect_me.json"); + let state1 = json_example::("tests/fixtures/states/pf_with_person_info_share_cred.json"); + let state2 = json_example::("tests/fixtures/states/pf_with_person_info_redirect_me.json"); let action1 = json_example::("tests/fixtures/actions/qr_scanned_vp_token.json"); let action2 = json_example::("tests/fixtures/actions/authenticate_cred_selected.json"); assert_state_update( From 4165b9e9579e3b921911cf14e399ad0bd05b70c9 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Fri, 29 Sep 2023 11:51:30 +0800 Subject: [PATCH 19/62] WIP --- src-tauri/1.mermaid | 27 ++ src-tauri/Cargo.lock | 333 +++++++++++------- src-tauri/Cargo.toml | 7 + src-tauri/flowchart.pest | 76 ++++ src-tauri/src/state/actions.rs | 24 ++ src-tauri/src/state/mod.rs | 1 + src-tauri/src/state/reducers/authorization.rs | 1 + src-tauri/tests/README.md | 35 ++ src-tauri/tests/common/assert_state_update.rs | 2 + src-tauri/tests/tests/get_state.rs | 257 ++++++++++++++ 10 files changed, 641 insertions(+), 122 deletions(-) create mode 100644 src-tauri/1.mermaid create mode 100644 src-tauri/flowchart.pest create mode 100644 src-tauri/tests/README.md diff --git a/src-tauri/1.mermaid b/src-tauri/1.mermaid new file mode 100644 index 000000000..36aa9ad22 --- /dev/null +++ b/src-tauri/1.mermaid @@ -0,0 +1,27 @@ +--- +title: Node +--- +flowchart LR + classDef action fill:#999,color:#000; + GetState1:::action + GetState2:::action + CreateNew(CreateNew):::action + UnlockStorage(UnlockStorage):::action + + classDef payload fill:#CCC,color:#555,text-align:left; + P1("`name: Ferris Crabman + picture: 129408 + theme: system + password: sup3rSecr3t + `"):::payload + P2("`password: sup3rSecr3t`"):::payload + + subgraph o + direction LR + Initial[[default_state.json]] --- GetState1(GetState) --> B[[check_state.json]] + B --- CreateNew --> C[[new_profile_created.json]] + P1 -.-> CreateNew + C --- GetState2(GetState) --> D[[password_required.json]] + D --- UnlockStorage --> E[[storage_unlocked.json]] + P2 -.-> UnlockStorage + end diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 59e785033..c7b0f8ad9 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -119,9 +119,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -297,9 +297,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1da3ae8dabd9c00f453a329dfe1fb28da3c0a72e2478cdcd93171740c20499" +checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0" dependencies = [ "async-lock", "async-task", @@ -335,7 +335,7 @@ dependencies = [ "log", "parking", "polling", - "rustix 0.37.24", + "rustix 0.37.25", "slab", "socket2 0.4.9", "waker-fn", @@ -363,7 +363,7 @@ dependencies = [ "cfg-if", "event-listener 3.0.0", "futures-lite", - "rustix 0.38.17", + "rustix 0.38.19", "windows-sys 0.48.0", ] @@ -380,9 +380,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1079d27511f6c038736279421774ef4ad4bdd2e300825f4a48c4cc463a57cedf" +checksum = "d2a5415b7abcdc9cd7d63d6badba5288b2ca017e3fbd4173b8f405449f1a2399" dependencies = [ "async-io", "async-lock", @@ -390,7 +390,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.17", + "rustix 0.38.19", "signal-hook-registry", "slab", "windows-sys 0.48.0", @@ -398,15 +398,15 @@ dependencies = [ [[package]] name = "async-task" -version = "4.4.1" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" +checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", @@ -710,9 +710,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -1538,7 +1538,7 @@ dependencies = [ "hashbrown 0.14.1", "lock_api", "once_cell", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] @@ -1603,10 +1603,11 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" dependencies = [ + "powerfmt", "serde", ] @@ -1678,7 +1679,7 @@ dependencies = [ "jsonschema", "serde", "serde_json", - "serde_with 3.3.0", + "serde_with 3.4.0", "url", ] @@ -1808,9 +1809,9 @@ dependencies = [ [[package]] name = "ed25519" -version = "2.2.2" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "signature 2.1.0", ] @@ -1863,7 +1864,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ "curve25519-dalek 4.1.1", - "ed25519 2.2.2", + "ed25519 2.2.3", "hashbrown 0.14.1", "hex", "rand_core 0.6.4", @@ -1919,13 +1920,13 @@ dependencies = [ [[package]] name = "embed-resource" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0a2c9b742a980060d22545a7a83b573acd6b73045b9de6370c9530ce652f27" +checksum = "f54cc3e827ee1c3812239a9a41dede7b4d7d5d5464faa32d71bd7cba28ce2cb2" dependencies = [ "cc", "rustc_version", - "toml 0.7.8", + "toml 0.8.2", "vswhom", "winreg 0.51.0", ] @@ -1984,25 +1985,14 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys 0.48.0", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "error-code" version = "2.3.1" @@ -2113,9 +2103,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -2936,16 +2926,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows 0.48.0", + "windows-core", ] [[package]] @@ -3004,14 +2994,18 @@ dependencies = [ "jsonwebtoken", "lazy_static", "log", + "nom", "oid4vc-core", "oid4vc-manager", "oid4vci", "oid4vp", + "pest", + "pest_derive", "reqwest", "rust-argon2", "serde", "serde_json", + "serde_yaml", "serial_test", "sha256", "siopv2", @@ -3114,7 +3108,7 @@ dependencies = [ [[package]] name = "identity_core" version = "1.0.0-rc.1" -source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +source = "git+https://github.com/iotaledger/identity.rs.git#2ddfc652403337f0d4081bd83d291665289155e7" dependencies = [ "iota-crypto 0.23.0", "js-sys", @@ -3145,7 +3139,7 @@ dependencies = [ [[package]] name = "identity_credential" version = "1.0.0-rc.1" -source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +source = "git+https://github.com/iotaledger/identity.rs.git#2ddfc652403337f0d4081bd83d291665289155e7" dependencies = [ "identity_core 1.0.0-rc.1", "identity_did 1.0.0-rc.1", @@ -3182,7 +3176,7 @@ dependencies = [ [[package]] name = "identity_did" version = "1.0.0-rc.1" -source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +source = "git+https://github.com/iotaledger/identity.rs.git#2ddfc652403337f0d4081bd83d291665289155e7" dependencies = [ "did_url", "form_urlencoded", @@ -3195,7 +3189,7 @@ dependencies = [ [[package]] name = "identity_document" version = "1.0.0-rc.1" -source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +source = "git+https://github.com/iotaledger/identity.rs.git#2ddfc652403337f0d4081bd83d291665289155e7" dependencies = [ "did_url", "identity_core 1.0.0-rc.1", @@ -3269,7 +3263,7 @@ dependencies = [ [[package]] name = "identity_jose" version = "1.0.0-rc.1" -source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +source = "git+https://github.com/iotaledger/identity.rs.git#2ddfc652403337f0d4081bd83d291665289155e7" dependencies = [ "identity_core 1.0.0-rc.1", "iota-crypto 0.23.0", @@ -3283,7 +3277,7 @@ dependencies = [ [[package]] name = "identity_verification" version = "1.0.0-rc.1" -source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +source = "git+https://github.com/iotaledger/identity.rs.git#2ddfc652403337f0d4081bd83d291665289155e7" dependencies = [ "identity_core 1.0.0-rc.1", "identity_did 1.0.0-rc.1", @@ -3574,7 +3568,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.3", - "rustix 0.38.17", + "rustix 0.38.19", "windows-sys 0.48.0", ] @@ -3716,9 +3710,9 @@ dependencies = [ [[package]] name = "json-patch" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f7765dccf8c39c3a470fc694efe322969d791e713ca46bc7b5c506886157572" +checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" dependencies = [ "serde", "serde_json", @@ -3941,15 +3935,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45786cec4d5e54a224b15cb9f06751883103a27c19c93eda09b0b4f5f08fefac" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -4449,7 +4443,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.3.0", + "serde_with 3.4.0", "siopv2", "tokio", "tower-http", @@ -4475,7 +4469,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.3.0", + "serde_with 3.4.0", "tokio", ] @@ -4497,7 +4491,7 @@ dependencies = [ "oid4vci", "serde", "serde_json", - "serde_with 3.3.0", + "serde_with 3.4.0", "tokio", "url", ] @@ -4578,9 +4572,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" @@ -4600,7 +4594,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] @@ -4619,13 +4613,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "smallvec", "windows-targets 0.48.5", ] @@ -4679,6 +4673,51 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +[[package]] +name = "pest" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "pest_meta" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] + [[package]] name = "phf" version = "0.8.0" @@ -4951,6 +4990,12 @@ dependencies = [ "universal-hash 0.5.1", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -5005,9 +5050,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -5141,6 +5186,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -5154,14 +5208,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.6" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.9", - "regex-syntax 0.7.5", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -5175,13 +5229,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] @@ -5192,9 +5246,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" @@ -5285,9 +5339,9 @@ checksum = "4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0" [[package]] name = "retry-policies" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a715dc4d0e8aea3085a9a94d76e79c79c7df7c9f6be609da841a6d2489ca3687" +checksum = "17dd00bff1d737c40dbcd47d4375281bf4c17933f9eef0a185fc7bacca23ecbd" dependencies = [ "anyhow", "chrono", @@ -5370,9 +5424,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.24" +version = "0.37.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" +checksum = "d4eb579851244c2c03e7c24f501c3432bed80b8f720af1d6e5b0e0f01555a035" dependencies = [ "bitflags 1.3.2", "errno", @@ -5384,14 +5438,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.17" +version = "0.38.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25469e9ae0f3d0047ca8b93fc56843f38e6774f0914a107ff8b41be8be8e0b7" +checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", - "linux-raw-sys 0.4.9", + "linux-raw-sys 0.4.10", "windows-sys 0.48.0", ] @@ -5557,24 +5611,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" dependencies = [ "proc-macro2", "quote", @@ -5664,9 +5718,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ "base64 0.21.4", "chrono", @@ -5675,7 +5729,7 @@ dependencies = [ "indexmap 2.0.2", "serde", "serde_json", - "serde_with_macros 3.3.0", + "serde_with_macros 3.4.0", "time", ] @@ -5693,9 +5747,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" dependencies = [ "darling", "proc-macro2", @@ -5703,6 +5757,19 @@ dependencies = [ "syn 2.0.38", ] +[[package]] +name = "serde_yaml" +version = "0.9.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +dependencies = [ + "indexmap 2.0.2", + "itoa 1.0.9", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "serial_test" version = "2.0.0" @@ -5888,7 +5955,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "serde_with 3.3.0", + "serde_with 3.4.0", "tokio", "url", ] @@ -6202,7 +6269,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" dependencies = [ - "strum_macros 0.25.2", + "strum_macros 0.25.3", ] [[package]] @@ -6220,9 +6287,9 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck", "proc-macro2", @@ -6312,9 +6379,9 @@ dependencies = [ [[package]] name = "tao" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f76221bce9db3af6b2b9cca4e92d8ea46c4cc88d785bc4b1a5cbcaab06f0b56" +checksum = "f5d30690a6746dfbb26d4f41522757da1ebfd277514b58e27a80b7e55e511e52" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -6449,7 +6516,7 @@ dependencies = [ "anyhow", "cargo_toml", "heck", - "json-patch 1.1.0", + "json-patch 1.2.0", "plist", "semver", "serde", @@ -6469,7 +6536,7 @@ dependencies = [ "base64 0.21.4", "brotli", "ico", - "json-patch 1.1.0", + "json-patch 1.2.0", "plist", "png", "proc-macro2", @@ -6604,7 +6671,7 @@ dependencies = [ "heck", "html5ever", "infer", - "json-patch 1.1.0", + "json-patch 1.2.0", "kuchikiki", "log", "memchr", @@ -6614,7 +6681,7 @@ dependencies = [ "semver", "serde", "serde_json", - "serde_with 3.3.0", + "serde_with 3.4.0", "thiserror", "url", "walkdir", @@ -6640,7 +6707,7 @@ dependencies = [ "cfg-if", "fastrand 2.0.1", "redox_syscall 0.3.5", - "rustix 0.38.17", + "rustix 0.38.19", "windows-sys 0.48.0", ] @@ -6722,14 +6789,15 @@ dependencies = [ [[package]] name = "time" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", "itoa 1.0.9", "libc", "num_threads", + "powerfmt", "serde", "time-core", "time-macros", @@ -6776,9 +6844,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", "bytes", @@ -6786,6 +6854,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", + "signal-hook-registry", "socket2 0.5.4", "tokio-macros", "windows-sys 0.48.0", @@ -6907,7 +6976,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "bytes", "futures-core", "futures-util", @@ -6933,11 +7002,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -6946,9 +7014,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", @@ -6957,9 +7025,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -7066,6 +7134,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "uds_windows" version = "1.0.2" @@ -7138,6 +7212,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + [[package]] name = "untrusted" version = "0.7.1" @@ -7544,6 +7624,15 @@ dependencies = [ "windows-tokens", ] +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-implement" version = "0.48.0" @@ -7742,9 +7831,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.16" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] @@ -7771,9 +7860,9 @@ dependencies = [ [[package]] name = "wry" -version = "0.33.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf906b43b8042615c85a978dceb4d4b72214d27b850b54abc3edeb7c5a67abab" +checksum = "2cb3bc6ed7e3d905a5a963a3e4e9ee5ede76408e50de42d68e523ee75ab1c78a" dependencies = [ "base64 0.21.4", "block", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index e40944d16..15ac6aeea 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -55,6 +55,10 @@ uuid = { version = "1.4", features = ["v4", "fast-rng"] } chrono = "0.4" sha256 = "1.4" derivative = "2.2" +nom = "7.1.3" +pest = "2.7" +pest_derive = "2.7" +serde_yaml = "0.9" [dev-dependencies] tauri = { version = "=2.0.0-alpha.15", features = ["rustls-tls", "test"] } @@ -66,6 +70,9 @@ reqwest = { version = "0.11", default-features = false, features = [ ] } url = "2.4" indoc = "2.0" +pest = "2.7" +pest_derive = "2.7" +tokio = { version = "1.26.0", features = ["macros", "process"] } [features] # this feature is used for production builds or when `devPath` points to the filesystem diff --git a/src-tauri/flowchart.pest b/src-tauri/flowchart.pest new file mode 100644 index 000000000..2f6f42057 --- /dev/null +++ b/src-tauri/flowchart.pest @@ -0,0 +1,76 @@ +WHITESPACE = _{ (" "| "\t")+ } + + +dashline = @{ "-"{3,} } + +spaceless = @{!"[" ~ !"]" ~ !"|" ~ !"[\\" ~ !"{"~ !"}" ~!"-" ~!"&" ~!"(" ~ !")" ~ !"`" ~ !"\"" ~ !"`" ~ !NEWLINE ~ +!WHITESPACE ~ ANY} + +spacelessword = @{ spaceless+ } +sentence = @{ (spacelessword ~ WHITESPACE*)+ } + +// FIXME +title = { "title:" ~ sentence } +direction = { ("LR"|"TD"|"TB"|"RL"|"BT") } + + +bare = { sentence+ } +markdown = { "\"`" ~ (!"`\"" ~ sentence ~ NEWLINE?)+ ~ "`\""} +plain = {"\"" ~ (!"\"" ~ sentence )+ ~ "\""} + +content = _{ (markdown | plain | bare) } + + +ident_def_boxed = { "[" ~ content ~ "]" } +ident_def_christmas = { "[/" ~ content ~ "\\]" } +ident_def_stadium = { "(" ~ content ~ ")" } +ident_def_circle = { "((" ~ content ~ "))" } +ident_def_database = { "[(" ~ content ~ ")]" } +ident_def_diamond = { "{" ~ content ~ "}" } +ident_def_double_circle = { "(((" ~ content ~ ")))" } +ident_def_flag = { ">" ~ content ~ "]" } +ident_def_hexagon = { "{{" ~ content ~ "}}" } +ident_def_parallel = { "[/" ~ content ~ "/]" } +ident_def_parallel_alt = { "[\\" ~ content ~ "\\]" } +ident_def_rounded_box = { "([" ~ content ~ "])" } +ident_def_shopping = { "[\\" ~ content ~ "/]" } +ident_def_subroutine = { "[[" ~ content ~ "]]" } + +any_ident_def = _{ (ident_def_stadium | ident_def_boxed | ident_def_christmas | ident_def_circle | ident_def_database | ident_def_diamond | ident_def_double_circle | ident_def_flag | ident_def_hexagon | ident_def_parallel | ident_def_parallel_alt | ident_def_rounded_box | ident_def_shopping | ident_def_subroutine) } +base_ident = @{ ASCII_ALPHA ~ (ASCII_ALPHANUMERIC | "_")* } +ident = { !"end" ~ base_ident ~ any_ident_def? } + +link_annotation_pipes = { "|" ~ content ~ "|" } +link_annotation_pipeless = { !"|" ~ content ~ !"|" } +link_annotation_any = _{ (link_annotation_pipes | link_annotation_pipeless) } + +arrow_head = { ("<"|"o"|"x"|">") } +link_arrow = @{ (arrow_head ~ "-"{2,}) | ("-"{2,} ~ arrow_head) | (arrow_head ~"-"{2,} ~ arrow_head) } +link_open = @{ "-"{3,} } +link_arrow_txt = { "-"{2,} ~ link_annotation_any ~ "-"{2,} ~ arrow_head? } +link_dotted = { "-.-" ~ arrow_head? } +link_thick = @{ "="{2,} ~ arrow_head } +link_thick_txt = { "="{2,} ~ link_annotation_any ~ link_thick } +link_invisible = @{ "~~~" } + +link = { (link_arrow | link_open | link_arrow_txt | link_dotted | link_thick | link_thick_txt | link_invisible) ~ link_annotation_pipes? } + +and = _{ "&" } + +ident_comb = { ident ~ (and ~ ident)* } + +chain = { ident_comb ~ (link ~ ident_comb)* } + +header = { NEWLINE* ~ dashline ~ NEWLINE ~ title ~ NEWLINE ~ dashline ~ NEWLINE* } + +graph = { chain ~ (NEWLINE ~ chain)* } + +subgraph = { "subgraph" ~ base_ident ~ NEWLINE ~ "direction" ~ direction ~ NEWLINE ~ (graph ~ NEWLINE)+ ~ "end" ~ NEWLINE } + +body = { "flowchart" ~ direction ~ NEWLINE ~ ( (class_def | payload_assign | class_assign) ~ NEWLINE* )* ~NEWLINE? ~ ( subgraph | graph )+ } + +file = { SOI ~ header? ~ body? ~ NEWLINE* ~ EOI } + +class_def = { "classDef" ~ ident ~ (!(NEWLINE) ~ ANY)* } +payload_assign = { ident ~ ("(" ~ markdown ~ ")")? ~ ":::payload" } +class_assign = { ident ~ ":::" ~ ident } diff --git a/src-tauri/src/state/actions.rs b/src-tauri/src/state/actions.rs index d479eb317..3c73e02f9 100644 --- a/src-tauri/src/state/actions.rs +++ b/src-tauri/src/state/actions.rs @@ -53,6 +53,30 @@ pub enum ActionType { Unknown, } +impl ActionType { + pub fn from_tag_str(tag_str: &str) -> Self { + match tag_str { + "GetState" => Self::GetState, + "Reset" => Self::Reset, + "CreateNew" => Self::CreateNew, + "SetLocale" => Self::SetLocale, + "UpdateProfileSettings" => Self::UpdateProfileSettings, + "QrCodeScanned" => Self::QrCodeScanned, + "CancelUserFlow" => Self::CancelUserFlow, + "LoadDevProfile" => Self::LoadDevProfile, + "ReadCredentialOffer" => Self::ReadCredentialOffer, + "CredentialOffersSelected" => Self::CredentialOffersSelected, + "ReadRequest" => Self::ReadRequest, + "ConnectionAccepted" => Self::ConnectionAccepted, + "CredentialsSelected" => Self::CredentialsSelected, + "UnlockStorage" => Self::UnlockStorage, + "UpdateCredentialMetadata" => Self::UpdateCredentialMetadata, + "CancelUserJourney" => Self::CancelUserJourney, + _ => Self::Unknown, + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index 997847dd9..87a456207 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -73,6 +73,7 @@ pub struct Profile { pub primary_did: String, } +#[serde(default)] #[derive(Clone, Serialize, Debug, Deserialize, TS, PartialEq, Default)] #[ts(export)] #[serde(default)] diff --git a/src-tauri/src/state/reducers/authorization.rs b/src-tauri/src/state/reducers/authorization.rs index 22941dd10..a8d76e279 100644 --- a/src-tauri/src/state/reducers/authorization.rs +++ b/src-tauri/src/state/reducers/authorization.rs @@ -10,6 +10,7 @@ use oid4vci::credential_format_profiles::{ w3c_verifiable_credentials::jwt_vc_json::JwtVcJson, Credential, CredentialFormats, }; use oid4vp::{evaluate_input, OID4VPUserClaims, OID4VP}; +use serde::Deserialize; use siopv2::SIOPv2; use uuid::Uuid; diff --git a/src-tauri/tests/README.md b/src-tauri/tests/README.md new file mode 100644 index 000000000..d280d3e7a --- /dev/null +++ b/src-tauri/tests/README.md @@ -0,0 +1,35 @@ + +# Tests + + + + + +```mermaid +flowchart LR + classDef action fill:#999,color:#000; + GetState1:::action + GetState2:::action + CreateNew(CreateNew):::action + UnlockStorage(UnlockStorage):::action + + classDef payload fill:#CCC,color:#555,text-align:left; + P1("`name: Ferris Crabman + picture: 129408 + theme: system + password: sup3rSecr3t + `"):::payload + P2("`password: sup3rSecr3t`"):::payload + + subgraph o + direction LR + Initial[[default_state.json]] --- GetState1(GetState) --> B[[check_state.json]] + B --- CreateNew --> C[[new_profile_created.json]] + P1 -.-> CreateNew + C --- GetState2(GetState) --> D[[password_required.json]] + D --- UnlockStorage --> E[[storage_unlocked.json]] + P2 -.-> UnlockStorage + end + +``` + diff --git a/src-tauri/tests/common/assert_state_update.rs b/src-tauri/tests/common/assert_state_update.rs index 969b045d3..ce41518a5 100644 --- a/src-tauri/tests/common/assert_state_update.rs +++ b/src-tauri/tests/common/assert_state_update.rs @@ -12,6 +12,7 @@ pub async fn assert_state_update( actions: Vec, expected_states: Vec>, ) { + println!("assert_state_update with actions: {:#?}", actions); // Save the current state to the state file. save_state(¤t_state).await.unwrap(); @@ -75,6 +76,7 @@ pub async fn assert_state_update( ); } } + println!("assert_state_update done"); } pub fn setup_state_file() { diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index ad03770f8..7b7b83f54 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -70,3 +70,260 @@ async fn test_get_state_unlock_storage() { ) .await; } + +/////////////////////////////////////// + +#[cfg(test)] +mod tests { + use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; + use identity_wallet::state::{ + actions::{Action, ActionType}, + AppState, + }; + pub use pest::Parser; + use pest_derive::Parser; + + #[derive(Parser)] + #[grammar = "../src-tauri/flowchart.pest"] + pub struct MermaidParser; + + #[tokio::test] + async fn test() { + use tokio::process::Command; + + let output = Command::new("cargo") + .arg("run") + .arg("--manifest-path") + .arg("tests/temp/Cargo.toml") + .output(); + + let output = output.await.unwrap(); + + assert!(output.status.success()); + assert_eq!( + std::str::from_utf8(output.stdout.as_slice()).unwrap(), + "Hello, world!\n" + ); + + print_mermaid().await; + } + + async fn print_mermaid() { + use std::collections::HashMap; + let mut idents = HashMap::new(); + let mut payloads = HashMap::new(); + let mut actions = HashMap::new(); + + let unparsed_file = std::fs::read_to_string("1.mermaid").expect("cannot read file"); + + let file = MermaidParser::parse(Rule::file, &unparsed_file) + .unwrap() + .next() + .unwrap(); + + // println!("file: {:#?}", file); + println!("__________________________________________________________"); + println!("__________________________________________________________"); + + let temp2 = file + .clone() + .into_inner() + .find(|pair| pair.as_rule() == Rule::body) + .map(|body| { + body.into_inner() + .filter(|pair| pair.as_rule() == Rule::payload_assign) + .for_each(|payload_assign| { + let mut pair = payload_assign.into_inner().nth(0).unwrap().into_inner(); + + let ident = pair.next().unwrap(); + println!("ident: {:#?}", ident.as_str()); + + let vec: Vec<_> = pair + .next() + .unwrap() + .into_inner() + .nth(0) + .unwrap() + .into_inner() + .map(|pair| pair.as_str()) + .collect(); + let string = vec.iter().cloned().collect::>().join("\n"); + let mapping: serde_json::Value = serde_yaml::from_str(&string).unwrap(); + println!("mapping: {:#?}", mapping); + payloads.insert(ident.as_str(), mapping); + }) + }); + + let mut temp = file + .into_inner() + .find(|pair| pair.as_rule() == Rule::body) + .map(|body| { + body.into_inner() + .filter(|pair| pair.as_rule() == Rule::subgraph) + .map(|subgraph| { + subgraph + .into_inner() + .find(|pair| pair.as_rule() == Rule::graph) + .map(|graph| { + graph + .into_inner() + .filter(|pair| pair.as_rule() == Rule::chain) + .filter_map(|chain| { + // println!("graph: {:#?}", chain); + // println!("__________________________________________________________"); + // println!("__________________________________________________________"); + let mut chain = chain.into_inner(); + match ( + chain.next(), + chain.next(), + chain.next(), + chain.next(), + chain.next(), + chain.next(), + ) { + ( + Some(first), + Some(second), + Some(third), + Some(fourth), + Some(fifth), + None, + ) if first.as_rule() == Rule::ident_comb + && second.as_rule() == Rule::link + && third.as_rule() == Rule::ident_comb + && fourth.as_rule() == Rule::link + && fifth.as_rule() == Rule::ident_comb => + { + let mut first = first.into_inner().next().unwrap().into_inner(); + let (ident, path) = match (first.next(), first.next(), first.next()) { + (Some(ident), Some(path), None) => { + let path = path.into_inner().nth(0).unwrap().as_str(); + idents.insert(ident.as_str(), path); + (ident.as_str(), path) + } + (Some(ident), None, None) => { + let path = idents.get(ident.as_str()).unwrap(); + (ident.as_str(), *path) + } + _ => panic!("first"), + }; + + // println!("state: {:#?} : {:#?}", ident, path); + + // println!("temp: {:#?}", third); + + // let temp = third.into_inner().nth(0).unwrap(); + // let temp = if temp.clone().into_inner().nth(1).is_some() { + // temp.into_inner() + // .nth(1) + // .unwrap() + // .into_inner() + // .nth(0) + // .unwrap() + // .as_str() + // } else { + // temp.into_inner().nth(0).unwrap().as_str() + // }; + let link = third + .into_inner() + .next() + .unwrap() + .into_inner() + .next() + .unwrap() + .as_str(); + + // println!("action: {:#?}", link.as_str()); + + let mut fifth = fifth.into_inner().next().unwrap().into_inner(); + let (ident2, path2) = match (fifth.next(), fifth.next(), fifth.next()) { + (Some(ident), Some(path), None) => { + let path = path.into_inner().nth(0).unwrap().as_str(); + idents.insert(ident.as_str(), path); + (ident.as_str(), path) + } + (Some(ident), None, None) => { + let path = idents.get(ident.as_str()).unwrap(); + (ident.as_str(), *path) + } + _ => panic!("fifth"), + }; + // println!("state: {:#?} : {:#?}", ident2, path2); + Some((path, link, path2)) + } + (Some(first), Some(second), Some(third), None, None, None) + if first.as_rule() == Rule::ident_comb + && second.as_rule() == Rule::link + && third.as_rule() == Rule::ident_comb => + { + let ident = first + .into_inner() + .next() + .unwrap() + .into_inner() + .next() + .unwrap() + .as_str(); + + let payload = payloads.get(ident).unwrap(); + + actions.insert(third.as_str(), payload); + // println!("first: {:#?}", payload); + // println!("second: {:#?}", second); + // println!("third: {:#?}", third.as_str()); + None + } + _ => panic!("third"), + } + }) + .collect::>() + }) + .unwrap() + }) + .collect::>() + }) + .unwrap(); + + for (path, link, path2) in &temp[0] { + setup_state_file(); + setup_stronghold(); + + let payload = actions.get(link); + println!("state: {:#?}", path); + println!("link: {:#?} {:#?}", link, payload); + println!("state2: {:#?}", path2); + + assert_state_update( + AppState::default(), + vec![Action { + r#type: ActionType::from_tag_str(*link), + payload: payload.cloned().cloned(), + }], + vec![], + ) + .await; + } + } + + #[derive(serde::Deserialize, serde::Serialize, Debug)] + pub struct Temp { + name: String, + picture: String, + theme: String, + password: String, + } + + #[test] + fn test2() { + let temp: serde_yaml::Value = serde_yaml::from_str( + " + name: Ferris Crabman + picture: 129408 + theme: system + password: sup3rSecr3t + ", + ) + .unwrap(); + dbg!(temp); + } +} From e167becc36dd5a761d467bfd1a68b903690ddf8a Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Mon, 2 Oct 2023 19:03:37 +0800 Subject: [PATCH 20/62] WIP --- src-tauri/tests/README.md | 37 ++++- src-tauri/tests/tests/get_state.rs | 257 ----------------------------- src-tauri/tests/tests/mod.rs | 197 ++++++++++++++++++++++ 3 files changed, 225 insertions(+), 266 deletions(-) diff --git a/src-tauri/tests/README.md b/src-tauri/tests/README.md index d280d3e7a..53cdeccb0 100644 --- a/src-tauri/tests/README.md +++ b/src-tauri/tests/README.md @@ -1,10 +1,6 @@ # Tests - - - - ```mermaid flowchart LR classDef action fill:#999,color:#000; @@ -12,14 +8,26 @@ flowchart LR GetState2:::action CreateNew(CreateNew):::action UnlockStorage(UnlockStorage):::action + QrCodeScanned1(QrCodeScanned):::action + QrCodeScanned2(QrCodeScanned):::action + QrCodeScanned3(QrCodeScanned):::action + CredentialOffersSelected(CredentialOffersSelected):::action + ConnectionAccepted(ConnectionAccepted):::action + CredentialsSelected(CredentialsSelected):::action classDef payload fill:#CCC,color:#555,text-align:left; - P1("`name: Ferris Crabman - picture: 129408 - theme: system - password: sup3rSecr3t + P1("`name: 'Ferris Crabman' + picture: '🦀' + theme: 'system' + password: 'sup3rSecr3t' `"):::payload - P2("`password: sup3rSecr3t`"):::payload + P2("`password: 'sup3rSecr3t'`"):::payload + P3("`form_urlencoded: 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22http%3A%2F%2F0.0.0.0%3A8000%2F%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22jwt_vc_json%22%2C%22credential_definition%22%3A%7B%22type%22%3A%5B%22VerifiableCredential%22%2C%22PersonalInformation%22%5D%7D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%220YI5DXtuCltKyNa5%22%2C%22user_pin_required%22%3Afalse%7D%7D%7D'`"):::payload + P4("`offer_indices: '[0]'`"):::payload + P5("`form_urlencoded: 'siopv2://idtoken?response_type=id_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&scope=openid&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce'`"):::payload + P6("`form_urlencoded: 'siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6Mkm9yeuZK7inXBNjnNH3vAs9uUjqfy3mfNoKBKsKBrv8Tb&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.birthdate%22%5D%7D%5D%7D%7D%5D%7D&redirect_uri=https%3A%2F%2Fexample.com&nonce=nonce'`"):::payload + P7("`credentials selected: '[0]'`"):::payload + subgraph o direction LR @@ -29,6 +37,17 @@ flowchart LR C --- GetState2(GetState) --> D[[password_required.json]] D --- UnlockStorage --> E[[storage_unlocked.json]] P2 -.-> UnlockStorage + C --- QrCodeScanned1 --> F[[credential_offer_user_prompt.json]] + P3 -.-> QrCodeScanned1 + F --- CredentialOffersSelected --> G[[new_credentials.json]] + P4 -.-> CredentialOffersSelected + C --- QrCodeScanned2 --> H[[siopv2_request_user_prompt.json]] + P5 -.-> QrCodeScanned2 + H --- ConnectionAccepted --> I[[accepted_connection.json]] + G --- QrCodeScanned3 --> J[[oid4vp_response_user_prompt.json]] + P6 -.-> QrCodeScanned3 + J --- CredentialsSelected --> K[[credentials_sent.json]] + P7 -.-> CredentialsSelected end ``` diff --git a/src-tauri/tests/tests/get_state.rs b/src-tauri/tests/tests/get_state.rs index 7b7b83f54..ad03770f8 100644 --- a/src-tauri/tests/tests/get_state.rs +++ b/src-tauri/tests/tests/get_state.rs @@ -70,260 +70,3 @@ async fn test_get_state_unlock_storage() { ) .await; } - -/////////////////////////////////////// - -#[cfg(test)] -mod tests { - use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; - use identity_wallet::state::{ - actions::{Action, ActionType}, - AppState, - }; - pub use pest::Parser; - use pest_derive::Parser; - - #[derive(Parser)] - #[grammar = "../src-tauri/flowchart.pest"] - pub struct MermaidParser; - - #[tokio::test] - async fn test() { - use tokio::process::Command; - - let output = Command::new("cargo") - .arg("run") - .arg("--manifest-path") - .arg("tests/temp/Cargo.toml") - .output(); - - let output = output.await.unwrap(); - - assert!(output.status.success()); - assert_eq!( - std::str::from_utf8(output.stdout.as_slice()).unwrap(), - "Hello, world!\n" - ); - - print_mermaid().await; - } - - async fn print_mermaid() { - use std::collections::HashMap; - let mut idents = HashMap::new(); - let mut payloads = HashMap::new(); - let mut actions = HashMap::new(); - - let unparsed_file = std::fs::read_to_string("1.mermaid").expect("cannot read file"); - - let file = MermaidParser::parse(Rule::file, &unparsed_file) - .unwrap() - .next() - .unwrap(); - - // println!("file: {:#?}", file); - println!("__________________________________________________________"); - println!("__________________________________________________________"); - - let temp2 = file - .clone() - .into_inner() - .find(|pair| pair.as_rule() == Rule::body) - .map(|body| { - body.into_inner() - .filter(|pair| pair.as_rule() == Rule::payload_assign) - .for_each(|payload_assign| { - let mut pair = payload_assign.into_inner().nth(0).unwrap().into_inner(); - - let ident = pair.next().unwrap(); - println!("ident: {:#?}", ident.as_str()); - - let vec: Vec<_> = pair - .next() - .unwrap() - .into_inner() - .nth(0) - .unwrap() - .into_inner() - .map(|pair| pair.as_str()) - .collect(); - let string = vec.iter().cloned().collect::>().join("\n"); - let mapping: serde_json::Value = serde_yaml::from_str(&string).unwrap(); - println!("mapping: {:#?}", mapping); - payloads.insert(ident.as_str(), mapping); - }) - }); - - let mut temp = file - .into_inner() - .find(|pair| pair.as_rule() == Rule::body) - .map(|body| { - body.into_inner() - .filter(|pair| pair.as_rule() == Rule::subgraph) - .map(|subgraph| { - subgraph - .into_inner() - .find(|pair| pair.as_rule() == Rule::graph) - .map(|graph| { - graph - .into_inner() - .filter(|pair| pair.as_rule() == Rule::chain) - .filter_map(|chain| { - // println!("graph: {:#?}", chain); - // println!("__________________________________________________________"); - // println!("__________________________________________________________"); - let mut chain = chain.into_inner(); - match ( - chain.next(), - chain.next(), - chain.next(), - chain.next(), - chain.next(), - chain.next(), - ) { - ( - Some(first), - Some(second), - Some(third), - Some(fourth), - Some(fifth), - None, - ) if first.as_rule() == Rule::ident_comb - && second.as_rule() == Rule::link - && third.as_rule() == Rule::ident_comb - && fourth.as_rule() == Rule::link - && fifth.as_rule() == Rule::ident_comb => - { - let mut first = first.into_inner().next().unwrap().into_inner(); - let (ident, path) = match (first.next(), first.next(), first.next()) { - (Some(ident), Some(path), None) => { - let path = path.into_inner().nth(0).unwrap().as_str(); - idents.insert(ident.as_str(), path); - (ident.as_str(), path) - } - (Some(ident), None, None) => { - let path = idents.get(ident.as_str()).unwrap(); - (ident.as_str(), *path) - } - _ => panic!("first"), - }; - - // println!("state: {:#?} : {:#?}", ident, path); - - // println!("temp: {:#?}", third); - - // let temp = third.into_inner().nth(0).unwrap(); - // let temp = if temp.clone().into_inner().nth(1).is_some() { - // temp.into_inner() - // .nth(1) - // .unwrap() - // .into_inner() - // .nth(0) - // .unwrap() - // .as_str() - // } else { - // temp.into_inner().nth(0).unwrap().as_str() - // }; - let link = third - .into_inner() - .next() - .unwrap() - .into_inner() - .next() - .unwrap() - .as_str(); - - // println!("action: {:#?}", link.as_str()); - - let mut fifth = fifth.into_inner().next().unwrap().into_inner(); - let (ident2, path2) = match (fifth.next(), fifth.next(), fifth.next()) { - (Some(ident), Some(path), None) => { - let path = path.into_inner().nth(0).unwrap().as_str(); - idents.insert(ident.as_str(), path); - (ident.as_str(), path) - } - (Some(ident), None, None) => { - let path = idents.get(ident.as_str()).unwrap(); - (ident.as_str(), *path) - } - _ => panic!("fifth"), - }; - // println!("state: {:#?} : {:#?}", ident2, path2); - Some((path, link, path2)) - } - (Some(first), Some(second), Some(third), None, None, None) - if first.as_rule() == Rule::ident_comb - && second.as_rule() == Rule::link - && third.as_rule() == Rule::ident_comb => - { - let ident = first - .into_inner() - .next() - .unwrap() - .into_inner() - .next() - .unwrap() - .as_str(); - - let payload = payloads.get(ident).unwrap(); - - actions.insert(third.as_str(), payload); - // println!("first: {:#?}", payload); - // println!("second: {:#?}", second); - // println!("third: {:#?}", third.as_str()); - None - } - _ => panic!("third"), - } - }) - .collect::>() - }) - .unwrap() - }) - .collect::>() - }) - .unwrap(); - - for (path, link, path2) in &temp[0] { - setup_state_file(); - setup_stronghold(); - - let payload = actions.get(link); - println!("state: {:#?}", path); - println!("link: {:#?} {:#?}", link, payload); - println!("state2: {:#?}", path2); - - assert_state_update( - AppState::default(), - vec![Action { - r#type: ActionType::from_tag_str(*link), - payload: payload.cloned().cloned(), - }], - vec![], - ) - .await; - } - } - - #[derive(serde::Deserialize, serde::Serialize, Debug)] - pub struct Temp { - name: String, - picture: String, - theme: String, - password: String, - } - - #[test] - fn test2() { - let temp: serde_yaml::Value = serde_yaml::from_str( - " - name: Ferris Crabman - picture: 129408 - theme: system - password: sup3rSecr3t - ", - ) - .unwrap(); - dbg!(temp); - } -} diff --git a/src-tauri/tests/tests/mod.rs b/src-tauri/tests/tests/mod.rs index d50d74d32..15985b5be 100644 --- a/src-tauri/tests/tests/mod.rs +++ b/src-tauri/tests/tests/mod.rs @@ -1,3 +1,200 @@ mod get_state; mod load_dev_profile; mod qr_code_scanned; + +/////////////////////////////////////// + +#[cfg(test)] +mod tests { + use std::ops::Deref; + + use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; + use identity_wallet::state::{ + actions::{Action, ActionType}, + AppState, + }; + pub use pest::Parser; + use pest_derive::Parser; + + #[derive(Parser)] + #[grammar = "../src-tauri/flowchart.pest"] + pub struct MermaidParser; + + #[tokio::test] + async fn test() { + print_mermaid().await; + } + + async fn print_mermaid() -> anyhow::Result<()> { + use std::collections::HashMap; + let mut idents = HashMap::new(); + let mut payloads = HashMap::new(); + let mut actions = HashMap::new(); + + let unparsed_file = std::fs::read_to_string("1.mermaid").expect("cannot read file"); + + let file = MermaidParser::parse(Rule::file, &unparsed_file) + .unwrap() + .next() + .unwrap(); + + // println!("file: {:#?}", file); + println!("__________________________________________________________"); + println!("__________________________________________________________"); + + let temp2 = file + .clone() + .into_inner() + .find(|pair| pair.as_rule() == Rule::body) + .map(|body| { + body.into_inner() + .filter(|pair| pair.as_rule() == Rule::payload_assign) + .for_each(|payload_assign| { + let mut pair = payload_assign.into_inner().nth(0).unwrap().into_inner(); + + let ident = pair.next().unwrap(); + println!("ident: {:#?}", ident.as_str()); + + let vec: Vec<_> = pair + .next() + .unwrap() + .into_inner() + .nth(0) + .unwrap() + .into_inner() + .map(|pair| pair.as_str()) + .collect(); + let string = vec.iter().cloned().collect::>().join("\n"); + let mapping: serde_json::Value = serde_yaml::from_str(&string).unwrap(); + println!("mapping: {:#?}", mapping); + payloads.insert(ident.as_str(), mapping); + }) + }); + + let mut temp = file + .into_inner() + .find(|pair| pair.as_rule() == Rule::body) + .map(|body| { + body.into_inner() + .filter(|pair| pair.as_rule() == Rule::subgraph) + .map(|subgraph| { + subgraph + .into_inner() + .find(|pair| pair.as_rule() == Rule::graph) + .map(|graph| { + graph + .into_inner() + .filter(|pair| pair.as_rule() == Rule::chain) + .filter_map(|chain| { + // println!("graph: {:#?}", chain); + // println!("__________________________________________________________"); + // println!("__________________________________________________________"); + let mut chain = chain.into_inner(); + match ( + chain.next(), + chain.next(), + chain.next(), + chain.next(), + chain.next(), + chain.next(), + ) { + ( + Some(first), + Some(second), + Some(third), + Some(fourth), + Some(fifth), + None, + ) if first.as_rule() == Rule::ident_comb + && second.as_rule() == Rule::link + && third.as_rule() == Rule::ident_comb + && fourth.as_rule() == Rule::link + && fifth.as_rule() == Rule::ident_comb => + { + let mut first = first.into_inner().next().unwrap().into_inner(); + let (ident, path) = match (first.next(), first.next(), first.next()) { + (Some(ident), Some(path), None) => { + let path = path.into_inner().nth(0).unwrap().as_str(); + idents.insert(ident.as_str(), path); + (ident.as_str(), path) + } + (Some(ident), None, None) => { + let path = idents.get(ident.as_str()).unwrap(); + (ident.as_str(), *path) + } + _ => panic!("first"), + }; + + let link = PairWrapper(third).child(0)?.child(0)?.0.as_str(); + + // println!("action: {:#?}", link.as_str()); + + let mut fifth = fifth.into_inner().next().unwrap().into_inner(); + let (ident2, path2) = match (fifth.next(), fifth.next(), fifth.next()) { + (Some(ident), Some(path), None) => { + let path = path.into_inner().nth(0).unwrap().as_str(); + idents.insert(ident.as_str(), path); + (ident.as_str(), path) + } + (Some(ident), None, None) => { + let path = idents.get(ident.as_str()).unwrap(); + (ident.as_str(), *path) + } + _ => panic!("fifth"), + }; + // println!("state: {:#?} : {:#?}", ident2, path2); + Some((path, link, path2)) + } + (Some(first), Some(second), Some(third), None, None, None) + if first.as_rule() == Rule::ident_comb + && second.as_rule() == Rule::link + && third.as_rule() == Rule::ident_comb => + { + let ident = PairWrapper(first).child(0)?.child(0)?.0.as_str(); + + let payload = payloads.get(ident).unwrap(); + + actions.insert(third.as_str(), payload); + None + } + _ => panic!("third"), + } + }) + .collect::>() + }) + .unwrap() + }) + .collect::>() + }) + .unwrap(); + + for (path, link, path2) in &temp[0] { + setup_state_file(); + setup_stronghold(); + + let payload = actions.get(link); + println!("state: {:#?}", path); + println!("link: {:#?} {:#?}", link, payload); + println!("state2: {:#?}", path2); + + assert_state_update( + AppState::default(), + vec![Action { + r#type: ActionType::from_tag_str(*link), + payload: payload.cloned().cloned(), + }], + vec![], + ) + .await; + } + + Ok(()) + } + pub struct PairWrapper(pub pest::iterators::Pair<'static, Rule>); + + impl PairWrapper { + pub fn child(self, index: u64) -> Option { + Some(Self(self.0.into_inner().nth(index as usize).unwrap())) + } + } +} From 7ee64b36c26a773cce20d968b46f370b9d18005f Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:01:05 +0800 Subject: [PATCH 21/62] add workflow --- .github/workflows/test.yml | 34 + .../tests/common/credential_issuer/Cargo.lock | 4862 +++++++++++++++++ .../tests/common/credential_issuer/Cargo.toml | 40 + .../tests/common/credential_issuer/Dockerfile | 9 + .../common/credentials/driver_license.json | 20 + .../common/credentials/university_degree.json | 20 + .../driver_license.json | 32 + .../university_degree.json | 58 + .../src/common/memory_storage.rs | 144 + .../credential_issuer/src/common/mod.rs | 139 + .../common/credential_issuer/src/main.rs | 46 + src-tauri/tests/tests/mod.rs | 42 +- 12 files changed, 5423 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 src-tauri/tests/common/credential_issuer/Cargo.lock create mode 100644 src-tauri/tests/common/credential_issuer/Cargo.toml create mode 100644 src-tauri/tests/common/credential_issuer/Dockerfile create mode 100644 src-tauri/tests/common/credential_issuer/src/common/credentials/driver_license.json create mode 100644 src-tauri/tests/common/credential_issuer/src/common/credentials/university_degree.json create mode 100644 src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/driver_license.json create mode 100644 src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/university_degree.json create mode 100644 src-tauri/tests/common/credential_issuer/src/common/memory_storage.rs create mode 100644 src-tauri/tests/common/credential_issuer/src/common/mod.rs create mode 100644 src-tauri/tests/common/credential_issuer/src/main.rs diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..622bd9420 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,34 @@ +name: Run Tests + +on: + push: + branches: [test/mermaid-diagram] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Build Docker Image + run: docker build -t credential_issuer tests/common/credential_issuer . + + - name: Run Docker Container + run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + + test: + runs-on ubuntu-latest + + needs: build + + steps: + - name: Wait for Credential Issuer Server to Start + run: sleep 100 + + - name: Run Tests + run: cargo test --manifest-path tests/common/Cargo.toml + + - name: Stop Docker Container + run: docker stop credential_issuer diff --git a/src-tauri/tests/common/credential_issuer/Cargo.lock b/src-tauri/tests/common/credential_issuer/Cargo.lock new file mode 100644 index 000000000..08c82a1b5 --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/Cargo.lock @@ -0,0 +1,4862 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.9", + "opaque-debug", +] + +[[package]] +name = "aes-gcm" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc3be92e19a7ef47457b8e6f90707e12b6ac5d20c6f3866584fa3be0787d839f" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "getrandom 0.2.10", + "once_cell", + "serde", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-trait" +version = "0.1.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "atom" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dcfa7026c8fa43fa767bff0b7cd4d1963cdfd946e0386bee93003e9b2498562" + +[[package]] +name = "atomic-polyfill" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" +dependencies = [ + "critical-section", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-auth" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620b37645b77baab8160f93421568d7b3dd25da0a160fab38eb1c4ef611f6d98" +dependencies = [ + "async-trait", + "axum-core", + "base64 0.13.1", + "http", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" + +[[package]] +name = "base64-url" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c5b0a88aa36e9f095ee2e2b13fb8c5e4313e022783aedacc123328c0084916d" +dependencies = [ + "base64 0.21.4", +] + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" + +[[package]] +name = "bee-common" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "967d987fbd588c72178d80b1cbd53e9c9a62771993dd280d568d8bbb811d44c2" +dependencies = [ + "autocfg", + "fern", + "log", + "serde", + "thiserror", + "time", +] + +[[package]] +name = "bee-ledger" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c32c6038cf3aa7997ad1e3463443d98f1cf84ae6620d1a1ded9894e021d8b84" +dependencies = [ + "bee-common", + "bee-message", + "thiserror", +] + +[[package]] +name = "bee-message" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25c9adaabc74d8058d889bb93384fda8dd6f4f68ee2939f4f1093e8ff2471369" +dependencies = [ + "bech32", + "bee-common", + "bee-pow", + "bytemuck", + "digest 0.9.0", + "hex", + "iota-crypto 0.17.1", + "serde", + "thiserror", +] + +[[package]] +name = "bee-pow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cffeba0138b712537b39a7dc8d31428dc6bc8f3d9f3f558b06dc04fa3facfa5e" +dependencies = [ + "iota-crypto 0.17.1", + "thiserror", +] + +[[package]] +name = "bee-rest-api" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9afa75c1deba0a7271e7038f6301dfcde6fcc6c165ef34807bb5edf4011acf" +dependencies = [ + "bee-ledger", + "bee-message", + "hex", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "bee-ternary" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8479555c8e9bf3cad36daf16e6a2f77771774e977276a08df4d8ac5f1dda66" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac 0.8.0", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bls12_381_plus" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c681aa947677ec0c5ccfa6f14c0dd039ddbaa7b12952bf146bd5226a5f9880" +dependencies = [ + "digest 0.9.0", + "ff 0.12.1", + "group 0.12.1", + "heapless", + "pairing", + "rand_core 0.6.4", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "brotli" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytecount" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" + +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chacha20" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.1.5", + "zeroize", +] + +[[package]] +name = "chacha20poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clap" +version = "4.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.10.0", +] + +[[package]] +name = "clap_derive" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "clap_lex" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355" +dependencies = [ + "is-terminal", + "lazy_static", + "winapi", +] + +[[package]] +name = "concurrent-queue" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "crypto-mac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.9", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "darling" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.37", +] + +[[package]] +name = "darling_macro" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "data-encoding-macro" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99" +dependencies = [ + "data-encoding", + "data-encoding-macro-internal", +] + +[[package]] +name = "data-encoding-macro-internal" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772" +dependencies = [ + "data-encoding", + "syn 1.0.109", +] + +[[package]] +name = "dataurl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17a1f14ed857323d318ca723a05a456196347efbe855f712f68cf6b8a14f8f15" +dependencies = [ + "atty", + "base64 0.13.1", + "clap 2.34.0", + "encoding_rs", + "percent-encoding", + "url", +] + +[[package]] +name = "deadpool" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421fe0f90f2ab22016f32a9881be5134fdd71c65298917084b0c7477cbc3856e" +dependencies = [ + "async-trait", + "deadpool-runtime", + "num_cpus", + "retain_mut", + "tokio", +] + +[[package]] +name = "deadpool-runtime" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49" + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +dependencies = [ + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "did-key" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed21f9ed50f9d3f79b6ba84f2cf8a536399c3500bc99406c1bbc1e0c598524e" +dependencies = [ + "arrayref", + "base64 0.13.1", + "bls12_381_plus", + "bs58", + "curve25519-dalek 3.2.0", + "did_url", + "ed25519-dalek 1.0.1", + "getrandom 0.2.10", + "hkdf 0.11.0", + "json-patch", + "libsecp256k1", + "p256", + "serde", + "serde_json", + "sha2 0.9.9", + "x25519-dalek", +] + +[[package]] +name = "did_url" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d5f6334e473e3bb5650ab4ef3e4c910296b76968e62758e7c66157ff767c05" +dependencies = [ + "form_urlencoded", + "serde", +] + +[[package]] +name = "dif-presentation-exchange" +version = "0.1.0" +source = "git+https://git@github.com/impierce/openid4vc.git?rev=920b5651bd1372728c977c946ef7b8032059cc70#920b5651bd1372728c977c946ef7b8032059cc70" +dependencies = [ + "getset", + "jsonpath_lib", + "jsonschema", + "serde", + "serde_json", + "serde_with 3.3.0", + "url", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der 0.6.1", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", + "signature 1.6.4", +] + +[[package]] +name = "ecdsa" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +dependencies = [ + "der 0.7.8", + "digest 0.10.7", + "elliptic-curve 0.13.5", + "rfc6979 0.4.0", + "signature 2.1.0", + "spki 0.7.2", +] + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.1.0", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519 1.5.3", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.2", + "rand_core 0.6.4", + "serde", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "ed25519-zebra" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a128b76af6dd4b427e34a6fd43dc78dbfe73672ec41ff615a2414c1a0ad0409" +dependencies = [ + "curve25519-dalek 3.2.0", + "hex", + "rand_core 0.5.1", + "sha2 0.9.9", + "thiserror", +] + +[[package]] +name = "ed25519-zebra" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +dependencies = [ + "curve25519-dalek 3.2.0", + "hashbrown 0.12.3", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.2", + "hashbrown 0.14.1", + "hex", + "rand_core 0.6.4", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der 0.6.1", + "digest 0.10.7", + "ff 0.12.1", + "generic-array", + "group 0.12.1", + "hkdf 0.12.3", + "pkcs8 0.9.0", + "rand_core 0.6.4", + "sec1 0.3.0", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +dependencies = [ + "base16ct 0.2.0", + "crypto-bigint 0.5.3", + "digest 0.10.7", + "ff 0.13.0", + "generic-array", + "group 0.13.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "subtle", + "zeroize", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fancy-regex" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fern" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" +dependencies = [ + "colored", + "log", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" + +[[package]] +name = "flate2" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fraction" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3027ae1df8d41b4bed2241c8fdad4acc1e7af60c8e17743534b545e77182d678" +dependencies = [ + "lazy_static", + "num", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getset" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ghash" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.6", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +dependencies = [ + "ahash 0.8.3", + "allocator-api2", +] + +[[package]] +name = "heapless" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "spin 0.9.8", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b" +dependencies = [ + "digest 0.9.0", + "hmac 0.11.0", +] + +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac 0.12.1", +] + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac 0.11.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" + +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel", + "base64 0.13.1", + "futures-lite", + "http", + "infer", + "pin-project-lite", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "identity-diff" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e80ec62cab6dc1bf7d530d1d297ded6a726eb1ff3c91d0d5a077cbb35daa29" +dependencies = [ + "serde", + "serde_json", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "identity_account" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ce263314c9e8af34652c81c6b8b164db1093c80b9e727ad547ff893a7ee52" +dependencies = [ + "identity_account_storage", + "identity_core 0.6.1", + "identity_credential 0.6.1", + "identity_did 0.6.1", + "identity_iota_client", + "identity_iota_core", + "log", + "paste", + "rand 0.8.5", + "serde", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "identity_account_storage" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca2cb8028f5dd910b089823a8c7365accbda5f2f004ea6bae4ac99c5957fe1c" +dependencies = [ + "async-trait", + "futures", + "hashbrown 0.11.2", + "identity_core 0.6.1", + "identity_did 0.6.1", + "identity_iota_core", + "iota-crypto 0.9.1", + "iota_stronghold", + "once_cell", + "parking_lot 0.12.1", + "rand 0.8.5", + "seahash", + "serde", + "strum 0.24.1", + "thiserror", + "tokio", + "zeroize", +] + +[[package]] +name = "identity_core" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43377fecf019fcafc5c7db2ce57e6c7c11ac9d97be48b6a851481c93aefa73d" +dependencies = [ + "identity-diff", + "iota-crypto 0.9.1", + "js-sys", + "multibase", + "serde", + "serde_jcs", + "serde_json", + "strum 0.24.1", + "thiserror", + "time", + "url", + "zeroize", +] + +[[package]] +name = "identity_core" +version = "0.7.0-alpha.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6c772f883804aa1df6c7686edf81b807d1cebcb759f9924f99de0c7379c95d8" +dependencies = [ + "iota-crypto 0.23.0", + "js-sys", + "multibase", + "serde", + "serde_json", + "strum 0.25.0", + "thiserror", + "time", + "url", + "zeroize", +] + +[[package]] +name = "identity_core" +version = "1.0.0-rc.1" +source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +dependencies = [ + "iota-crypto 0.23.0", + "js-sys", + "multibase", + "serde", + "serde_json", + "strum 0.25.0", + "thiserror", + "time", + "url", + "zeroize", +] + +[[package]] +name = "identity_credential" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6215eaefc0f5ccc60d141fb715df6b9bcc15f07329ecaff72277e5a85b3ac19" +dependencies = [ + "identity_core 0.6.1", + "identity_did 0.6.1", + "lazy_static", + "serde", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "identity_credential" +version = "1.0.0-rc.1" +source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +dependencies = [ + "identity_core 1.0.0-rc.1", + "identity_did 1.0.0-rc.1", + "identity_document", + "identity_verification", + "indexmap 2.0.2", + "itertools 0.11.0", + "once_cell", + "serde", + "serde_repr", + "strum 0.25.0", + "thiserror", + "url", +] + +[[package]] +name = "identity_did" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3dbf38918a5ed5546f6737e9107b5203b03d5564ef152d99721aefe73554f5" +dependencies = [ + "dataurl", + "did_url", + "flate2", + "form_urlencoded", + "identity_core 0.6.1", + "indexmap 1.9.3", + "roaring", + "serde", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "identity_did" +version = "1.0.0-rc.1" +source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +dependencies = [ + "did_url", + "form_urlencoded", + "identity_core 1.0.0-rc.1", + "serde", + "strum 0.25.0", + "thiserror", +] + +[[package]] +name = "identity_document" +version = "1.0.0-rc.1" +source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +dependencies = [ + "did_url", + "identity_core 1.0.0-rc.1", + "identity_did 1.0.0-rc.1", + "identity_verification", + "indexmap 2.0.2", + "serde", + "strum 0.25.0", + "thiserror", +] + +[[package]] +name = "identity_iota" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0984c29334ee27ac8de8a056cfe46af84feb9d797ed0a39c46df037c3b6a649b" +dependencies = [ + "identity_account", + "identity_account_storage", + "identity_core 0.6.1", + "identity_credential 0.6.1", + "identity_did 0.6.1", + "identity_iota_client", + "identity_iota_core", +] + +[[package]] +name = "identity_iota_client" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2369750a5b721fcf3bf25450739c52ab44851a17ed8cd048e53a80eef8e3d8" +dependencies = [ + "async-trait", + "bee-rest-api", + "brotli", + "form_urlencoded", + "futures", + "identity_core 0.6.1", + "identity_credential 0.6.1", + "identity_did 0.6.1", + "identity_iota_core", + "iota-client", + "iota-crypto 0.9.1", + "itertools 0.10.5", + "lazy_static", + "log", + "num-derive", + "num-traits", + "serde", + "serde_repr", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "identity_iota_core" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73ff16f6122997467333527cdbffc26aa37a135b0cc9f822430e0a555410e8d" +dependencies = [ + "bee-message", + "identity_core 0.6.1", + "identity_did 0.6.1", + "iota-crypto 0.9.1", + "lazy_static", + "serde", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "identity_jose" +version = "1.0.0-rc.1" +source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +dependencies = [ + "identity_core 1.0.0-rc.1", + "iota-crypto 0.23.0", + "serde", + "serde_json", + "subtle", + "thiserror", + "zeroize", +] + +[[package]] +name = "identity_verification" +version = "1.0.0-rc.1" +source = "git+https://github.com/iotaledger/identity.rs.git#3e327fd7b1df61193c67a53ec5711028dc46805f" +dependencies = [ + "identity_core 1.0.0-rc.1", + "identity_did 1.0.0-rc.1", + "identity_jose", + "serde", + "strum 0.25.0", + "thiserror", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +dependencies = [ + "equivalent", + "hashbrown 0.14.1", + "serde", +] + +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "iota-client" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0759c62960bf8f3473cc450983781cda42cb39f34346cfbb84944f629494f364" +dependencies = [ + "async-trait", + "bee-common", + "bee-message", + "bee-pow", + "bee-rest-api", + "bee-ternary", + "bytes", + "futures", + "gloo-timers", + "hex", + "instant", + "iota-crypto 0.9.1", + "log", + "num_cpus", + "regex", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "url", + "zeroize", +] + +[[package]] +name = "iota-crypto" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee273ae67ff1bc7c59317c0ab280e0e76259e6bd83e140ac4c2ecebec994f740" +dependencies = [ + "blake2 0.9.2", + "digest 0.9.0", +] + +[[package]] +name = "iota-crypto" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c98a3248cde6b42cb479a52089fe4fc20d12de51b8edd923294cd5240ec89b0" +dependencies = [ + "aead", + "aes", + "aes-gcm", + "blake2 0.9.2", + "curve25519-dalek 3.2.0", + "digest 0.9.0", + "ed25519-zebra 2.2.0", + "generic-array", + "getrandom 0.2.10", + "hmac 0.11.0", + "pbkdf2 0.8.0", + "serde", + "sha2 0.9.9", + "unicode-normalization", + "x25519-dalek", +] + +[[package]] +name = "iota-crypto" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f03717e934972fad6f1c9b4cd25f662e1753b58a7f76e3dceadeb646e034b252" +dependencies = [ + "aead", + "aes", + "aes-gcm", + "blake2 0.10.6", + "chacha20poly1305", + "curve25519-dalek 3.2.0", + "digest 0.10.7", + "ed25519-zebra 3.1.0", + "generic-array", + "getrandom 0.2.10", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "serde", + "sha2 0.10.8", + "unicode-normalization", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "iota-crypto" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92cdfcd73d2b8a67b913789ecd7fc06c68254f68cd2b24cc3f0419c7f8fe6bbe" +dependencies = [ + "autocfg", + "blake2 0.10.6", + "digest 0.10.7", + "ed25519-zebra 3.1.0", + "num-traits", + "serde", + "zeroize", +] + +[[package]] +name = "iota-crypto" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d5a986d972c3a703d48ced24fdc0bf16fb2d02959ff4b152fa77b9132f6fb0" +dependencies = [ + "autocfg", + "curve25519-dalek 3.2.0", + "digest 0.10.7", + "ed25519-zebra 4.0.3", + "getrandom 0.2.10", + "k256", + "rand 0.8.5", + "serde", + "sha2 0.10.8", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "iota_stronghold" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ebdd443fde5c02437469c1a318aa4d56cba83db3913743862a0e3b54ab5736" +dependencies = [ + "bincode", + "hkdf 0.12.3", + "iota-crypto 0.12.1", + "serde", + "stronghold-derive", + "stronghold-rlu", + "stronghold-utils", + "stronghold_engine", + "thiserror", + "zeroize", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.3", + "rustix", + "windows-sys", +] + +[[package]] +name = "is_empty" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a936154b7f653894729875d5593b3251d90619c90994581dceec44334df4021" +dependencies = [ + "is_empty_derive", +] + +[[package]] +name = "is_empty_derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8903009eceffe882e7cb6adadd29001f4f0e46f67616247f40841a5604f1610" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "iso8601" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" +dependencies = [ + "nom", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" +dependencies = [ + "serde", + "serde_json", + "treediff", +] + +[[package]] +name = "jsonpath_lib" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +dependencies = [ + "log", + "serde", + "serde_json", +] + +[[package]] +name = "jsonschema" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a071f4f7efc9a9118dfb627a0a94ef247986e1ab8606a4c806ae2b3aa3b6978" +dependencies = [ + "ahash 0.8.3", + "anyhow", + "base64 0.21.4", + "bytecount", + "clap 4.4.6", + "fancy-regex", + "fraction", + "getrandom 0.2.10", + "iso8601", + "itoa", + "memchr", + "num-cmp", + "once_cell", + "parking_lot 0.12.1", + "percent-encoding", + "regex", + "reqwest", + "serde", + "serde_json", + "time", + "url", + "uuid", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.4", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +dependencies = [ + "cfg-if", + "ecdsa 0.16.8", + "elliptic-curve 0.13.5", + "once_cell", + "sha2 0.10.8", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.148" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" + +[[package]] +name = "libsecp256k1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +dependencies = [ + "arrayref", + "base64 0.13.1", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsodium-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b779387cd56adfbc02ea4a668e704f729be8d6a6abd2c27ca5ee537849a92fd" +dependencies = [ + "cc", + "libc", + "pkg-config", + "walkdir", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +dependencies = [ + "serde", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "multibase" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +dependencies = [ + "base-x", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-cmp" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa" + +[[package]] +name = "num-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.3", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid4vc-core" +version = "0.1.0" +source = "git+https://git@github.com/impierce/openid4vc.git?rev=920b5651bd1372728c977c946ef7b8032059cc70#920b5651bd1372728c977c946ef7b8032059cc70" +dependencies = [ + "anyhow", + "async-trait", + "base64-url", + "derive_more", + "did_url", + "getset", + "is_empty", + "jsonwebtoken", + "rand 0.8.5", + "serde", + "serde_json", + "serde_urlencoded", + "serde_with 2.3.3", + "url", +] + +[[package]] +name = "oid4vc-manager" +version = "0.1.0" +source = "git+https://git@github.com/impierce/openid4vc.git?rev=920b5651bd1372728c977c946ef7b8032059cc70#920b5651bd1372728c977c946ef7b8032059cc70" +dependencies = [ + "anyhow", + "async-trait", + "axum", + "axum-auth", + "chrono", + "did-key", + "did_url", + "futures", + "getset", + "identity_core 0.7.0-alpha.7", + "identity_credential 1.0.0-rc.1", + "identity_iota", + "jsonwebtoken", + "oid4vc-core", + "oid4vci", + "oid4vp", + "paste", + "reqwest", + "serde", + "serde_json", + "serde_urlencoded", + "serde_with 3.3.0", + "siopv2", + "tokio", + "tower-http", + "url", +] + +[[package]] +name = "oid4vci" +version = "0.1.0" +source = "git+https://git@github.com/impierce/openid4vc.git?rev=920b5651bd1372728c977c946ef7b8032059cc70#920b5651bd1372728c977c946ef7b8032059cc70" +dependencies = [ + "anyhow", + "derivative", + "dif-presentation-exchange", + "getset", + "jsonwebtoken", + "lazy_static", + "oid4vc-core", + "paste", + "reqwest", + "reqwest-middleware", + "reqwest-retry", + "serde", + "serde_json", + "serde_urlencoded", + "serde_with 3.3.0", + "tokio", +] + +[[package]] +name = "oid4vp" +version = "0.1.0" +source = "git+https://git@github.com/impierce/openid4vc.git?rev=920b5651bd1372728c977c946ef7b8032059cc70#920b5651bd1372728c977c946ef7b8032059cc70" +dependencies = [ + "anyhow", + "chrono", + "dif-presentation-exchange", + "futures", + "getset", + "identity_core 0.7.0-alpha.7", + "identity_credential 1.0.0-rc.1", + "is_empty", + "jsonwebtoken", + "oid4vc-core", + "oid4vci", + "serde", + "serde_json", + "serde_with 3.3.0", + "tokio", + "url", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.8", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parking" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.0", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.2", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "platforms" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" + +[[package]] +name = "poly1305" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" +dependencies = [ + "cpufeatures 0.2.9", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.9", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "relative-path" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" + +[[package]] +name = "reqwest" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +dependencies = [ + "base64 0.21.4", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "mime_guess", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "reqwest-middleware" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff44108c7925d082f2861e683a88618b68235ad9cdc60d64d9d1188efc951cdb" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + +[[package]] +name = "reqwest-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af20b65c2ee9746cc575acb6bd28a05ffc0d15e25c992a8f4462d8686aacb4f" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "getrandom 0.2.10", + "http", + "hyper", + "parking_lot 0.11.2", + "reqwest", + "reqwest-middleware", + "retry-policies", + "task-local-extensions", + "tokio", + "tracing", + "wasm-timer", +] + +[[package]] +name = "retain_mut" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0" + +[[package]] +name = "retry-policies" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a715dc4d0e8aea3085a9a94d76e79c79c7df7c9f6be609da841a6d2489ca3687" +dependencies = [ + "anyhow", + "chrono", + "rand 0.8.5", +] + +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint 0.4.9", + "hmac 0.12.1", + "zeroize", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "roaring" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd539cab4e32019956fe7e0cf160bb6d4802f4be2b52c4253d76d3bb0f85a5f7" +dependencies = [ + "bytemuck", + "byteorder", + "retain_mut", +] + +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.37", + "unicode-ident", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.4", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "ryu-js" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6518fc26bced4d53678a22d6e423e9d8716377def84545fe328236e3af070e7f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct 0.1.1", + "der 0.6.1", + "generic-array", + "pkcs8 0.9.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.8", + "generic-array", + "pkcs8 0.10.2", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "serde_jcs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cacecf649bc1a7c5f0e299cc813977c6a78116abda2b93b1ee01735b71ead9a8" +dependencies = [ + "ryu-js", + "serde", + "serde_json", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "indexmap 2.0.2", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_qs" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_repr" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "base64 0.13.1", + "chrono", + "hex", + "indexmap 1.9.3", + "serde", + "serde_json", + "serde_with_macros 2.3.3", + "time", +] + +[[package]] +name = "serde_with" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +dependencies = [ + "base64 0.21.4", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.0.2", + "serde", + "serde_json", + "serde_with_macros 3.3.0", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "serde_with_macros" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures 0.2.9", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.9", + "digest 0.10.7", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "siopv2" +version = "0.1.0" +source = "git+https://git@github.com/impierce/openid4vc.git?rev=920b5651bd1372728c977c946ef7b8032059cc70#920b5651bd1372728c977c946ef7b8032059cc70" +dependencies = [ + "anyhow", + "async-trait", + "base64-url", + "chrono", + "did_url", + "futures", + "getset", + "identity_credential 1.0.0-rc.1", + "is_empty", + "jsonwebtoken", + "oid4vc-core", + "oid4vci", + "oid4vp", + "reqwest", + "reqwest-middleware", + "reqwest-retry", + "serde", + "serde_json", + "serde_urlencoded", + "serde_with 3.3.0", + "tokio", + "url", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der 0.7.8", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stronghold-derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac933fa00ab0d0f1d6327ab9198a95aaaca3458dae09f0b8e1cd69fee2a7eaf" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "stronghold-rlu" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b00fbacafc4ef96fb95fac07d86cc3ec5e21c8efa94785374ad7913a4a216ba" +dependencies = [ + "atom", + "lazy_static", + "log", + "thiserror", + "zeroize", +] + +[[package]] +name = "stronghold-runtime" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8845d2c5a4270ecdf542f489ff16b2a6fec245ad001c6afe098c2e6ea0211d6c" +dependencies = [ + "dirs", + "iota-crypto 0.8.0", + "libsodium-sys", + "rand 0.8.5", + "serde", + "thiserror", + "zeroize", +] + +[[package]] +name = "stronghold-utils" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1ce0d6205e8ea89771f2b32d64aeaecbc930320919e95ec4efcc0aa96cd951" +dependencies = [ + "rand 0.8.5", + "stronghold-derive", +] + +[[package]] +name = "stronghold_engine" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab9d53f21c2293ba7e8fc3b6e7a5365ce12caf55f5c4b2a7d26e9e84d14071" +dependencies = [ + "anyhow", + "dirs-next", + "hex", + "iota-crypto 0.12.1", + "once_cell", + "paste", + "serde", + "stronghold-runtime", + "thiserror", + "zeroize", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros 0.25.2", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.37", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "task-local-extensions" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" +dependencies = [ + "pin-utils", +] + +[[package]] +name = "temp" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-trait", + "axum", + "axum-auth", + "chrono", + "derivative", + "did-key", + "did_url", + "ed25519-dalek 2.0.0", + "futures", + "identity_core 0.7.0-alpha.7", + "identity_iota", + "jsonwebtoken", + "lazy_static", + "oid4vc-core", + "oid4vc-manager", + "oid4vci", + "oid4vp", + "paste", + "rand 0.8.5", + "reqwest", + "rstest", + "serde", + "serde_json", + "siopv2", + "tokio", + "tower-http", + "uuid", + "wiremock", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "time" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +dependencies = [ + "deranged", + "itoa", + "libc", + "num_threads", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "socket2 0.5.4", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +dependencies = [ + "bitflags 2.4.0", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "treediff" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" +dependencies = [ + "serde_json", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "universal-hash" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", + "rand 0.8.5", +] + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.37", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "wiremock" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f71803d3a1c80377a06221e0530be02035d5b3e854af56c6ece7ac20ac441d" +dependencies = [ + "assert-json-diff", + "async-trait", + "base64 0.21.4", + "deadpool", + "futures", + "futures-timer", + "http-types", + "hyper", + "log", + "once_cell", + "regex", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "x25519-dalek" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f" +dependencies = [ + "curve25519-dalek 3.2.0", + "rand_core 0.5.1", + "zeroize", +] + +[[package]] +name = "zeroize" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] diff --git a/src-tauri/tests/common/credential_issuer/Cargo.toml b/src-tauri/tests/common/credential_issuer/Cargo.toml new file mode 100644 index 000000000..600e970a1 --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "credential_issuer" +version = "0.1.0" +edition = "2021" + +[[bin]] +name = "credential_issuer" +path = "src/main.rs" + +[dependencies] +oid4vc-manager = { git = "https://git@github.com/impierce/openid4vc.git", rev = "920b5651bd1372728c977c946ef7b8032059cc70" } +siopv2 = { git = "https://git@github.com/impierce/openid4vc.git", rev = "920b5651bd1372728c977c946ef7b8032059cc70" } +oid4vci = { git = "https://git@github.com/impierce/openid4vc.git", rev = "920b5651bd1372728c977c946ef7b8032059cc70" } +oid4vc-core = { git = "https://git@github.com/impierce/openid4vc.git", rev = "920b5651bd1372728c977c946ef7b8032059cc70" } +oid4vp = { git = "https://git@github.com/impierce/openid4vc.git", rev = "920b5651bd1372728c977c946ef7b8032059cc70" } + +tokio = { version = "1.26.0", features = ["rt", "macros", "rt-multi-thread"] } +serde = { version = "1.0", features = ["derive"]} +serde_json = "1.0" +did_url = "0.1" +async-trait = "0.1" +lazy_static = "1.4.0" +derivative = "2.2" +anyhow = "1.0" +chrono = "0.4" +did-key = "0.2" +identity_iota = "0.6" +identity_core = { version = "=0.7.0-alpha.7" } +futures = "0.3" +axum = "0.6" +axum-auth = "0.4" +jsonwebtoken = "8.3" +paste = "1.0" +tower-http = { version = "0.4", features = ["cors"]} +ed25519-dalek = { version = "2.0.0", features = ["rand_core"] } +rand = "0.8" +wiremock = "0.5" +uuid = { version = "1.4", features = ["v4", "fast-rng"] } +rstest = "0.18" +reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] } diff --git a/src-tauri/tests/common/credential_issuer/Dockerfile b/src-tauri/tests/common/credential_issuer/Dockerfile new file mode 100644 index 000000000..e82f6826e --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/Dockerfile @@ -0,0 +1,9 @@ +FROM rust:latest + +EXPOSE 8000 + +WORKDIR . +COPY . . +RUN cargo install --path . +CMD ["credential_issuer"] + diff --git a/src-tauri/tests/common/credential_issuer/src/common/credentials/driver_license.json b/src-tauri/tests/common/credential_issuer/src/common/credentials/driver_license.json new file mode 100644 index 000000000..6d273380a --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/common/credentials/driver_license.json @@ -0,0 +1,20 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "id": "DriverLicense_JWT", + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ], + "issuer": {}, + "issuanceDate": "2022-08-15T09:30:00Z", + "expirationDate": "2027-08-15T23:59:59Z", + "credentialSubject": { + "id": {}, + "licenseClass": "Class C", + "issuedBy": "California", + "validity": "Valid" + } +} diff --git a/src-tauri/tests/common/credential_issuer/src/common/credentials/university_degree.json b/src-tauri/tests/common/credential_issuer/src/common/credentials/university_degree.json new file mode 100644 index 000000000..9d37b51ea --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/common/credentials/university_degree.json @@ -0,0 +1,20 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "id": "UniversityDegree_JWT", + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": {}, + "credentialSubject": { + "id": {}, + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } +} diff --git a/src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/driver_license.json b/src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/driver_license.json new file mode 100644 index 000000000..7a71a7981 --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/driver_license.json @@ -0,0 +1,32 @@ +{ + "format": "jwt_vc_json", + "id": "DriverLicense_JWT", + "cryptographic_binding_methods_supported": [ + "did:key", + "did:iota" + ], + "cryptographic_suites_supported": [ + "EdDSA" + ], + "credential_definition":{ + "type": [ + "VerifiableCredential", + "DriverLicenseCredential" + ] + }, + "proof_types_supported": [ + "jwt" + ], + "display": [ + { + "name": "Driver License Credential", + "locale": "en-US", + "logo": { + "url": "https://example.com/public/logo.png", + "alt_text": "a square logo of a driver license" + }, + "background_color": "#12107c", + "text_color": "#FFFFFF" + } + ] +} diff --git a/src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/university_degree.json b/src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/university_degree.json new file mode 100644 index 000000000..fd433a720 --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/common/credentials_supported_objects/university_degree.json @@ -0,0 +1,58 @@ +{ + "format": "jwt_vc_json", + "id": "UniversityDegree_JWT", + "cryptographic_binding_methods_supported": [ + "did:key", + "did:iota" + ], + "cryptographic_suites_supported": [ + "EdDSA" + ], + "credential_definition":{ + "type": [ + "VerifiableCredential", + "UniversityDegreeCredential" + ], + "credentialSubject": { + "given_name": { + "display": [ + { + "name": "Given Name", + "locale": "en-US" + } + ] + }, + "last_name": { + "display": [ + { + "name": "Surname", + "locale": "en-US" + } + ] + }, + "degree": {}, + "gpa": { + "display": [ + { + "name": "GPA" + } + ] + } + } + }, + "proof_types_supported": [ + "jwt" + ], + "display": [ + { + "name": "University Credential", + "locale": "en-US", + "logo": { + "url": "https://exampleuniversity.com/public/logo.png", + "alt_text": "a square logo of a university" + }, + "background_color": "#12107c", + "text_color": "#FFFFFF" + } + ] +} diff --git a/src-tauri/tests/common/credential_issuer/src/common/memory_storage.rs b/src-tauri/tests/common/credential_issuer/src/common/memory_storage.rs new file mode 100644 index 000000000..51c69fbdb --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/common/memory_storage.rs @@ -0,0 +1,144 @@ +use std::fs::File; + +use jsonwebtoken::{Algorithm, Header}; +use lazy_static::lazy_static; +use oid4vc_core::{authentication::subject::SigningSubject, generate_authorization_code, jwt, JsonValue}; +use oid4vc_manager::storage::Storage; +use oid4vci::{ + authorization_response::AuthorizationResponse, + credential_format_profiles::{ + w3c_verifiable_credentials::jwt_vc_json::JwtVcJson, Credential, CredentialFormatCollection, CredentialFormats, + }, + credential_issuer::credentials_supported::CredentialsSupportedObject, + credential_offer::{AuthorizationCode, PreAuthorizedCode}, + credential_response::{CredentialResponse, CredentialResponseType}, + token_request::TokenRequest, + token_response::TokenResponse, + VerifiableCredentialJwt, +}; +use reqwest::Url; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use serde_json::json; + +lazy_static! { + pub static ref CODE: String = generate_authorization_code(16); + pub static ref PRE_AUTHORIZED_CODE: PreAuthorizedCode = PreAuthorizedCode { + pre_authorized_code: generate_authorization_code(16), + ..Default::default() + }; + pub static ref USER_PIN: String = "493536".to_string(); + pub static ref ACCESS_TOKEN: String = "czZCaGRSa3F0MzpnWDFmQmF0M2JW".to_string(); + pub static ref C_NONCE: String = "tZignsnFbp".to_string(); +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct MemoryStorage; + +impl Storage for MemoryStorage { + fn get_credentials_supported(&self) -> Vec> { + vec![ + serde_json::from_reader( + File::open("./src/common/credentials_supported_objects/university_degree.json").unwrap(), + ) + .unwrap(), + serde_json::from_reader( + File::open("./src/common/credentials_supported_objects/driver_license.json").unwrap(), + ) + .unwrap(), + ] + } + + fn get_authorization_code(&self) -> Option { + None + } + + fn get_authorization_response(&self) -> Option { + Some(AuthorizationResponse { + code: CODE.clone(), + state: None, + }) + } + + fn get_pre_authorized_code(&self) -> Option { + Some(PRE_AUTHORIZED_CODE.clone()) + } + + fn get_token_response(&self, token_request: TokenRequest) -> Option { + match token_request { + TokenRequest::AuthorizationCode { code, .. } => code == CODE.clone(), + TokenRequest::PreAuthorizedCode { + pre_authorized_code, .. + } => pre_authorized_code == PRE_AUTHORIZED_CODE.pre_authorized_code, + } + .then_some(TokenResponse { + // TODO: dynamically create this. + access_token: ACCESS_TOKEN.clone(), + token_type: "bearer".to_string(), + expires_in: Some(86400), + refresh_token: None, + scope: None, + c_nonce: Some(C_NONCE.clone()), + c_nonce_expires_in: Some(86400), + }) + } + + fn get_credential_response( + &self, + access_token: String, + subject_did: Url, + issuer_did: Url, + credential_format: CFC, + signer: SigningSubject, + ) -> Option { + let type_ = match serde_json::from_value::(serde_json::to_value(credential_format).unwrap()) + .unwrap() + { + CredentialFormats::JwtVcJson(credential) => credential.parameters.credential_definition.type_, + _ => unreachable!("Credential format not supported"), + }; + + let credential_json = match &type_[..] { + [_, b] if b == "UniversityDegreeCredential" => { + File::open("./tests/common/credentials/university_degree.json").unwrap() + } + [_, b] if b == "DriverLicenseCredential" => { + File::open("./tests/common/credentials/driver_license.json").unwrap() + } + _ => unreachable!(), + }; + + let mut verifiable_credential: JsonValue = serde_json::from_reader(credential_json).unwrap(); + verifiable_credential["issuer"] = json!(issuer_did); + verifiable_credential["credentialSubject"]["id"] = json!(subject_did); + + (access_token == ACCESS_TOKEN.clone()).then_some(CredentialResponse { + credential: CredentialResponseType::Immediate(CredentialFormats::JwtVcJson(Credential { + format: JwtVcJson, + credential: serde_json::to_value( + jwt::encode( + signer.clone(), + Header::new(Algorithm::EdDSA), + VerifiableCredentialJwt::builder() + .sub(subject_did.clone()) + .iss(issuer_did.clone()) + .iat(0) + .exp(9999999999i64) + .verifiable_credential(verifiable_credential) + .build() + .ok(), + ) + .ok(), + ) + .unwrap(), + })), + c_nonce: Some(C_NONCE.clone()), + c_nonce_expires_in: Some(86400), + }) + } + + fn get_state(&self) -> Option { + None + } + + fn set_state(&mut self, _state: String) {} +} diff --git a/src-tauri/tests/common/credential_issuer/src/common/mod.rs b/src-tauri/tests/common/credential_issuer/src/common/mod.rs new file mode 100644 index 000000000..984eb642f --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/common/mod.rs @@ -0,0 +1,139 @@ +// Move this to the mock repo. +pub mod memory_storage; + +use std::sync::Arc; + +use anyhow::Result; +use async_trait::async_trait; +use derivative::{self, Derivative}; +use ed25519_dalek::{Signature, Signer, SigningKey}; +use jsonwebtoken::{decode, Algorithm, DecodingKey, Validation}; +use lazy_static::lazy_static; +use oid4vc_core::{authentication::sign::ExternalSign, JsonValue, Sign, Subject, Verify}; +use rand::rngs::OsRng; +use siopv2::{StandardClaimsRequests, StandardClaimsValues}; + +// SigningKey for mocking purposes. +lazy_static! { + pub static ref TEST_KEYPAIR: SigningKey = SigningKey::generate(&mut OsRng); +} + +#[derive(Derivative)] +#[derivative(Default)] +pub struct TestSubject { + #[derivative(Default(value = "did_url::DID::parse(\"did:test:123\").unwrap()"))] + pub did: did_url::DID, + pub key_id: String, +} + +impl TestSubject { + pub fn new(did: String, key_id: String) -> Result { + Ok(TestSubject { + did: did_url::DID::parse(did)?, + key_id, + }) + } +} + +#[async_trait] +impl Sign for TestSubject { + fn key_id(&self) -> Option { + Some(self.key_id.clone()) + } + + fn sign(&self, message: &str) -> Result> { + let signature: Signature = TEST_KEYPAIR.sign(message.as_bytes()); + Ok(signature.to_bytes().to_vec()) + } + + fn external_signer(&self) -> Option> { + None + } +} + +#[async_trait] +impl Verify for TestSubject { + async fn public_key(&self, _kid: &str) -> Result> { + Ok(TEST_KEYPAIR.verifying_key().to_bytes().to_vec()) + } +} + +impl Subject for TestSubject { + fn identifier(&self) -> Result { + Ok(self.did.to_string()) + } +} + +pub struct MockVerifier; + +impl MockVerifier { + pub fn new() -> Self { + MockVerifier {} + } +} + +#[async_trait] +impl Verify for MockVerifier { + async fn public_key(&self, _kid: &str) -> Result> { + Ok(TEST_KEYPAIR.verifying_key().to_bytes().to_vec()) + } +} + +pub trait Storage { + fn fetch_claims(&self, request_claims: &StandardClaimsRequests) -> StandardClaimsValues; +} + +#[derive(Default, Debug)] +pub struct MemoryStorage { + data: StandardClaimsValues, +} + +impl MemoryStorage { + pub fn new(data: StandardClaimsValues) -> Self { + MemoryStorage { data } + } +} + +impl Storage for MemoryStorage { + fn fetch_claims(&self, request_claims: &StandardClaimsRequests) -> StandardClaimsValues { + let mut present = StandardClaimsValues::default(); + + macro_rules! present_if { + ($claim:ident) => { + if request_claims.$claim.is_some() { + present.$claim = self.data.$claim.clone(); + } + }; + } + + present_if!(name); + present_if!(family_name); + present_if!(given_name); + present_if!(middle_name); + present_if!(nickname); + present_if!(preferred_username); + present_if!(profile); + present_if!(picture); + present_if!(website); + present_if!(gender); + present_if!(birthdate); + present_if!(zoneinfo); + present_if!(locale); + present_if!(updated_at); + present_if!(email); + present_if!(email_verified); + present_if!(address); + present_if!(phone_number); + present_if!(phone_number_verified); + + present + } +} + +// Get the claims from a JWT without performing validation. +pub fn get_jwt_claims(jwt: &JsonValue) -> JsonValue { + let key = DecodingKey::from_secret(&[]); + let mut validation = Validation::new(Algorithm::EdDSA); + validation.insecure_disable_signature_validation(); + decode(jwt.as_str().unwrap(), &key, &validation).unwrap().claims +} diff --git a/src-tauri/tests/common/credential_issuer/src/main.rs b/src-tauri/tests/common/credential_issuer/src/main.rs new file mode 100644 index 000000000..9bc2a8536 --- /dev/null +++ b/src-tauri/tests/common/credential_issuer/src/main.rs @@ -0,0 +1,46 @@ +mod common; + +use crate::common::{get_jwt_claims, memory_storage::MemoryStorage}; +use did_key::{generate, Ed25519KeyPair}; +use oid4vc_core::Subject; +use oid4vc_manager::{ + managers::credential_issuer::CredentialIssuerManager, methods::key_method::KeySubject, + servers::credential_issuer::Server, +}; +use oid4vci::{ + credential_format_profiles::CredentialFormats, + credential_offer::{CredentialOffer, CredentialOfferQuery, CredentialsObject, Grants}, + credential_response::{BatchCredentialResponse, CredentialResponse, CredentialResponseType}, + token_request::{PreAuthorizedCode, TokenRequest}, + Wallet, +}; +use std::{net::TcpListener, sync::Arc}; + +#[tokio::main] +async fn main() { + // Setup the credential issuer. + let mut credential_issuer = Server::<_, CredentialFormats>::setup( + CredentialIssuerManager::new( + Some(TcpListener::bind("0.0.0.0:8000").unwrap()), + MemoryStorage, + [Arc::new(KeySubject::from_keypair( + generate::(Some( + "this-is-a-very-UNSAFE-issuer-secret-key" + .as_bytes() + .try_into() + .unwrap(), + )), + None, + ))], + ) + .unwrap(), + None, + ) + .unwrap(); + dbg!(&credential_issuer + .credential_issuer_manager + .credential_issuer_url() + .unwrap() + .as_str()); + credential_issuer.start_server().await.unwrap(); +} diff --git a/src-tauri/tests/tests/mod.rs b/src-tauri/tests/tests/mod.rs index 15985b5be..daeaa0e93 100644 --- a/src-tauri/tests/tests/mod.rs +++ b/src-tauri/tests/tests/mod.rs @@ -6,8 +6,6 @@ mod qr_code_scanned; #[cfg(test)] mod tests { - use std::ops::Deref; - use crate::common::assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}; use identity_wallet::state::{ actions::{Action, ActionType}, @@ -25,7 +23,7 @@ mod tests { print_mermaid().await; } - async fn print_mermaid() -> anyhow::Result<()> { + async fn print_mermaid() { use std::collections::HashMap; let mut idents = HashMap::new(); let mut payloads = HashMap::new(); @@ -38,12 +36,10 @@ mod tests { .next() .unwrap(); - // println!("file: {:#?}", file); println!("__________________________________________________________"); println!("__________________________________________________________"); - let temp2 = file - .clone() + file.clone() .into_inner() .find(|pair| pair.as_rule() == Rule::body) .map(|body| { @@ -71,7 +67,7 @@ mod tests { }) }); - let mut temp = file + let temp = file .into_inner() .find(|pair| pair.as_rule() == Rule::body) .map(|body| { @@ -86,9 +82,6 @@ mod tests { .into_inner() .filter(|pair| pair.as_rule() == Rule::chain) .filter_map(|chain| { - // println!("graph: {:#?}", chain); - // println!("__________________________________________________________"); - // println!("__________________________________________________________"); let mut chain = chain.into_inner(); match ( chain.next(), @@ -125,9 +118,14 @@ mod tests { _ => panic!("first"), }; - let link = PairWrapper(third).child(0)?.child(0)?.0.as_str(); - - // println!("action: {:#?}", link.as_str()); + let link = third + .into_inner() + .next() + .unwrap() + .into_inner() + .next() + .unwrap() + .as_str(); let mut fifth = fifth.into_inner().next().unwrap().into_inner(); let (ident2, path2) = match (fifth.next(), fifth.next(), fifth.next()) { @@ -150,7 +148,14 @@ mod tests { && second.as_rule() == Rule::link && third.as_rule() == Rule::ident_comb => { - let ident = PairWrapper(first).child(0)?.child(0)?.0.as_str(); + let ident = first + .into_inner() + .next() + .unwrap() + .into_inner() + .next() + .unwrap() + .as_str(); let payload = payloads.get(ident).unwrap(); @@ -187,14 +192,5 @@ mod tests { ) .await; } - - Ok(()) - } - pub struct PairWrapper(pub pest::iterators::Pair<'static, Rule>); - - impl PairWrapper { - pub fn child(self, index: u64) -> Option { - Some(Self(self.0.into_inner().nth(index as usize).unwrap())) - } } } From b4c5ffbff09aad40d1cff1d5dd36d0e94a88e4a0 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:08:15 +0800 Subject: [PATCH 22/62] fix: fix workflow --- .github/workflows/test.yml | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 622bd9420..0cf71247e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,34 +1,32 @@ name: Run Tests on: - push: - branches: [test/mermaid-diagram] + push: + branches: [test/mermaid-diagram] jobs: - build: - runs-on: ubuntu-latest + build: + runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v2 + steps: + - name: Checkout Repository + uses: actions/checkout@v2 - - name: Build Docker Image - run: docker build -t credential_issuer tests/common/credential_issuer . - - - name: Run Docker Container - run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + - name: Build Docker Image + run: docker build -t credential_issuer tests/common/credential_issuer . - test: - runs-on ubuntu-latest + - name: Run Docker Container + run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + test: + runs-on: ubuntu-latest needs: build - steps: - name: Wait for Credential Issuer Server to Start - run: sleep 100 + run: sleep 100 - name: Run Tests - run: cargo test --manifest-path tests/common/Cargo.toml + run: cargo test --manifest-path tests/common/Cargo.toml - name: Stop Docker Container - run: docker stop credential_issuer + run: docker stop credential_issuer From b898db1aa12219c3907a5edaece9b6263b2e6f9d Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:11:33 +0800 Subject: [PATCH 23/62] fix: add src-taur --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0cf71247e..97778d639 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v2 - name: Build Docker Image - run: docker build -t credential_issuer tests/common/credential_issuer . + run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer . - name: Run Docker Container run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer From b9300860f0988b3b3e509908dff44784b0a881c0 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:21:59 +0800 Subject: [PATCH 24/62] fix: remove dot --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 97778d639..b5fbe0cda 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v2 - name: Build Docker Image - run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer . + run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer - name: Run Docker Container run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer From 6e0116efa67e3249400317df578ac5ba89bc653e Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:34:23 +0800 Subject: [PATCH 25/62] fix: add src-tauri, remove sleep 100 --- .github/workflows/test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b5fbe0cda..f8659ea0c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,11 +22,8 @@ jobs: runs-on: ubuntu-latest needs: build steps: - - name: Wait for Credential Issuer Server to Start - run: sleep 100 - - name: Run Tests - run: cargo test --manifest-path tests/common/Cargo.toml + run: cargo test --manifest-path src-tauri/tests/common/Cargo.toml - name: Stop Docker Container run: docker stop credential_issuer From 829df7be1ab19501ccc776e9047b70757ddf1cc8 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:35:56 +0800 Subject: [PATCH 26/62] fix: add credential_issuer folder --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f8659ea0c..b47ce6d65 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: needs: build steps: - name: Run Tests - run: cargo test --manifest-path src-tauri/tests/common/Cargo.toml + run: cargo test --manifest-path src-tauri/tests/common/credential_issuer/Cargo.toml - name: Stop Docker Container run: docker stop credential_issuer From 67e1dc794483ad68ed7a8c7552287b4999b0347b Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 15:55:56 +0800 Subject: [PATCH 27/62] fix: fix cargo test, adjust gitignore --- .github/workflows/test.yml | 2 +- src-tauri/.gitignore | 2 +- .../tests/common/credential_issuer/Cargo.lock | 270 ++---------------- .../tests/common/credential_issuer/Cargo.toml | 10 - 4 files changed, 26 insertions(+), 258 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b47ce6d65..a39a5a3dc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: needs: build steps: - name: Run Tests - run: cargo test --manifest-path src-tauri/tests/common/credential_issuer/Cargo.toml + run: cargo test --manifest-path src-tauri/Cargo.toml - name: Stop Docker Container run: docker stop credential_issuer diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore index 02c533956..d3f8afb8e 100644 --- a/src-tauri/.gitignore +++ b/src-tauri/.gitignore @@ -1,4 +1,4 @@ -/target/ +**/target/ .cargo gen/* diff --git a/src-tauri/tests/common/credential_issuer/Cargo.lock b/src-tauri/tests/common/credential_issuer/Cargo.lock index 08c82a1b5..5b7961683 100644 --- a/src-tauri/tests/common/credential_issuer/Cargo.lock +++ b/src-tauri/tests/common/credential_issuer/Cargo.lock @@ -190,27 +190,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" -[[package]] -name = "assert-json-diff" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - [[package]] name = "async-trait" version = "0.1.73" @@ -753,15 +732,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "concurrent-queue" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "const-oid" version = "0.9.5" @@ -807,21 +777,36 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "credential_issuer" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-trait", + "axum", + "derivative", + "did-key", + "did_url", + "ed25519-dalek 2.0.0", + "jsonwebtoken", + "lazy_static", + "oid4vc-core", + "oid4vc-manager", + "oid4vci", + "oid4vp", + "rand 0.8.5", + "serde", + "serde_json", + "siopv2", + "tokio", +] + [[package]] name = "critical-section" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] - [[package]] name = "crunchy" version = "0.2.2" @@ -1007,25 +992,6 @@ dependencies = [ "url", ] -[[package]] -name = "deadpool" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421fe0f90f2ab22016f32a9881be5134fdd71c65298917084b0c7477cbc3856e" -dependencies = [ - "async-trait", - "deadpool-runtime", - "num_cpus", - "retain_mut", - "tokio", -] - -[[package]] -name = "deadpool-runtime" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49" - [[package]] name = "der" version = "0.6.1" @@ -1386,12 +1352,6 @@ dependencies = [ "libc", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "fancy-regex" version = "0.11.0" @@ -1402,15 +1362,6 @@ dependencies = [ "regex", ] -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - [[package]] name = "fern" version = "0.6.2" @@ -1538,21 +1489,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-macro" version = "0.3.28" @@ -1576,12 +1512,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" -[[package]] -name = "futures-timer" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" - [[package]] name = "futures-util" version = "0.3.28" @@ -1663,12 +1593,6 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - [[package]] name = "gloo-timers" version = "0.2.6" @@ -1887,27 +1811,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" -[[package]] -name = "http-types" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" -dependencies = [ - "anyhow", - "async-channel", - "base64 0.13.1", - "futures-lite", - "http", - "infer", - "pin-project-lite", - "rand 0.7.3", - "serde", - "serde_json", - "serde_qs", - "serde_urlencoded", - "url", -] - [[package]] name = "httparse" version = "1.8.0" @@ -2296,12 +2199,6 @@ dependencies = [ "serde", ] -[[package]] -name = "infer" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" - [[package]] name = "instant" version = "0.1.12" @@ -3037,12 +2934,6 @@ dependencies = [ "group 0.12.1", ] -[[package]] -name = "parking" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" - [[package]] name = "parking_lot" version = "0.11.2" @@ -3400,12 +3291,6 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" -[[package]] -name = "relative-path" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" - [[package]] name = "reqwest" version = "0.11.20" @@ -3548,35 +3433,6 @@ dependencies = [ "retain_mut", ] -[[package]] -name = "rstest" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" -dependencies = [ - "futures", - "futures-timer", - "rstest_macros", - "rustc_version", -] - -[[package]] -name = "rstest_macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" -dependencies = [ - "cfg-if", - "glob", - "proc-macro2", - "quote", - "regex", - "relative-path", - "rustc_version", - "syn 2.0.37", - "unicode-ident", -] - [[package]] name = "rustc-demangle" version = "0.1.23" @@ -3772,17 +3628,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_qs" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" -dependencies = [ - "percent-encoding", - "serde", - "thiserror", -] - [[package]] name = "serde_repr" version = "0.1.16" @@ -4196,41 +4041,6 @@ dependencies = [ "pin-utils", ] -[[package]] -name = "temp" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "axum", - "axum-auth", - "chrono", - "derivative", - "did-key", - "did_url", - "ed25519-dalek 2.0.0", - "futures", - "identity_core 0.7.0-alpha.7", - "identity_iota", - "jsonwebtoken", - "lazy_static", - "oid4vc-core", - "oid4vc-manager", - "oid4vci", - "oid4vp", - "paste", - "rand 0.8.5", - "reqwest", - "rstest", - "serde", - "serde_json", - "siopv2", - "tokio", - "tower-http", - "uuid", - "wiremock", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -4532,10 +4342,6 @@ name = "uuid" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" -dependencies = [ - "getrandom 0.2.10", - "rand 0.8.5", -] [[package]] name = "vec_map" @@ -4549,12 +4355,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" - [[package]] name = "walkdir" version = "2.4.0" @@ -4799,28 +4599,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "wiremock" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f71803d3a1c80377a06221e0530be02035d5b3e854af56c6ece7ac20ac441d" -dependencies = [ - "assert-json-diff", - "async-trait", - "base64 0.21.4", - "deadpool", - "futures", - "futures-timer", - "http-types", - "hyper", - "log", - "once_cell", - "regex", - "serde", - "serde_json", - "tokio", -] - [[package]] name = "wyz" version = "0.5.1" diff --git a/src-tauri/tests/common/credential_issuer/Cargo.toml b/src-tauri/tests/common/credential_issuer/Cargo.toml index 600e970a1..ab208869d 100644 --- a/src-tauri/tests/common/credential_issuer/Cargo.toml +++ b/src-tauri/tests/common/credential_issuer/Cargo.toml @@ -22,19 +22,9 @@ async-trait = "0.1" lazy_static = "1.4.0" derivative = "2.2" anyhow = "1.0" -chrono = "0.4" did-key = "0.2" -identity_iota = "0.6" -identity_core = { version = "=0.7.0-alpha.7" } -futures = "0.3" axum = "0.6" -axum-auth = "0.4" jsonwebtoken = "8.3" -paste = "1.0" -tower-http = { version = "0.4", features = ["cors"]} ed25519-dalek = { version = "2.0.0", features = ["rand_core"] } rand = "0.8" -wiremock = "0.5" -uuid = { version = "1.4", features = ["v4", "fast-rng"] } -rstest = "0.18" reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] } From 54f7bc72dc2887090cbdb5240945a19932548d8e Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:12:22 +0800 Subject: [PATCH 28/62] test --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a39a5a3dc..234b10f60 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,9 @@ jobs: runs-on: ubuntu-latest needs: build steps: + - name: Temp Test + run: ls -la + - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 6a4d21102179940ed8862940eb251921f46df2a2 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:12:46 +0800 Subject: [PATCH 29/62] test --- .github/workflows/test.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 234b10f60..1249c422f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,19 +8,19 @@ jobs: build: runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v2 + # steps: + # - name: Checkout Repository + # uses: actions/checkout@v2 - - name: Build Docker Image - run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer + # - name: Build Docker Image + # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer - - name: Run Docker Container - run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + # - name: Run Docker Container + # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer test: runs-on: ubuntu-latest - needs: build + # needs: build steps: - name: Temp Test run: ls -la From b1040e0b67bc7d269f2b5159993ef6d8b01a1bbb Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:13:49 +0800 Subject: [PATCH 30/62] test --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1249c422f..c4d259f11 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,9 +8,9 @@ jobs: build: runs-on: ubuntu-latest - # steps: - # - name: Checkout Repository - # uses: actions/checkout@v2 + steps: + - name: Checkout Repository + uses: actions/checkout@v2 # - name: Build Docker Image # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer From 78c58f9a4d04980ad3a7b5d754020929219060a5 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:17:24 +0800 Subject: [PATCH 31/62] test --- .github/workflows/test.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c4d259f11..6956132c4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,16 +17,9 @@ jobs: # - name: Run Docker Container # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer - - test: - runs-on: ubuntu-latest - # needs: build - steps: - - name: Temp Test - run: ls -la - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml - + - name: Stop Docker Container run: docker stop credential_issuer From 08df97b10524af5c7aecea0ba82fdaac6ab31b5b Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:19:14 +0800 Subject: [PATCH 32/62] fix: should work now --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6956132c4..77896d445 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,11 +12,11 @@ jobs: - name: Checkout Repository uses: actions/checkout@v2 - # - name: Build Docker Image - # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer + - name: Build Docker Image + run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer - # - name: Run Docker Container - # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + - name: Run Docker Container + run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 14d9955218cd9ce34f43846c6846aa3ea1e57ee7 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:40:56 +0800 Subject: [PATCH 33/62] fix: install packages --- .github/workflows/test.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 77896d445..4e8596581 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,6 +18,21 @@ jobs: - name: Run Docker Container run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + - name: Install Packages + run: | + sudo apt update && sudo apt -y install + libwebkit2gtk-4.0-dev + build-essential + curl + wget + libglib2.0-dev + libssl-dev + libgtk-3-dev + libappindicator3-dev + librsvg2-dev + libappindicator-dev + libgdk3.0-cil libatk1.0-dev + - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 70e19d4223f68fcf4a79fa025430a99222703b01 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 16:52:09 +0800 Subject: [PATCH 34/62] test: add linebreak --- .github/workflows/test.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4e8596581..a0649fdd7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,25 +12,25 @@ jobs: - name: Checkout Repository uses: actions/checkout@v2 - - name: Build Docker Image - run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer + # - name: Build Docker Image + # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer - - name: Run Docker Container - run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + # - name: Run Docker Container + # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer - name: Install Packages run: | - sudo apt update && sudo apt -y install - libwebkit2gtk-4.0-dev - build-essential - curl - wget - libglib2.0-dev - libssl-dev - libgtk-3-dev - libappindicator3-dev - librsvg2-dev - libappindicator-dev + sudo apt update && sudo apt -y install \ + libwebkit2gtk-4.0-dev \ + build-essential \ + curl \ + wget \ + libglib2.0-dev \ + libssl-dev \ + libgtk-3-dev \ + libappindicator3-dev \ + librsvg2-dev \ + libappindicator-dev \ libgdk3.0-cil libatk1.0-dev - name: Run Tests From c7ed02afa392ca51df618657090fbb83cf072eb3 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 17:05:20 +0800 Subject: [PATCH 35/62] test --- .github/workflows/test.yml | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a0649fdd7..2f92b9e77 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,8 +9,20 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout Repository - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + - name: setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + - name: install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # - name: Build Docker Image # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer @@ -18,21 +30,6 @@ jobs: # - name: Run Docker Container # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer - - name: Install Packages - run: | - sudo apt update && sudo apt -y install \ - libwebkit2gtk-4.0-dev \ - build-essential \ - curl \ - wget \ - libglib2.0-dev \ - libssl-dev \ - libgtk-3-dev \ - libappindicator3-dev \ - librsvg2-dev \ - libappindicator-dev \ - libgdk3.0-cil libatk1.0-dev - - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 4b2fff1639d03877ce9eb6ed2cc95bf9b5b86483 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:06:27 +0800 Subject: [PATCH 36/62] test: use forked action --- .github/workflows/test.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2f92b9e77..7d3565ccd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,20 +10,13 @@ jobs: steps: - uses: actions/checkout@v3 - - name: setup node - uses: actions/setup-node@v3 - with: - node-version: 16 - - name: install Rust stable - uses: dtolnay/rust-toolchain@stable - name: install dependencies run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - - uses: tauri-apps/tauri-action@v0 + - uses: impierce/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # - name: Build Docker Image # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer From a7084a6e5cc7e3ea234aef184f1b2a2a775149ee Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:18:38 +0800 Subject: [PATCH 37/62] test: remove version --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7d3565ccd..01327ea8b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - - uses: impierce/tauri-action@v0 + - uses: impierce/tauri-action env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # - name: Build Docker Image From 3046edd31bd36eb66f060b7c20ae41dc8df173e6 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:25:54 +0800 Subject: [PATCH 38/62] test --- .github/workflows/test.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 01327ea8b..827582632 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,20 +9,20 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install dependencies - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - - uses: impierce/tauri-action - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Checkout Repository + uses: actions/checkout@v3 + # - name: Build Docker Image # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer # - name: Run Docker Container # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + - name: Install Packages + run: | + sudo apt update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 9566615337ea144e71c183f6b046a36a1c7dbcee Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:34:33 +0800 Subject: [PATCH 39/62] test --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 827582632..ecd0db732 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,8 @@ jobs: - name: Install Packages run: | sudo apt update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev + curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 812158af13db7fbe958f45cebf1c6f7b55f12950 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:36:39 +0800 Subject: [PATCH 40/62] test --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ecd0db732..e7e100555 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: run: | sudo apt update sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev - curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh + curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh -s -- -y - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From ee9cbcc1d553ca46a9801634e294818c904cc740 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:45:05 +0800 Subject: [PATCH 41/62] test --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e7e100555..e4ced1fce 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,8 +21,7 @@ jobs: - name: Install Packages run: | sudo apt update - sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev - curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh -s -- -y + sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From b4af7c90dc6dc9efae580a59ed6784207af33a02 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:49:53 +0800 Subject: [PATCH 42/62] test: add javascriptcoregtk-4.1 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e4ced1fce..b0a0aa0c5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,7 @@ jobs: - name: Install Packages run: | sudo apt update - sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev + sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev javascriptcoregtk-4.1 - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From df0c5b13fee4b660fc8c38c39009df7445b4644b Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 20:55:26 +0800 Subject: [PATCH 43/62] test --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b0a0aa0c5..7381ea265 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,7 +21,7 @@ jobs: - name: Install Packages run: | sudo apt update - sudo apt-get install -y libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev javascriptcoregtk-4.1 + sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev javascriptcoregtk-4.1 - name: Run Tests run: cargo test --manifest-path src-tauri/Cargo.toml From 24001440a62abfb56db10fc59921e648c7f61f7c Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 21:08:30 +0800 Subject: [PATCH 44/62] fix: fix warnings --- .../tests/common/credential_issuer/Cargo.lock | 1 + .../credential_issuer/src/common/mod.rs | 32 +------------------ .../common/credential_issuer/src/main.rs | 16 ++-------- 3 files changed, 5 insertions(+), 44 deletions(-) diff --git a/src-tauri/tests/common/credential_issuer/Cargo.lock b/src-tauri/tests/common/credential_issuer/Cargo.lock index 5b7961683..9da4cdcc0 100644 --- a/src-tauri/tests/common/credential_issuer/Cargo.lock +++ b/src-tauri/tests/common/credential_issuer/Cargo.lock @@ -795,6 +795,7 @@ dependencies = [ "oid4vci", "oid4vp", "rand 0.8.5", + "reqwest", "serde", "serde_json", "siopv2", diff --git a/src-tauri/tests/common/credential_issuer/src/common/mod.rs b/src-tauri/tests/common/credential_issuer/src/common/mod.rs index 984eb642f..11cf52c2a 100644 --- a/src-tauri/tests/common/credential_issuer/src/common/mod.rs +++ b/src-tauri/tests/common/credential_issuer/src/common/mod.rs @@ -7,9 +7,8 @@ use anyhow::Result; use async_trait::async_trait; use derivative::{self, Derivative}; use ed25519_dalek::{Signature, Signer, SigningKey}; -use jsonwebtoken::{decode, Algorithm, DecodingKey, Validation}; use lazy_static::lazy_static; -use oid4vc_core::{authentication::sign::ExternalSign, JsonValue, Sign, Subject, Verify}; +use oid4vc_core::{authentication::sign::ExternalSign, Sign, Subject, Verify}; use rand::rngs::OsRng; use siopv2::{StandardClaimsRequests, StandardClaimsValues}; @@ -26,15 +25,6 @@ pub struct TestSubject { pub key_id: String, } -impl TestSubject { - pub fn new(did: String, key_id: String) -> Result { - Ok(TestSubject { - did: did_url::DID::parse(did)?, - key_id, - }) - } -} - #[async_trait] impl Sign for TestSubject { fn key_id(&self) -> Option { @@ -66,12 +56,6 @@ impl Subject for TestSubject { pub struct MockVerifier; -impl MockVerifier { - pub fn new() -> Self { - MockVerifier {} - } -} - #[async_trait] impl Verify for MockVerifier { async fn public_key(&self, _kid: &str) -> Result> { @@ -88,12 +72,6 @@ pub struct MemoryStorage { data: StandardClaimsValues, } -impl MemoryStorage { - pub fn new(data: StandardClaimsValues) -> Self { - MemoryStorage { data } - } -} - impl Storage for MemoryStorage { fn fetch_claims(&self, request_claims: &StandardClaimsRequests) -> StandardClaimsValues { let mut present = StandardClaimsValues::default(); @@ -129,11 +107,3 @@ impl Storage for MemoryStorage { present } } - -// Get the claims from a JWT without performing validation. -pub fn get_jwt_claims(jwt: &JsonValue) -> JsonValue { - let key = DecodingKey::from_secret(&[]); - let mut validation = Validation::new(Algorithm::EdDSA); - validation.insecure_disable_signature_validation(); - decode(jwt.as_str().unwrap(), &key, &validation).unwrap().claims -} diff --git a/src-tauri/tests/common/credential_issuer/src/main.rs b/src-tauri/tests/common/credential_issuer/src/main.rs index 9bc2a8536..d1c131cf0 100644 --- a/src-tauri/tests/common/credential_issuer/src/main.rs +++ b/src-tauri/tests/common/credential_issuer/src/main.rs @@ -1,19 +1,12 @@ mod common; -use crate::common::{get_jwt_claims, memory_storage::MemoryStorage}; +use crate::common::memory_storage::MemoryStorage; use did_key::{generate, Ed25519KeyPair}; -use oid4vc_core::Subject; use oid4vc_manager::{ managers::credential_issuer::CredentialIssuerManager, methods::key_method::KeySubject, servers::credential_issuer::Server, }; -use oid4vci::{ - credential_format_profiles::CredentialFormats, - credential_offer::{CredentialOffer, CredentialOfferQuery, CredentialsObject, Grants}, - credential_response::{BatchCredentialResponse, CredentialResponse, CredentialResponseType}, - token_request::{PreAuthorizedCode, TokenRequest}, - Wallet, -}; +use oid4vci::credential_format_profiles::CredentialFormats; use std::{net::TcpListener, sync::Arc}; #[tokio::main] @@ -25,10 +18,7 @@ async fn main() { MemoryStorage, [Arc::new(KeySubject::from_keypair( generate::(Some( - "this-is-a-very-UNSAFE-issuer-secret-key" - .as_bytes() - .try_into() - .unwrap(), + "this-is-a-very-UNSAFE-issuer-secret-key".as_bytes().try_into().unwrap(), )), None, ))], From f5dfcc1012ec581e23f35c88cc4f670d67fae1c0 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 21:25:48 +0800 Subject: [PATCH 45/62] test: add RUSTFLAGS="-Awarnings" --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7381ea265..df330a189 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev javascriptcoregtk-4.1 - name: Run Tests - run: cargo test --manifest-path src-tauri/Cargo.toml + run: RUSTFLAGS="-Awarnings" cargo test --manifest-path src-tauri/Cargo.toml - name: Stop Docker Container run: docker stop credential_issuer From c9e300368d9f2b0e9aa21e33923268e32b7fea2d Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 21:37:02 +0800 Subject: [PATCH 46/62] tst: add icons --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index df330a189..22d49e882 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,9 @@ jobs: sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev javascriptcoregtk-4.1 - name: Run Tests - run: RUSTFLAGS="-Awarnings" cargo test --manifest-path src-tauri/Cargo.toml + run: | + cargo tauri icon src-tauri/app-icon.png + RUSTFLAGS="-Awarnings" cargo test --manifest-path src-tauri/Cargo.toml - name: Stop Docker Container run: docker stop credential_issuer From 17351b0ace6f73ea152821b766b83597832932e7 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 21:50:08 +0800 Subject: [PATCH 47/62] test: add icons --- .github/workflows/test.yml | 1 - src-tauri/.gitignore | 4 ++-- src-tauri/icons/128x128.png | Bin 0 -> 6803 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 14036 bytes src-tauri/icons/32x32.png | Bin 0 -> 1345 bytes src-tauri/icons/Square107x107Logo.png | Bin 0 -> 5687 bytes src-tauri/icons/Square142x142Logo.png | Bin 0 -> 7600 bytes src-tauri/icons/Square150x150Logo.png | Bin 0 -> 8049 bytes src-tauri/icons/Square284x284Logo.png | Bin 0 -> 16045 bytes src-tauri/icons/Square30x30Logo.png | Bin 0 -> 1248 bytes src-tauri/icons/Square310x310Logo.png | Bin 0 -> 17398 bytes src-tauri/icons/Square44x44Logo.png | Bin 0 -> 2089 bytes src-tauri/icons/Square71x71Logo.png | Bin 0 -> 3658 bytes src-tauri/icons/Square89x89Logo.png | Bin 0 -> 4670 bytes src-tauri/icons/StoreLogo.png | Bin 0 -> 2366 bytes .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2296 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 8669 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2296 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2234 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 5813 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2234 bytes .../icons/android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5103 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 11577 bytes .../android/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5103 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7573 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 18330 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 7573 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10107 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 24655 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 10107 bytes src-tauri/icons/icon.icns | Bin 0 -> 169225 bytes src-tauri/icons/icon.ico | Bin 0 -> 24572 bytes src-tauri/icons/icon.png | Bin 0 -> 30044 bytes src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 793 bytes src-tauri/icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 1737 bytes src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 1737 bytes src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 3071 bytes src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 1241 bytes src-tauri/icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 2894 bytes src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 2894 bytes src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 4672 bytes src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 1737 bytes src-tauri/icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 4168 bytes src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 4168 bytes src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 6334 bytes src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 66358 bytes src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 6334 bytes src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 9839 bytes src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 4077 bytes src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 8076 bytes src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 8809 bytes 51 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/Square107x107Logo.png create mode 100644 src-tauri/icons/Square142x142Logo.png create mode 100644 src-tauri/icons/Square150x150Logo.png create mode 100644 src-tauri/icons/Square284x284Logo.png create mode 100644 src-tauri/icons/Square30x30Logo.png create mode 100644 src-tauri/icons/Square310x310Logo.png create mode 100644 src-tauri/icons/Square44x44Logo.png create mode 100644 src-tauri/icons/Square71x71Logo.png create mode 100644 src-tauri/icons/Square89x89Logo.png create mode 100644 src-tauri/icons/StoreLogo.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/icon.icns create mode 100644 src-tauri/icons/icon.ico create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 22d49e882..2badf37b6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,6 @@ jobs: - name: Run Tests run: | - cargo tauri icon src-tauri/app-icon.png RUSTFLAGS="-Awarnings" cargo test --manifest-path src-tauri/Cargo.toml - name: Stop Docker Container diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore index d3f8afb8e..816efeda6 100644 --- a/src-tauri/.gitignore +++ b/src-tauri/.gitignore @@ -6,5 +6,5 @@ gen/* !gen/apple/ExportOptions.plist !gen/android/app/build.gradle.kts -# Can be generated through `cargo tauri icon` -icons/ +# # Can be generated through `cargo tauri icon` +# icons/ diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..41ca1e29945826080bb87bc37e099487779d3000 GIT binary patch literal 6803 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 B5~2VA literal 0 HcmV?d00001 diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..17535b7f613029f902feac54bdda74aa76d55ad7 GIT binary patch literal 14036 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d19bf54b7255a4c9523c1d8537df49d239a48bdb GIT binary patch literal 7600 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 St9n=f0000 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6677d1b004e759ce6421ad941f031ba1a4f4417a GIT binary patch literal 8049 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b6970de105e3b0fdaa769db4b90245fc83ff147a GIT binary patch literal 16045 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5d97da41705d6eaea03e11d23fa2df23534b3a96 GIT binary patch literal 1248 zcmV<61Rwi}P)rY!{82_CMEp2ImQZ|MRgbu<$7|vzJxPUI|LL|#FV)O%xCPri8AK+KN`Ca|CESV-6 zw?y640GrXtGKX^65CU{CV9+rN0}8bCc23XndEYY7tk+%AL*KwTyyyKr&+qv?m&zTz zy*jdR$-15uT*$~8@S|R2FlUR|EwClfM|iqa>zW2Zk|3Lm5JZt1p+*#FwD^5`9_tx{ z=9o=THiKB`n?PV`6$Xn5MRip$@3un?gt+%l)MH)KVaPMVGcXRLIA1a7yshG2V)y9@PlcjJYfQ7(V?YKipnZ!9DfQFX8_1Bt8EDCPzLT z4b@~&C@Jk}shWW@dKZUW7&&thx*CPEt(iQ01F|`n?-@CB0aHKqVE)<=iW_Tq+>@Ox z>RakexQJdsmJsxAVD#+IPy#_zy#68@KRn6*A6oPAJ;jaH+`|ybPo< zjRs6z`~&NE?!i&#MD07r;GLL-WRM|BB9BLS-Omk>XfI2vRN6`IF;Og;3|Mj9fxBmr z=*~smyKiEZK(BuCImW-~<|1NyS7{G3(ptWoGo@)q#RfN4hl(oD7 zTlpTizU@XdqH@cb%6;xd-2Z0+#{4`up4*3LII^S61ZRs$DW(FkJTi&J8@FI8E<{cH zQOtDx3GZz;?6nneo@n9L&tB@KeD;!>_o1++oQjLMU05=wdJBB+_W>#v0qi|`2qMLF zrt3P7V`b~hlsW}i9302pYd2xAnc+O%jL_-^W-tE*O;uxOBo>#BhZe<$3CB0*!Sd)7 zOhpB#cd=SM4sxkTfZ@BrzIeLDX&dA}$ z$HR#0u}10?b7TUYMwmP(s;h*h)Pc3>d45n)y_3^5eEI^`=~;eNDfV}?;%?6kp2wCF z2TBgtZ-d6ekmFV=wmBN*9likcR^wwIkvWkjlGA zSPH7zj_`O#Ha2;@Gpbw~RVRfGW2upAxACU1_mzWKn{tzaCwV8dRhFXuy*5}YO3?S& zS@`cQ^FqRa`MaW!P+)PJ1g}=)AuEThJO)?R`Mqe&LDR=?QSq3Arl_z}2#mHois^Y$ z{}e2H96ZlKdo@)_+MmUQoq^u5*FFnTmf^lKz&nw_YNkphVOLWPo;lLQtJct$=do~o zn5(+s{o@p0JEEaT%Ar8of2!lthn~_)%p+@AF*arw;C0Pnb!>+CCs9~(sa}W3!`m4D zx)V!-t{CVCCs5SrB#MIxOYp#DYZ4 zz{l@xr0BX+ttg~|vJIL>i{Al`M>tD#0%5dy`p05o$1T>aTsd(Aa2umk{8(`d?NEAQi zsUXJECd1h+{h3SHDt6@ce@EH}9W2x9(dKFak9}qDn?$z0JN*lWuIo*^d_(B~0000< KMNUMnLSTZ~fMtsS literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..be2a5a3a0152e77de11c132668c0a71f5787ac68 GIT binary patch literal 17398 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

sNzlI0YDHn-#50DC0Zd%jQZCfE@IMdMKxL; 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..03cb30dca0b8eb6d7321c176161a203047784fc4 GIT binary patch literal 2089 zcmV+^2-f$BP)u(fw6g@LL``+z?c1vl?qtsF@wD?9*d?8}+Eov}9qa;TBFZiqFs-VY7u|%x>cp&BL%2VHe?I*l{+nI`>k=R{ z7A?Rm0%gs2BhcQB=52NGUH6JSE^XP1qJ>qWbv+i(i0Mfc9ZxkE|LL!PhW`eEp(&4r zLa15uD(1ZKIO4GwbdpAHc`5QMXX4PhZxQwlAlTK9o`x%!@mNh#&&F9+lMa;G#@0p5 zXbu}LZ~YscXD-3wb|5+!#DX=iW6tu$2>Aj8CP=OjMX=Wg+q7I1%%3Yx!QLP6b_=ta zjy)lU^;p8Xy6aoe^2b4vfm;ApzVR$E`xruf{)7*k63nrUaq+3<+Y02O9Pz>oFl46q z5h*a}7#cV4k^NXOghFDk>YZg`Wx*aFtfXb}TRqYH`21j3--riWa$J~5QXGkw=~}5W ziU9R!j;)y?*$vwTsn3 zSK%u05X;dd!M8`(Q;dD5hSN-lo?^meT4}%_O?mV7gCdK_z#v)FL-5pA;`;s*=sbN% zeEIzP-!X8r0}7qbU9PLX8AIKDav!^A8r(CB5G8%{9P4Ap88i0iP0d8{41|64+Mc6g zRjduWCm$6rFTqe(FPeX=6PBY?ShJsh6b04g$@Uz@^}6Hqu$mNI(f#wJNcGVS8{CX* zI9W6d^xD4TFq1>DE6iE`INW8^ab?FL@mXfnN{yr9)u%|?Ve(x&ZXK&98*3$|HF1{G zCl(6uv2rkGYcTeYwaXoir#(bA#caE06=UYohtbz^Lp04zAxgelzT!zZrca}5VhH&I zXd>oKRtw2z2qlYa;iBte#IEMFLNS}90U5=irWDH9je`wMXRx~;ZHLZ^cA24BH0`#$ z9JKy*Osq_g#*tHABAO2S2I&DDB$NFJv~`L*So3paMmQw3AFapfFE>jus%EpaZ6jC= z`7kq}*=%S#d9Yn&s7Xt_igtzX=cNnls0E(bE{i?4xA#9VZ&dqD;bW@gvo+7v#d<>J{H* zEjo(}#gDnw4tDgSe*JdI8r*(8wf6|~+%TGct)mC;gOwhHW#*hwAh|iMHH_NE*D!Z1 zO(jd}hp+V(Nkf(7Rk*NHbQm58NSkI&Tl3to73N~#Rwqt%Le{&{m}$s|IhBQI+PS?lllH>A zWX=sDcTNck7gSKu4am8jXD>_WVXmU&!Sg?SMdTAEx2XSaJ85}9NMJctty(7GNP%%5 zHt-@vm#N}uAKqm@hBADQII0O0AM2nl$KP|yb(IyN@~x%xFmuHc8#eAj&xIB#Kz^Y6 z)~TBGITSruC9L!P^fY-UHDCkDj2UwiW8AeEC>LMn*(S2J z`IL42vV@OIP%lB=J!SGYpQlp1Y~FT&w*4buOPAb_xvwmtdKk=jd6dxbcs{}`($d^f zl#jxi3Tel@Y`^%!4hrsAv??uQU2|+={*A#XKNu<<^n&vYxX|%Mr=2j@eH+c3z+Y^B%vLY#M%e$OdaaS(#X6 z#N!iMG0Tjv+`ZF)bP|JbOXgManXi69glvg}OoSLWJFIXN7l?E4v#AT$s{ic%RxUcSF{E`Ads2 zd)Xq#9vD5=4Mhrc2@Q@zv=NLeHoJmD=wjD zx~?MjIH2>`MGxHz&ja%$OYp|}<%r4c+2VH6encc85>Nnr3f}f-{^m!&%@jKVBj>`h zQFIhg{HBs@ke5!wZZUk_RD34)A|)9Gd8rfSMuOquS4PFeseNOv>H3{3Knk|@u_|xez*PX`;8;(enrZ@-|4dKm(YI!rpOE| TJ-3MA00000NkvXXu0mjfy=4GL literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..03b72d5f3f762400879035c977132711dc1f2067 GIT binary patch literal 3658 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4f6422e6d47a653c32ba090fc834eb52472bf9 GIT binary patch literal 4670 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..aa2d6b6bc154d060a8c184a459a5ffe6705148de GIT binary patch literal 2366 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 Sr#(dg0000q*aPPkP#( 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b662c4884171b440bd03ca6bb86a32e3b0d462aa GIT binary patch literal 2296 zcmVHkr+-zrsh z+f;FsL|JU(II$BOFG);Hhz;0az-AkaS%=xTmwWD;0h2_^ykTqwDbBu4RYSiofgMD}Te z)kmPAIWLWz`JAS@`zd&LPQX}l9aLCfNfo=dQU1nqiUmTerkV0eM~9k~$Pq=daGG*# zG~UrgH{Li!{yQ^dFq=3lMxhY05f4Ym#2KnR@C4O8x0mA4=&A&hJvylx&y7|K_5SZT z4Ze3)sADb2mDP@iB3g`mj3v)O#MCNM86e3@CO{Fa zZvUGfF@OsUAYWD(6x#a7=c!`PHlY-psd`^4mF;S#EB`#I>4yzqyyFTLH`i(_q3Dli z)x8sfFgxw!x!l7bPLnm?$8{OGx}%B4IC!JQ zLf(-{ia_A(RGGxHx-OP~i`5RzE>O>rW2BgkB60-U@~0PtBB5EY9J5ptc%|df7&+Iw zES90o|mA=zOfoq+z8HGBOZg7lM!@ivg;Cp^Zv+Zf2UrlQdcx7yzM8D3tUy z6hgzYyJY}ECH;RIjZAhM&0M=Fc52CU3V?Mi(%J*NDKIrlqn~sN5Q{S>1v{ysIQczy zC3w8HvYt$A3L04b@t86Lul*G<{7r7d$S=eDs{29cf zI}@l0<{T@Ho$I2-(K{k$P+}tkaF(y5JDt7c`K(9kMr6@1HDO)LPb5=j*2dHq*J-Ag zv&XGTEEuA)$C{<815l>I);&)sCIf}$7rC*!ES89tqM)Xn%6GR=m_Hvp)*%#0HG7+W z^Q81fSb13KP0o^mUn65SS3Xrdxt*d6#_X_3mSDenbz#tB1gTcq^Vv1>d8Wl)5p3lz z9wTc}zI;B{Kf(doxfcpj)xMufcB1~U=w_I!`NHsoG>8CH#lN$&ZeR@fZFt@D- zAD3y_ZIo|3e@7OW<1yy$#QAPAGS_2Vh4ZS{bMiWkU^@PI9p=*<6EWGSR9=s?=8=gMk=1zCIRDo01mrN#I#Nq=c@m0n`8{S zxN-DDF^KToBJ~`8U#s#)<2OLu8=smPoz$c&-R&L_J}0&pr>C!4~VW+5s8i2xt zi@3LJBD*_Z1gQbg&I{qf01#B~k>k>OTk@UaRt1|XMC`=pLybY(4jq7E2)=rMs|X$6 zryE;(<0-PhO>w*BZ18ylzeh9I_4lKaJwF=&03b*N+kEIb z7PeigcJF_V%W#x>G`ze|qhm0n%c0UPb_O0+;Pt7Z1W-Ba3Z>mZ(3qQxxM;zC!SCSA zg3Q>^1qvVd-}2{|Snw|Cm-_zOPQI}zuKYIn9)%JVi?OTeEqZCe73#tJ`QmDFK{7TM~;A>z!)myjI8c&sE1-2FDN{awpKNgg7m4FgHR8Zy!Xgy?zK93H_#^M!S+nU!Kb<3 z+A6jyPPB?vTzTQt$+Ukhn*y8x&&8{B^T%Co7?#(k;Yt$E#*4t6$rhzxlNaur$+i!MNCF>tAZ4TpmS{IgLVD!N8gL;DlZnOVolU66`W}zwD<;9)!HNCq<-i9t4T@ zJFlu#Xja@(r&)3M-Z?ruD3s?$&E0qyzCdTFvBeH(CnhDzL9B#ZAvTu!G6)U z%Lbo8$@<-d%(wPcTG|kkO3SFQoo~(0U26SN;bVcYyh+_;xgWPfva%PO5~v#IZZ;lU znq8Eo@9tCdnF{;+IHnM-yv^_cZV5iP8;|!B#F|Gy56{i`AOAt+heD^d594d}LnL(U Sr#(dg0000aQqi#m3O-Ayvic6!4m+0EU(pT{|$ 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 Rd%XYv002ovPDHLkV1mHvvpN6( literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8eac72bb5af2a133f701e33db8bd60ed3ca2a9 GIT binary patch literal 11577 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 Rd%XYv002ovPDHLkV1mHvvpN6( literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c98e5b99ec6074fae716e918078a47a614046dbe GIT binary patch literal 7573 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..afe2053388c2b363122add9c841dbb84b14c7cf0 GIT binary patch literal 18330 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 Ug0)i_c*+ffr>mdKI;Vst0BJ0)q5uE@ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..c98e5b99ec6074fae716e918078a47a614046dbe GIT binary patch literal 7573 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c383ddfe3ce2cbac181842ae28ce178505d72c81 GIT binary patch literal 10107 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e62aad53592b7176ac11b5cc99906e263323a36 GIT binary patch literal 30044 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..585c63a6eec194edb21b89716ff0a44d06cef739 GIT binary patch literal 793 zcmV+!1LpjRP)LNu@ z5otnHD49j5ZKNjlpr+>iw!7}k>`doByPCUOVwYL|W#*qb-~XNSedj0@&2LQn$4fEI zW#G{#^WRC5M1Ow?DACU}3`nvB#U90A`kV^W@25SP&WVgw@LNC$hT(@L%E|yE?O)(m zHN>VT6S$4;)d1V&G8D`dn-#MI!)U!$i|O7$IzxsdZZ-1HS0H9XJRg8CP?;HqEdgd( zVS#sS63taNIIy_t4E9_-$4PeHtA}KvP$M$-*9^rT)u{dYLk=vta+cE+_X!1=7;50nbhyNQ->{Odtr->fnU>tItFllsw^x(3{|(6J3y%F%t*odk~|Wp3z;VmA)zn} zjTfsCpO=p014YDe4ne7zpA_0DR6{z=9=D3yOsMS4*o>UYa(+8EHjU;>HCRCo$Ub!h zhOP(NlIyt8@}WL7G@aEarT{Wat2?YHgSsi7ml;7gb%r&!+a=}Kd&=G zJ#BK!jkq@N2zWK;&*IC>fsUw^9R9}J#91+!RQCywG5h5v$C=OO<+|*Z6V5A9){qa2HDPnT*7oLS(gEP?lr-{8JMCkPc X^UJ&XfJ0tf00000NkvXXu0mjf1XgZt literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..81186a89f1b6af469892eaacb7134ae135119f5a GIT binary patch literal 1737 zcmV;)1~&PLP)41{XBV2#rnA{(cjh5HArn0;Xyvn3IwSl@6BB zAv702$Ug@~Kq?6UTr5InjdW~r*x?(U#6Uw6CVK`5SP)5W7u+Qtq~>QLI6KFy5YX|3 zcrp0+W|~m5ThUX~fX=hE@Q#eX3^Rwf~m8tMgP7`30VHd01 zEX4YRNi(X&gx;&SDB=3VwK?0%kdl`{m7D)u9Ciayn$p7d)gt+EX z2-{9vMmX9ikeF3ouNO*k@F zVW94TR0U2YITdBFx{|5PSTY#?(p{*ebi0QHAn0A z-_IYLLDEXl7a*~>6EUhJ=?p4a9O{Yg0U2XSNkV%0I=MD{uN@tyuS+@#Q(E%ut%BXX z5`9-2@%%x%7|2Eoab%}S#{li;TXI{-r}ufPYLZkl zP}hV9M@~r|oSXJi$hRPU(>jtukAUW8g6nnB=R05}NpNCkuPlUNK^JowWXH`?x(Lqt z<$r2krs$A=J2KsP(b7$m2GIE3F=ARzA%W>xWNcoK!rc{^oAjdP*m=69OCh(aTzbR+ zl|DUb$7~iBL?|l^5F7J-9P5ma5H$q(A8)}}doQN?hln-p1}iZ3|=~K_^$bOpYz?&oktkH+Yay0s5qL9VRt*> zF7;3;Tq}-db0~}0RS1ghB#bFy8U07>d}ZL#2h1m24k zRZos0dVUACnkBdKxiA5pFMl#_3HDVI-kVXPy93PBtJg>c1`C97fJ?W#_0Q}xF8}?( f|M#f>>kR%0oYvoS6SgYz00000NkvXXu0mjfxHCtC literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x.png b/src-tauri/icons/ios/AppIcon-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..81186a89f1b6af469892eaacb7134ae135119f5a GIT binary patch literal 1737 zcmV;)1~&PLP)41{XBV2#rnA{(cjh5HArn0;Xyvn3IwSl@6BB zAv702$Ug@~Kq?6UTr5InjdW~r*x?(U#6Uw6CVK`5SP)5W7u+Qtq~>QLI6KFy5YX|3 zcrp0+W|~m5ThUX~fX=hE@Q#eX3^Rwf~m8tMgP7`30VHd01 zEX4YRNi(X&gx;&SDB=3VwK?0%kdl`{m7D)u9Ciayn$p7d)gt+EX z2-{9vMmX9ikeF3ouNO*k@F zVW94TR0U2YITdBFx{|5PSTY#?(p{*ebi0QHAn0A z-_IYLLDEXl7a*~>6EUhJ=?p4a9O{Yg0U2XSNkV%0I=MD{uN@tyuS+@#Q(E%ut%BXX z5`9-2@%%x%7|2Eoab%}S#{li;TXI{-r}ufPYLZkl zP}hV9M@~r|oSXJi$hRPU(>jtukAUW8g6nnB=R05}NpNCkuPlUNK^JowWXH`?x(Lqt z<$r2krs$A=J2KsP(b7$m2GIE3F=ARzA%W>xWNcoK!rc{^oAjdP*m=69OCh(aTzbR+ zl|DUb$7~iBL?|l^5F7J-9P5ma5H$q(A8)}}doQN?hln-p1}iZ3|=~K_^$bOpYz?&oktkH+Yay0s5qL9VRt*> zF7;3;Tq}-db0~}0RS1ghB#bFy8U07>d}ZL#2h1m24k zRZos0dVUACnkBdKxiA5pFMl#_3HDVI-kVXPy93PBtJg>c1`C97fJ?W#_0Q}xF8}?( f|M#f>>kR%0oYvoS6SgYz00000NkvXXu0mjfxHCtC literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-20x20@3x.png b/src-tauri/icons/ios/AppIcon-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..99a5a02af610278955a8e6c3725d54f1974477b5 GIT binary patch literal 3071 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 D>{4XT literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2564c8e9d9f90ced1bd812231b9856012f99e7bd GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2564c8e9d9f90ced1bd812231b9856012f99e7bd GIT binary patch literal 2894 zcmV-U3$gTxP)7UTldK!gbsu(?!(4lV;e9AOo#~y2~H}+6;~yBi1V8FyyU?zc}ZSUPPvSe zP{wxbgd^CpA%Hmo#9TrMiBl4~FKcz|y_5d>pOHY=#;aY~iPuvs?C#9&{@wlc*I)NP zICh>oWl|a(4x+TMlN@Gx*olayjiG4*-88W?ji76O1Kp`TOwhgjHvgq*{70K&L%&?> z#6V5g$#6MIH*_)5jK?V+iBdcon=+%nG}eVNy2Bu+*GthrkcQj3D9|@ZW-LaotPIMS zUO=9_Y>KhLu~1l?@qY(h80pOLQfP3PZoPMsI?mM7NP7=OgJFrX#twjyMN8&V`Nqd6 zd-e>9j092|S?xz39h)LkH8BE+ac20a<8&Q0>^{hm>>=Idu%K(G%i^X$HyR9yLu!7w zNeo8hDMiLkU5=V@^#fiHHNI6#O>Z9}-RU5APNo7qbiDg#6l6$m}wvS!80^_-3rdjEP*E8?>t*i_3RW7k>PYwWHd<4 zwWlcWmphc#5?sT?*C~gt8Drwf^3k1-&QsIh4w0J;Rz`-&#Zg`M((_cbxQfXpD8|@u zDtl%n#rd-r|M<2<)xnYOZ)#=&8zP6tC3&38p_`TiQt^oMVsu{AP-_>}@7l+(bP8ON zkIqaVt@!l|RIs3u0s}*A6xU4T9v%#>z<{4wx0<|#d6J)+L#MERgaZA3A|@?-cQR{p zPzoDT%}UPt*Y{JHNdydPM&puS%U;?+*<~}N#Gsz4@Za^@{2V#zVl;%(=Zz_4b=MyZ1%U43-s{(dyfctxLiJwa@plGsdW7cK4((*xvN|!uZVy^bmQSDN2@^K8WV^*X{5782o=~qj3J?KBi{{d_ zhihbUt%v_Ze#kqnuW*3DaGlFJD!pk;MRS-tnbsp8i!O#eP)ajbFA;SG@=C>_PZsq; zKt4BhUudNM#%5V0lno+Rv1K*s794N0jB|Lw!kVa|(shrphMi53U{GKUwgyv&!M4a* zCMe&ud@6ZjDLXA7!a;R7F-j&&b<+~y2|wU@_IAsmv(ibS=AncXFR!6|7UPIk^M_|B z$jS!VRSYQ36DJ5{IrSVquMkk%iHoY_fW$bz(W1GzKZWdrb3jZEZuLYRS-+j=dM5>4 zEC97~ps|JeuilpD5>1Xs*@l%;Dn>ebsr}?73yy36Gj7G^$H`leBSzyI)Y-;8AE+FJ zqu2qtRi!j*?Ze!j1w`Y5olpPvRmA~bMP@V!-8)I>asf9q>Ns^t=~9L(7FoEkk{3FQ zJs9UmU1f3^7Fmaym_2*C6+yt74iA-;0QPChgB!z^T;(p*1%((OoBm8JV#OEcnmUd zt(AvcejyWR*i2S2`85?{RAe;7a&SO&Dj*FJQ82$!qUp}fqW*^4bY<588K+2h!^UT_ zu&Dap(~^@&1xzHMrVMN9fZv(_!WJn-$p1w1G-2qPmOvO_rX^@l5daa&pI<@FY_G6m zJciL_R80k-bU3nx$H|fOi6}V#hdn|t$WtsDY_{O1TLjLA*G26N**nM1aUE9CMlP3c zT17dPGX=V&Cl1|&8*izd9JQf4-E4rNV8lO+k^v@FMCDOaKkhpLJ=DdzSN=|39-ly5 z;2Mc0nPLPYl|QdSu0u*(-Tl5WH5_0QRK=DjB-)dmAL)rXM(I%KSg068O6n;?Eu*+V z=0WnBqk<+Hi$qkx#{SzKOkQ7LQbP zry+wcuyETk9;Chbp(-O*US`fJ=G^_3Fs|&^P;y7YWF#XKhAEn248a^8HLLC9Z3Z;c zrVxf95y!qtWMq^bkSo{Qp9kzCEcM(x?(8^ONA<7mlStbw9JKMGUwl^x4U#Yw1MEqB zgWBdRT2eIzSuCvW_(d@mdni)p;?{PcB_I%Wc?6U)f{}NQo~OD${X^JW7@Qr0?_2cq zZ9GVuZjo7PracKmSF@m1ytJCKSk^()Lc(bb>C3!mFmee?JwP1g;_g8h77eGs5!c>2 zOgHx*SCKSSJ%!j<__MA2-E%2CWNk&HXi90!`^nDVBpg%JL0+)8D3?pdWm%9t(CR+h zAT<^d^WI+`{Hp|E*%19%%+lJcq+V>{q zGJCqv%57T1Uk)-sxrJa50Z2WtF6Ow1IwT-U2x_Unxl^u@9u=ES*jHhr7QFZz&3J6# zcqCJN+zVa1Onu&l(_Iio&XqEw0=kX6YgIjDqcB2&#vQ!bMxXG|%>Eh}?_en?dCTV` zLjjo`LH_0O*aQMX8970;YjpqX&!CU{&W&#}eTpGpa6?CoW#iD9WR*^%>+c+)-ntv( zB7&nP_12oS%RXonJK90X&C<2YY0kE%SOaHD-5i7K=WTL5U`?NT4!pSi{ewwoyIor$ z5ButGO2dur1`!h3W-10oU3IZI$e&k6vz}Z=xpPaU)Sx^~1zhieZc1*y!E_*`hSB-l zd>1ULl=~A#+Iv|@_(d|p5mHZQ779th0b#DO_H<#YZv#r%Jq-5!2GFrMFv0UI%(*90 zFivXfa8U9F2zVeAQ)Xz2e`Rd#49BRwl`z2}n*K$SE#-zz(V@|l-z4>wK=*(BNTYiJ s)8t5}`*pv8?$^uEH2Pl>>0#-A0ocLlxSl{$9RL6T07*qoM6N<$f^DjGssI20 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf82acd8127409ace4db087b185819edd1815a97 GIT binary patch literal 4672 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..75858e57d7ccb40e8c9ce5642999f301b0294726 GIT binary patch literal 4168 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 A?*IS* literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-512@2x.png b/src-tauri/icons/ios/AppIcon-512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa5e2c2f7e6be93106a4cc7648ffa3d3e889226 GIT binary patch literal 66358 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 z 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 A?*IS* literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-60x60@3x.png b/src-tauri/icons/ios/AppIcon-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ee44251b993fad0c19b6e5ad49810bf85df0ac79 GIT binary patch literal 9839 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 Cm+X-M literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..be6755a0c53f45d0022861ee2ef5143243f43439 GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-76x76@2x.png b/src-tauri/icons/ios/AppIcon-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b6603c5991b69b961d23901d6463dca21987a1 GIT binary patch literal 8076 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 PApt1MYsgi}ScLp9SE=%N literal 0 HcmV?d00001 From b758955d552cbec8cda8924b24d8dcf72ecb396d Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 22:01:26 +0800 Subject: [PATCH 48/62] test: uncomment --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2badf37b6..181d84bdf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,11 +12,11 @@ jobs: - name: Checkout Repository uses: actions/checkout@v3 - # - name: Build Docker Image - # run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer + - name: Build Docker Image + run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer - # - name: Run Docker Container - # run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + - name: Run Docker Container + run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer - name: Install Packages run: | From f84fbab93358c26ada8caf034eac295369dcc5ba Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Tue, 3 Oct 2023 22:08:29 +0800 Subject: [PATCH 49/62] test --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 181d84bdf..b606185db 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: - name: Run Tests run: | - RUSTFLAGS="-Awarnings" cargo test --manifest-path src-tauri/Cargo.toml + cargo test --manifest-path src-tauri/Cargo.toml - name: Stop Docker Container run: docker stop credential_issuer From 629b738fb172c48c56634e17a917a79cd7fa4652 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 10:35:29 +0800 Subject: [PATCH 50/62] test: use GHCR --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b606185db..064c05865 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v3 - name: Build Docker Image - run: docker build -t credential_issuer src-tauri/tests/common/credential_issuer + run: docker pull ghcr.io/impierce/credential_issuer:latest - name: Run Docker Container run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer From ea265000faca3dcbc768df7adc1c227f8fdccd51 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 11:19:43 +0800 Subject: [PATCH 51/62] test --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 064c05865..f4dd77395 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,9 @@ jobs: uses: actions/checkout@v3 - name: Build Docker Image - run: docker pull ghcr.io/impierce/credential_issuer:latest + run: | + echo "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" | docker login ghcr.io -u nanderstabel --password-stdin + docker pull ghcr.io/impierce/credential_issuer:latest - name: Run Docker Container run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer From 3f32b61a5b86aa069f64dacf4ad8bc034b313899 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 11:34:38 +0800 Subject: [PATCH 52/62] test --- .github/workflows/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f4dd77395..a1f8cb1b8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,6 @@ jobs: - name: Build Docker Image run: | - echo "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" | docker login ghcr.io -u nanderstabel --password-stdin docker pull ghcr.io/impierce/credential_issuer:latest - name: Run Docker Container From 28c0d4cef1ef12dcde75683f92c3f3a43845cc1b Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 11:42:30 +0800 Subject: [PATCH 53/62] test: use GITHUB_TOKEN --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a1f8cb1b8..a590f2232 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,10 @@ jobs: - name: Checkout Repository uses: actions/checkout@v3 - - name: Build Docker Image + - name: Login to GitHub Package Registry + run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.repository }} --password-stdin + + - name: Pull Docker Image run: | docker pull ghcr.io/impierce/credential_issuer:latest From 8d0908b8ad8d4aa49b526968fb60643f92ceb82b Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 11:44:38 +0800 Subject: [PATCH 54/62] test --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a590f2232..ae4e739b2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: docker pull ghcr.io/impierce/credential_issuer:latest - name: Run Docker Container - run: docker run -d --name credential_issuer -p 8000:8000 credential_issuer + run: docker run -d --name ghcr.io/impierce/credential_issuer:latest -p 8000:8000 credential_issuer - name: Install Packages run: | From 32181c10c9040a8dcf0245b2de799f726fb2d01a Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 11:51:54 +0800 Subject: [PATCH 55/62] test: switch --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ae4e739b2..f0d242fd6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: docker pull ghcr.io/impierce/credential_issuer:latest - name: Run Docker Container - run: docker run -d --name ghcr.io/impierce/credential_issuer:latest -p 8000:8000 credential_issuer + run: docker run -d --name credential_issuer -p 8000:8000 ghcr.io/impierce/credential_issuer:latest - name: Install Packages run: | From e4f5114842bb6216e83953df19cca482234483af Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 14:30:13 +0800 Subject: [PATCH 56/62] test --- src-tauri/icons/128x128.png | Bin 6803 -> 0 bytes src-tauri/icons/128x128@2x.png | Bin 14036 -> 0 bytes src-tauri/icons/32x32.png | Bin 1345 -> 0 bytes src-tauri/icons/Square107x107Logo.png | Bin 5687 -> 0 bytes src-tauri/icons/Square142x142Logo.png | Bin 7600 -> 0 bytes src-tauri/icons/Square150x150Logo.png | Bin 8049 -> 0 bytes src-tauri/icons/Square284x284Logo.png | Bin 16045 -> 0 bytes src-tauri/icons/Square30x30Logo.png | Bin 1248 -> 0 bytes src-tauri/icons/Square310x310Logo.png | Bin 17398 -> 0 bytes src-tauri/icons/Square44x44Logo.png | Bin 2089 -> 0 bytes src-tauri/icons/Square71x71Logo.png | Bin 3658 -> 0 bytes src-tauri/icons/Square89x89Logo.png | Bin 4670 -> 0 bytes src-tauri/icons/StoreLogo.png | Bin 2366 -> 0 bytes .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 2296 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 8669 -> 0 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 2296 -> 0 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 2234 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 5813 -> 0 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 2234 -> 0 bytes .../icons/android/mipmap-xhdpi/ic_launcher.png | Bin 5103 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 11577 -> 0 bytes .../android/mipmap-xhdpi/ic_launcher_round.png | Bin 5103 -> 0 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 7573 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 18330 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 7573 -> 0 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 10107 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 24655 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 10107 -> 0 bytes src-tauri/icons/icon.icns | Bin 169225 -> 0 bytes src-tauri/icons/icon.ico | Bin 24572 -> 0 bytes src-tauri/icons/icon.png | Bin 30044 -> 0 bytes src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 793 -> 0 bytes src-tauri/icons/ios/AppIcon-20x20@2x-1.png | Bin 1737 -> 0 bytes src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 1737 -> 0 bytes src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 3071 -> 0 bytes src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 1241 -> 0 bytes src-tauri/icons/ios/AppIcon-29x29@2x-1.png | Bin 2894 -> 0 bytes src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 2894 -> 0 bytes src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 4672 -> 0 bytes src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 1737 -> 0 bytes src-tauri/icons/ios/AppIcon-40x40@2x-1.png | Bin 4168 -> 0 bytes src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 4168 -> 0 bytes src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 6334 -> 0 bytes src-tauri/icons/ios/AppIcon-512@2x.png | Bin 66358 -> 0 bytes src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 6334 -> 0 bytes src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 9839 -> 0 bytes src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 4077 -> 0 bytes src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 8076 -> 0 bytes src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png | Bin 8809 -> 0 bytes src-tauri/tauri.conf.json | 7 ------- 50 files changed, 7 deletions(-) delete mode 100644 src-tauri/icons/128x128.png delete mode 100644 src-tauri/icons/128x128@2x.png delete mode 100644 src-tauri/icons/32x32.png delete mode 100644 src-tauri/icons/Square107x107Logo.png delete mode 100644 src-tauri/icons/Square142x142Logo.png delete mode 100644 src-tauri/icons/Square150x150Logo.png delete mode 100644 src-tauri/icons/Square284x284Logo.png delete mode 100644 src-tauri/icons/Square30x30Logo.png delete mode 100644 src-tauri/icons/Square310x310Logo.png delete mode 100644 src-tauri/icons/Square44x44Logo.png delete mode 100644 src-tauri/icons/Square71x71Logo.png delete mode 100644 src-tauri/icons/Square89x89Logo.png delete mode 100644 src-tauri/icons/StoreLogo.png delete mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher.png delete mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png delete mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png delete mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher.png delete mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png delete mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png delete mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png delete mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png delete mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png delete mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png delete mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 src-tauri/icons/icon.icns delete mode 100644 src-tauri/icons/icon.ico delete mode 100644 src-tauri/icons/icon.png delete mode 100644 src-tauri/icons/ios/AppIcon-20x20@1x.png delete mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x-1.png delete mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x.png delete mode 100644 src-tauri/icons/ios/AppIcon-20x20@3x.png delete mode 100644 src-tauri/icons/ios/AppIcon-29x29@1x.png delete mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x-1.png delete mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x.png delete mode 100644 src-tauri/icons/ios/AppIcon-29x29@3x.png delete mode 100644 src-tauri/icons/ios/AppIcon-40x40@1x.png delete mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x-1.png delete mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x.png delete mode 100644 src-tauri/icons/ios/AppIcon-40x40@3x.png delete mode 100644 src-tauri/icons/ios/AppIcon-512@2x.png delete mode 100644 src-tauri/icons/ios/AppIcon-60x60@2x.png delete mode 100644 src-tauri/icons/ios/AppIcon-60x60@3x.png delete mode 100644 src-tauri/icons/ios/AppIcon-76x76@1x.png delete mode 100644 src-tauri/icons/ios/AppIcon-76x76@2x.png delete mode 100644 src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png deleted file mode 100644 index 41ca1e29945826080bb87bc37e099487779d3000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6803 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 B5~2VA diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png deleted file mode 100644 index 17535b7f613029f902feac54bdda74aa76d55ad7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14036 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 diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png deleted file mode 100644 index d19bf54b7255a4c9523c1d8537df49d239a48bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7600 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 St9n=f0000 diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index 6677d1b004e759ce6421ad941f031ba1a4f4417a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8049 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 diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png deleted file mode 100644 index b6970de105e3b0fdaa769db4b90245fc83ff147a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16045 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 diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index 5d97da41705d6eaea03e11d23fa2df23534b3a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmV<61Rwi}P)rY!{82_CMEp2ImQZ|MRgbu<$7|vzJxPUI|LL|#FV)O%xCPri8AK+KN`Ca|CESV-6 zw?y640GrXtGKX^65CU{CV9+rN0}8bCc23XndEYY7tk+%AL*KwTyyyKr&+qv?m&zTz zy*jdR$-15uT*$~8@S|R2FlUR|EwClfM|iqa>zW2Zk|3Lm5JZt1p+*#FwD^5`9_tx{ z=9o=THiKB`n?PV`6$Xn5MRip$@3un?gt+%l)MH)KVaPMVGcXRLIA1a7yshG2V)y9@PlcjJYfQ7(V?YKipnZ!9DfQFX8_1Bt8EDCPzLT z4b@~&C@Jk}shWW@dKZUW7&&thx*CPEt(iQ01F|`n?-@CB0aHKqVE)<=iW_Tq+>@Ox z>RakexQJdsmJsxAVD#+IPy#_zy#68@KRn6*A6oPAJ;jaH+`|ybPo< zjRs6z`~&NE?!i&#MD07r;GLL-WRM|BB9BLS-Omk>XfI2vRN6`IF;Og;3|Mj9fxBmr z=*~smyKiEZK(BuCImW-~<|1NyS7{G3(ptWoGo@)q#RfN4hl(oD7 zTlpTizU@XdqH@cb%6;xd-2Z0+#{4`up4*3LII^S61ZRs$DW(FkJTi&J8@FI8E<{cH zQOtDx3GZz;?6nneo@n9L&tB@KeD;!>_o1++oQjLMU05=wdJBB+_W>#v0qi|`2qMLF zrt3P7V`b~hlsW}i9302pYd2xAnc+O%jL_-^W-tE*O;uxOBo>#BhZe<$3CB0*!Sd)7 zOhpB#cd=SM4sxkTfZ@BrzIeLDX&dA}$ z$HR#0u}10?b7TUYMwmP(s;h*h)Pc3>d45n)y_3^5eEI^`=~;eNDfV}?;%?6kp2wCF z2TBgtZ-d6ekmFV=wmBN*9likcR^wwIkvWkjlGA zSPH7zj_`O#Ha2;@Gpbw~RVRfGW2upAxACU1_mzWKn{tzaCwV8dRhFXuy*5}YO3?S& zS@`cQ^FqRa`MaW!P+)PJ1g}=)AuEThJO)?R`Mqe&LDR=?QSq3Arl_z}2#mHois^Y$ z{}e2H96ZlKdo@)_+MmUQoq^u5*FFnTmf^lKz&nw_YNkphVOLWPo;lLQtJct$=do~o zn5(+s{o@p0JEEaT%Ar8of2!lthn~_)%p+@AF*arw;C0Pnb!>+CCs9~(sa}W3!`m4D zx)V!-t{CVCCs5SrB#MIxOYp#DYZ4 zz{l@xr0BX+ttg~|vJIL>i{Al`M>tD#0%5dy`p05o$1T>aTsd(Aa2umk{8(`d?NEAQi zsUXJECd1h+{h3SHDt6@ce@EH}9W2x9(dKFak9}qDn?$z0JN*lWuIo*^d_(B~0000< KMNUMnLSTZ~fMtsS diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index be2a5a3a0152e77de11c132668c0a71f5787ac68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17398 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 diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png deleted file mode 100644 index 1e62aad53592b7176ac11b5cc99906e263323a36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30044 zcmce-WmH^G&^|cG4@iQB;I07zf#5zQI0OhD2$tXwJh%)o+}$U^o!~A>a19iEWKJ9%71VW^$qM!qTV1qxgAq05f zaN#qBgg`vmR281<`OF`-<7b)7dT#lamPu|$jYcc6ZTCaAvhoze)f%kk&i+d6+WLFL z=xn{)EMsfwg=+-4!&QfA*nfV>@^Jo!Be}h3TH<&tan=6fGp@>)%F;K8j?N`)f=^v# zD6`JQ&h?wE1}B!gj|bB6aQk+!$ZV1Nti1WWbl7!s-4cY!kcsH!dt=%=UDSHZYVEWhHn4c znAXR8RRK53kEdc2H<;j4oua!1+%UP0>#LSUXEhz5LQ3STwEf-_nP_Pm`=qQKwE-iV znW_RE9rqgKx#`);%l|&D0cNg7#CVX^h&zM2re7m~6Ls{-Gm2gxu|Mm^jJweu?tHHv zm8Eskg?b?-e6AqAp-Md``0YVXC!ckZV+3>7AMH6l+NWcQZXCS)q06HA(H(E%tcE); zKUi?+K6hE$7eQMJ9Y5_Hae~{GQ%~GE76QBqC@~E-nSEaEM z-5?K?7oM0`l(#juFRnI?0yesSC|t2vZ}bG073VPE#{9kM)KXLBY-~8$1~{I!1S6Y9 z1x{9unc&QDcY)rim2r=z=UI58ls35c%Shq8 zTTHf$W8Z}})HD=i8*nydh(&A)Hx){eWIbOM{H%|+YQFjKdCMT_qv5i`+#W%Q_HW4YSy9&j5+cr&dN8V@U6w^B9o=_ZH(AT z)cfL6^cT7Sq2?047FU)POv__h8yAr}rE44%^OT&+Hn_@=mK+PR zy@o_`g8F0^Hke-$UDTP>QYXV17!T}=k)Ns{1nm4{sb9vN%Ng z0nx&?6ytHX|E!KHZT#AIU9Ggkv*IP0ic%L<9H$Bx4?x%b5Vy5=j12la1Q?deEV=5p z4-b*CFEMUQY^y0+kZx@j`Ox zxWVQM6)QHeD+Vp74D93hW&2g8M(1Bl=n#%-3Y)-Ma#YuWe`V3$!i;KfH&nF5`{6fU zNY=?A1XRWK*J#Puooc`3{y9wtpLJb_l@{}YR-AW#EUx)K9THrBP-3pCOxTk3l1i>H z<)y`5R0ykqs9d|?fC}hll8mm}yG`HSprgs_^=^DM>A%n~C0!WAr!jQ`zK=CTwpu8c z^0czanPvpoGo4`Sk|K&Dg4{!2L+^p#Zu;aneKci7v%6l2N#u9Qk5ADYz;+ddgaBvb zGT7`&P!VV-WdOptw8c95<^8|+!yxR79wc{*?utR`)=b#f<)vy$cYd62WO|f0mW_UQ zeYzB&-~WrvfcgSi9Du%Wd=ZV}u3%QC$4SDK%l&9A2kFN0ni^C0&Ja7wC+BZdUjF!Y zF6Ob&?Q;dRkmqPX??5`uRD&;+NVIMu;aFOspp0@S0rEKkqC%>Nx2oGs2uV{@8QZJ< z&UAcKl-C)QDd|n05C)gRyuD__SH4{&?7y-&T5r@v{}$U9>HEm6hRw_(2S!l&x4*}T z9JnQDrmE4T48BN>j2#+MTjnpt(6j9^qtr*SDxCDNOVi!j*T{Bd>%|0hTvu$lHqcTb zIB(Z~KXLJ0Sc)%N{?_Z=06JWq$vGN<+wnG%6rFc!nw<4cb6Vu>pX<(6V9^tiXIuiZ z;T;gt+11_uy4ZQO;g76$l#N^M`d}!D?4WgB?Nbl`xU<+fC++P~%`Q3l2Zz@~@S*lK zvX_e_q+=ka=pxM@T2ZX2uk@TWo4+)Nz4$!1`eW@L$3#tzPdjw*Z|(TDSyVRc=7Aet zLhUMU@b!OSOu%E->EQXLrDKoD>-3AfMDIVCaOKRrwXhg&)_UHq`>`k03yqkpu~79B zbd8mx2jNsOb>2SOeuFOa+Y$_LbnrQ}j6d~!KGipjvOYAmxVI*=7leS@z2Jm&bKF@u zOM-y`0<%`=HIJc!em@HA^BjZ?`qH8P?R8X>$0d|!L6{D2Ld_@RT43ef1ffLTWqM6OzZpF^hPT z7n6qhr?H)JvN4nXgVtH)ANHi&Lt<{vh&KBRx-g%cAfTGGKk5E%YYOcozP+}Vy!nSe zanLt^MtvH2?mr}n#gjLAHvW{%N$sNrc^J+r1VZ}XhxXSGZd}`&tk*|R0-(QoaGU$~ zWNYNTZ|8`n{5OPs1;-x|4C8?llW|Imimnxy!mgg|{q=oK2U7^U=aq*z!t1CCg`Kv% zC)t=FrkA$hxl;;r!|Ar>sVVII5rV-v_*82L#lY(A7ZK%|b9;ztsU|0e2s{GMwgSN} zsUcpMl=zEQ3^G;Nb&ogYMtrTq11e{LCsHP;HQPa6${QD>0};3b6bg`qYb|2J$Bn=4r8Ct35qM%c_VpygQL#T~hr5eq#liSATGb7q}VWy0A_58quR zf8Uz&($t{YoHf)o3ly<7OnK$^Hb)#=b%62NwK4Lwru{s;pcebq)~z8pb?;ia*B*oh zcyz|afI_X6mX9B+sx{uCeF^fa&q#>DoFA@@y8Nu?fs!1|Hf6C5<%I}ffm>z5@xEL9 zo%QFYZTzu6t0gJjdzXz-BFaY}2i%?=fapZ8#vLn}7p`nX!SQfSC;?;G84Dvs-lk%< z%LL^z1}UwQ9{nj7iR3DdV&_-hlky6Y^rA1s@+{Qd8?)?VU7lgDC4WRsSJX@N#(onX zpudj|N{n|GY092=njH`h(4kh`+GR2GlFFbGUC zV09?L-4mJ!e;kl7QH83~D?{Ghn8@DjJ_Zk06L!66EBzqH(*txHT{Tn5m zUN(y*19cbxBU?bVsd|Z903lUhRPQ{`2L4^^LRJOI>cy;2=*-Y*njN>_-+zjfO!i>14i=>e9vA+)sJ6mMcknO!IAg z=BbSJs;1z~z148Y${((REo-ej8ru!`dRF24m{VbV4IL2mh=Z93f?RYe9R%oF1dgkuC5xyq(gjx+cJjZ z$yP~Jq}bl(Bgp&JPuQ;EJI+UXv`)w00|Dfxh!;gxN-~VI?IC$V6pCZMC!8%uz->URT(gU2o?cnH@7m5k5G2#9u)oCBiAAexRaxK^W0QCWRx| z4v{1Lp9#CP>BQ0*{4Y)S<~@X;>SNen+!i=?Oh)P`deD%4=mbj7l2g_n+LUJ(EJ$<)bS?~%GdA;thq z^cPho@1qg1i!aK6_1S^!6xL|>!kEjEYnmVA0+KAbN^Pyd>db{n*gj>f$2in>;!m)Z zPQ_KR|1sSOof0R*#*~W#4NC8A#aH+wY9@&(AZ8>Slm;e_WnM&fxWT7>-oUdtW!dsF z_m)TeZ@nIJGk$hvk+T0hh?RE#<+wyTGbHye2+HDkTYF5doNh1Y<$NxRdX(Hutpi-% zaFm*$nc(^Jt(D0I61gkKT_HlUB+HJk+TK@EF0T=WVQI$67z}bij`~#GRSfXb{>zbs z6tZZ*jA*7>?3qM5S~)5WQ1jUs?!mW4DBG1nBS*@3m;TDDz8>YUDbr-H&-!-80i*p%%6*R^!T<}_hG+Q{0zCHGR>@p<6Jo4Z{=%V9a}7V4qN z^KW~ZV3|BFBa=fT!DbOk6$6H_~%I$J-#qE9CT0p{BM)thojls-NsQx3~}aZ=cmNPbW|IX zr(&OUA4MK zTeB*9@wNqO`=lv8y2>8`!{AvbQ>b1Ltiww1i)&@p=PjC-UeF0d`JENo~&ZwOW(2}map<3 zPp-k+d02USz0s`~X4s-;L%@c2vFjRr{1p)$U=JrU`Q=s$tP=)5>nk{_g8AIu=HM=> zll~{|GZE||o{BAt8eoh^X@rMPbt2ES{Hz;gst^dGSYxS;({_K3A6&1DpT~%JQK5u3 z1i!!nUicRx?~h3E#{K!`LqLzydF?ywQkNGR1MU2ofE4LmUlEhkJZJ3uT*9#!ivbhr$ZTAK69e?9^#8by0m|sN?&Gr_e%+|K6w4|sAbF1`tz9jdoX=2 z6UU}Tw9d=xo41{_uxTK<-yK6j>Qv%qtKfDs0jwo!~6+z!B`!45;h7m zz8_uZH93$fn(&x!dS|M$og+pclLCydBZXdmeJ5L+BS-Q@0azmnsFpSeBDDU+_RU}0 zHTL-a zs7iMoD-vh>xahQ(U zfj{IuU^&Q?WIO#I2}FUc%}DMSYYA)@d0ddl@0=tUJYE7TJAz)FF4)b?_iQlHgbuDm zG1VYGM-D%0VA*dmNjrp$|K~y#*W~JJSm3KA4dkd)WVG!ld*8*MU$lu|UC3mB`^|yp(&p-tMBP9F7uJ^BB$*y#h!TF|WnV!_@9)``yUX8frqM zaJIbAs<++t*Pp14NB{t-mNjiBog%=_SVa{09 zz}|vhvGa^^3?W7~-h;XD-ZOPo!_UEm!@kxDa{RERvmo_u|h}VISDv8|i zn29a(>kR5ECIvch-EZT1p$Jx|0NV#dA`QFMP;#pBzn(D93iS@uk0WgYJZ+qqnbR^t zh}PGg;W!$N;9K6biC9P$4rmXg{p!LpUqeRgwAWkT^pFXNBE~fAc>bB6Ot*4*do{;k zw69{fh`yFs~|D-D`D zIa1G)EiAWKVT^U5F6vT#s{N{|S_pV}qlM%uYfGaH zT9>6!l%IhjuYy~F$A0+b<&jwX!PB1ko7>bCI`z_xDzJr!D8?`)OV3gB?Q^db9pvfJ;yk%=SlAj@9wuOA?yq|+lDg# z`rv$QQpAN#=-4$if6iE5`A!GCe2FeI7IHxh!42gRBrAmLOs)7zHHzz|=tpU3QGv%_ z)sNXv@{3Ap^g|E_zi=SqI4&%tov-;XLJXk>O%-Cw*QJY zv_tqW4W0dAE;o)6!$#xLc%EI-L!7Rvtq2eGcVC$+5b1{mrb z2a&Q$-l0rVLLv)Zj~+{Y+Tw%VhFLn+n@9!-c@4(_yG_!gV#lBD*yDXTRpi|iHM?W- zmJID5whl*fF}As?CNFaggk!c8)MrX_!F`b3{x9eu*uhTG|oFH@zIl zP(ZcO-%lrXKgLB;4^MO;QQ8Q>!n%pO z7j&6cDN+NL%cbV6`<)igE7Z^{r14Xoqo4A1hk8AXNMrk%@C&%z7l3ne2S1nAsg`EL zPuc86vuQWHA)1Zpm!bc${Ml4eQFeEm3*|#+n?fL6cHk)mL0M7Ip-*PL5T7iHT60+7$GFD4_;>j++TWvF$bs1?YpAaaXcqLD?G|o_nvYpPK<+IPqoS|B*eXK{#?7(bQ15jX|a5{efL0 z`$rq*9&YG`=V&ai(!laob2VjW#Ce)6mN?G0oVD^AR!3}z41^i!eI+k!30}M4-*O`Vve*)~g)>jbrD$@dju2B2K!;KEFfK^M)em z3}5Z;eI<)WCHHnl2|J)a@FN%;lZ2Y}emg0*l}j8m(fkji+<=Bb$;mjzNmLpi-6wwq z4W4Fg2h$}lY6r>5p#99 z(ivAfPLD4BvyrW!n{fZN-u_t-YpwZLfpQD9i;w2MLH7b`Y;5wV6A&R1%}Rdwz}B!X zF3w0fpr=o?phzhsbKbtqRxbA_O$<`1{288Fe#Sa?e_#|M4IzC13Rqih&?MS+89rPW zx!n2oM>UC0pdRo?L+1_r?8f%?>(iJxL1fX&wH_gj6prEhe)i2O#fStUof1?R_x!10 zXTCf%Fqsn>lK&(-!Q|dVS|L3oIeZO+FWO>5ZM-Q^T02t0Czi)TCQeDhC}Y9%wjF5i z%MTw>XotOtDzbB9&|hxL2;f0zmH!gU+y17`oOS7fwmOcoe%^gj3^b0_`>tzBIObRs zcLZjOV`CwFty%=QHQDs6Zv*!*Cv(lw<52_yJpUHwD1>`P)3ovNvTy|BHZA78~Kt_K?z&mYA_z~v1MYo9#^m1 zcgZOXqL4Wk>2LFs=A*4CRQ4mu(TT|)3v*LWy@c1r^!okg zidm$ib~A!*ne~2WzrJuz3S7gJWSQL)2ouJfVrODl$k5?~7dS=vpC#S5a&Sa3t(u~` zbM-@31<#Z#4tBymRIDMf{(aN%DY<&}nM){Rt*OcCfFEX-d{9S#4Csdhr-9{t0b;Tr z+P$ICP$?|K=@Uwp4~Hx2^;ahR4$jYAtZ0GP{oBKInRex6=GpS@Q==?aBKO^qaOLeL z`Yvm%rzEcF!9)L@p$MHGNvC3tzkwlC(*Nx*A*&H!d#oZ}Np2YU{2Gi;)L%vYN)j%& zFFJS7bfTBGPcWM^`maU~_xquYAFZJi*F}ct9JG)3a4*v#1CBH+^#y)D$y*c*9WG4h z{>AA5A{fRIa?=laT{Y(M)v=SPvJ5_SU??RH_x|B(O}`tvs{Fx4ghSUQ^S z7T#0%5&Cg-IHt!5<)uXXd?`5ryi z2v{Q7?qICJ`pTwhnwMG=|3{EwYzUc!J{wg{ocQmGKg%w+I)<^No=*3L&a8G_{<5SH zA>`BFJDq%HM4fZzot0E)k4wk&#i*ixH}3Sq3i)+)W*IXMm?+2L>^Ro3H?+<1d=gKx zw_u2;&1UOf_li*y&F5jBrZ&>*w+BDg^#nRO1vT;@CY-L2U^2ULxUjvbrI9gPAI4|; z_&PsqV`KDbqHJ(_Q272l?0&Ydf32A*T~BYPx-7oq@$(xbgmEhZP&OwW&3aWvt01R0}uOAd9i`?v_}K;OMt0=OuV?3kB~UG@T4XUEDGwy0NMDV;y~NiCiRvm655x*pk0SZYylfVXfW=X|s0`?He}N@2TnonuhG! zVL`rz<>pV3*YOUwjw?a0Bxil`KgDl5qK4&KfV0ggg9p?wz(&~v}#jg~#8b`e28U}m_*+b)UL z?B;dLfkx6ovd60s$0N(e-Em1A#o+5HFjuLi6()LCGjj_YIP*207G!DQ1*Ip3gwb54 zNX7h}Z)9MPt+s@b>$%Bq&@LZ%*ai4Mh;HztBX176q!&Ne4nhm^n28!H19-_?A2_+w zmGm}NJa+VaKE~6GH9NcV>1CxSmGmV12+ z4c(IV$t(3nm3v0WdBU%A{By2N4J)U$I zWN@HmyG2(9wC5Jw9PI5O^pLqveK(#INkK?YrFjVp})OQ z=gTLpHqVkPO)N~-S1vp@bSCT^8{Hu~gzouP?>`OB@Kv+IrqCaaK-8@L)$!ZyFXtOq zvFL`Yh&3U;Gm5-~_|jb9O@8zH!h($gOBueeA+!r6H=ncpwpN;Yq1hdp1Eb%N$}aJ6 zx@N>!M9o-Gn{q1WOWzc$ODJmPOR=i26ej@|sywzuBoW7g+9~3yQSZ-D3(=01iKucx(=1Hr z1-}3VsArxp9I#Bu{2TtcB!;U=(ro{#Seunbvy`PDcwH|$nSr1!S#`HvxzOhwe`_;GY+ zCvK{8*p4{TciRaKfwb0*d7BC&UTir*8LZ&%ptX@H^0%lKbmZ9<`>)(%%Y%h;=}(P~ z!`P#07^*Mn9e$)R()>lZJYkwi(H>!#rEc82YOB>7(*;Q_Vb{{0hmQsO;_n;LB%ST2 z4E|%9!h9S6=Zx=BtEgQiDoWDuXPJK|)^-@X4=myfOlorg47!8V!fj{q)KA!)K2-#8 zMZ@e{PRF{3>e%x$Mc)fmc2ri4JZS;u^b2^%SLLsu0<@q;-|c7@3-8IgCiv-JWWN6s zVerv$`6F||rnUOK)I;OLw{z8)wZ;X{?(48^^n#a^gX;zS36nJC*{MDvAl zs&7Kc*_Qr{2k|<|U70NPSQtOUD8!LJO{EO_6CZ3>7SMBreUqvW6uffTYgyq=KC5bVktuL( z^s=z&ajrYnD)>2B@viQJ>C&Ix&N=Wb&DQsdV&V&!C1$4iTghK0#?5T+q`zf?`Qj|k%Hz5W`762+xZ-l=MiDk>1d)o;GasO zVgFthINaL>TeZMt>6eu4rA*s6m_S^~z=hE$JM3GMPhBjF3Qc~W**y6R&zvP2J9*&W zvJAUgUboppznLVd1;GbTA|1d>#=WW15LBZq#iJyW;IIZSFV)GYcYc-&BQ;!A{ZB}( zN!P#cEv@r=Dm1J%7iN9U$ys7`BMovdVyp?BSxVc`#x*cm&=#?j?eP3K`3PWa_Us*E zif>v5bHGv&ga&zh4Sg_=K1yq3R9G|;yXz|$|7{*U3*te#+*pKitZxUKCieWum{DM1MskV3)okhJf0Q^%*u%A^!IuRdd#+U~-Pcd(zb-)X&$J z+S){X5D^`vo2`c4)*Ayoc$2bS^gw2I3RvLV7^Cd%F2w9`l<$tdoN^jlz?8Rx_OKlP=DMubAz!_{1Cc8nYaZOl&Lv z!O^_jwue*dO!46;wqIkqM)6Y^bfQ^@-S4LlgVle3&ZlUiy(l&Sk%|=ih_RpEQ27p= z1Lml=2Ne-}VuFHKZ*-z>8kq{0e-}+}i@7Yo&8~$w5Duf7D%+jmxzIgYU3WpNE%;Yh zlgZosfEvG?(qy*e46*Yua>zJt<&!3!?k*&bBvOp`VM1zs1gD3?5ZEN=P6o+v8)tGX z#6(445(yuns}0eVRT(aqrRMgx>M4rQXcw31vvJOtS7+yXx=Ivc<*&xb^#Hkm&qY)w z&-{*{$$lgvf4agcmnxh<(873C){K%gRVP+bI&1Wtl%;h5J@nOEq)aJngEG*mFs0OY zsj5$ds476AW9=E}8!EQ#FWYBz-3{=-Nf*IREE9>RsnoZiQSPVKKkrqft=9___0}wy zv4h(Wm=9TK5XZb4LP=d{VofSdFG?b-K!R>_TA#XoFO>q2^k&K%We6o&%3e*7r7~mg zL6KvJ*yuo-=udDzKlx=gF#*dBN5*8ac(=Ueev>-GS=^2?ej@bjd>jhHG-zFo+bLIx zLwZG^U}j=urclrGj$&G#TxxnQ-o3RTW%*p1%?-i>%9fs9}f<(vE_DTTZW$j(6(ZJDsJ%W;38@h(TC{Ty`^-~JqcGGhv8n;!BWTa z_WgN+3KWs5!ACkKqpKC+Im_(Iocv!L9>urFP1ZkF2c_nS1Hv4K0vmlLkZOEu3Sw3S zc1a7q^N*mPP3pL-5htr}@lvA&y~Y5FKJK8N)kKr%iq+kU;A3d24*7wbI3kx8M2w*wW}6Vmf!OO-ZY%Msu~9`6-3jG!uZR(_x_K0?5J zzkedHn67-tHzbL?XC$%69O&+EfnED%TI z@BITSA*&Pd<6m^5Qb%tRSRAtls+5SG4M3yz$t#nEk4QjL} zQ>+#>(0`68mv^T=1*Mqu6e4kw6h(q&?1IL}zmN z4&yy(ZPA-9n^l;$Fr9feI1IxBy@v{e)JWD%BeC8Da7XtzR_1ZQ->a*8A4+hZ&EI~h z?x$RtoR_L9sQW~puClrks*3Aczj_ZlHA;qfy1~BFE&JH(Vr-mW{Y;4ysrB6eG3R?b z)=yDCXffiusuWHctyg0CSS>r#+X8GpsvB=29JGadFrqBSnE;=QUX1vl?J1{$f))N# zjwhx^9LLIk!KTf;EfTM=+RUu@r|H-i_`zjZ#E>TT_o_x_lah;zEZl0kX0l!t4HnP& zDEQLJ)0<(jIjGc~l{(M9nZHc1OQTudbl>UUG*Z2BQz$L&b+Db&c1q}C&Ndrm@>+I| zBQq)Y;>z7JAIWIR2A%rLVr#uGcJhw>j`Y6ip{qNu%E<+pnGICDy3P&>#PB|NXzg8f z6a1dLUAUBH1t1vq*@ejBcg)+Pq#BqK9tPXbk!Zg)h__t&EVeiD0dF2#s(z{cO1vKI zgVJIBk@;4M(W5a2Q|4@>c;iu4|LNVMLaz7QVA>X$A@-i!Eq}LwO!i5t`-|p-UjN6J zm{p^BfPXB~C*cC$XHhBVu>jo#B$&TP6Gj52&zSY-7RLqBIdcXyic71#T*7)N^TsA% zok@Km>m%6RABwag!=)W-+V*PO$!1iTrSfi3Qr-;76jRA!6}j{Nm3d%l1#ZL; zw${CCciy+@mwfmaFKF`2o*JKbA}>8>UgY%KVZ4u}o`X$rR_k!>@y=3`+UmIK&Trq{ zJ0C6;mbP5>@%%az^*)HD<4(pA*#4QxT_Iqo#FOWib7?T}G?`&{(N`e|qZl3UbqGI} zn!G+T*d-A^zohgP?eVp+{rSUluuB?5gZ#ZmLC1TkR7nfp=Dhva&CN^;4A7BXL0$`7 zV3(gGdM-o}*b_2bZd3D`I&_`I{$IIJwAz_~ueLuW> zempeR>Rn5ud6>+@9wJxg#EccIrHa^^GPRNqh)-b(0J6$W^>C%m$xjlsrdtqOuTz_I z_Ft4buuuZ%^26-B_MnT`jUo59W)(DK=bUfpocF#JdN&T>c2P)GC!EbrK3J6d>#_Ri z5V>Epb24U5-Y3KHn5~VK4sz$ka(9s4_Yq8v`5;+c*6XZt&LjoFK=c=z1O+{gS$z+_ zk6$|PN&Izvn(fdVY6xHAcYrNIY;u=@56?4enU0?|?3+s^AbEWk%=PF16|w3Zzg_vI zwt<>?!<$3vS&T$k7xC#FnERs4Z}kQrWIcPQ&GrHY`5~Yijzg^wHs8oN)jMXa`Ou@> z^ooY#KRpor%9L{OAEvj89(h>c2TN5*e9eBBu=m}%uGHm?y#0;QMy=RX`dRz?0*tRS z8f*oMI#TgA8q-1NHNJ8Px@>lWk;$sN#Z3uKciaSD%$WSx2Y7&h5P&!(bSpaYkSDTl zB-eVDm(upLKjXFkz~2%=Qa7*+MAaJ;yx>=S+)tCoYM}}%yMWyw)WI&_zP*{8wa(wP zRqM<6>uOB0Q0ru>eH)P&4ABC@ksl>-`U_updEBvlHTJ2C#;bwS8@-^ViQ)ltj;;dz zcd+&v6XvCOUG)zGF?cjQ`t7t*R`S|~AFQ*WqNC1hCf6EJIDfcyR6v`5@XiIjzZe+R z#)IueQ-_G{Thj5UEq;e~e-$9iEESxm4lm~F|1 zw&m;S;|8=D^+vEVem9w^FHuoy@8WSWp`lrSUts$f6;ga`mnZmc>qF)K4wN|?ps!DF zIO!|kPl!S9F`N-cQ#WtT$|{RqzrXhN6qdpspU>*ofa!kZ2D|J-1&tm?ZfOj7{ji7= zyk1lpvJPVatB2s}dg{hC$Bi`#vZzfEWWh+Om86J+67KsU4CT|(yv3HYun+GSwBN5( zb7t%?2rFN$RH6-&UeWO1KI20+>Hr|CQUJyj+qM#?-YP?x*(~HNna>A$ZvU-L>vc^; zfQa!tMYVrJoz)LB;qJ&vV&K4Y9xJN6w9`|g|KOrpW12L0+T?AV$j$~UoZ{mp$R z)yhu!9`b9Yiet4ojj+F0{B<8Or|Ti;dAO3K95OjL_~Z249a*oHbgCuPaKyBn{Uaz{ z7*KTd{?%*^UHY&UJu-itx%xV!&hl4GB`>YyWMNjYxi%1PgKm#?`}qarFvLlMxH(D) z(!MJAxJbo%qzjnZJXqNnt^D?@$8#p7fhH)xm*qih6;afmKf9tH8Nfkx-@kxegV@V* zWU91)yUlx*SXp$+vaxL%=TF_Pw@jbSropp0VV zb{KPlih8CW|IaAU;bw&{S&w2r1(UL@)5f^cboUL)dvoTTR?)J=jUOhg{@#S6w;THy zhd}XS|0QIoO9>^YoOah94>YIOai6`|?l*drb2Gaaj@jWuX>*X76;6Y|vU-!O!{s1< zIPicn@0cx30z6#;EtqUpes|6P25&)<2J4Btx*`AJ#PkEUztt7y!8kl<`-BVr*VppqtoWdPQdnfR$8nfCGkxY!mRht9wQqo zOYDqfzD{W; z7ZKB6Mr0}S#2I?;u*txCHUz)5A<9ZJC@tE8AlqYg{#w@6Flsr+TNjh|eB}lI;c?j? zS%L=W$yv*;$hj8I90l>)^Vy!~&ngRL(9I1qoV9L4CDB{Moto%cdA?kg!pav7l#U}{ z6ZCGZKuI?)D_8?#?%!KTdZdc3y>&@oDN*yksFEw-@F=xaRJhTS?aX&r5?-9r#Ejo# zOCmWOR@QWqpct+aE#w}mL^1hqnS#k)>}##wC>iLw8RB;8)rjeA9PGWIUkOb8<^IM4 zCTcqEp_`X4b=DFj1_w+uKiUnj;IMUN<59BsK6Aft(aE0c5RJiX_AtCHvRa)o%KHE` zQ@x#OQQS}!`rW_R0>cw=`m5;_GK=2yE2^^;1KYzn9LXwjD80Dmo=KwTi-ZFjhWZ{g> zIDy?aCLvsZ2Sz_pmX&F~GT7VuzxN^o= zkHh`+yB`YL-;Owd1rwXM8ySEKO7Z}5Vk2r0t}d91R~qdIHWzBoX#v*w8}6+eLG-t~ zWy0f9`LzmoW8wQ#4VjeEzKsQTVid_3RbLzZJ-8U!4faK9Y1r4#zY5n@dE(cT`Ze%| zvN%M}1w%(e9_XH!0f_Sqz~5-hk-f)E?%V)iAB5!=Ah8gikge*A(9iuyIpwK>a| zSo>lfF7(sXTinaR`?cbebsn_K@EM(YBAjkDw^~02cxq!w zs2vn`g4YuV8pPYb{;^meYq__GsB*w~UM-QfSHkv>w>(G6BfE&RN?u6jhR5Y_4#h=H zJ43Xwh=bSH+&GdkhVj|YmVkycb8SWnzLME>7qYgezHVimmTivAJc)Rz7dO-D8PREv zLx$3<{IdnG!HX#q160dm9lKhU>9dMYLcM;@9+TOMI+y~_mzd|SFAdV!!x4p@k+R0l z72&V^uRLprY3gCNIQU&_e_6TFeVP4EDp#$1FLmnbWX})-aoGHjS2n*tv{F zQHCAvkV5wPn4VFe?9r`Z(n$0PP55^Kaf_)EK$Ywk)V_7a%b1weSWUE;&bri_VGVTa z2P3}51``R$Y{Z32T@72;OKBB|1oazKXNl?5@$14VYJ`+EM17XGE|<#?_b_G#dO{q# zOO^Yfq3?vSyg>Qj+Dbp^OD0pEui`_+vh8=du&_(uq)|tnL~Md4LKCf}v-WQeEFySr z=*B=!P5iq_hW3!~i-}X)gsDgfSEi}|&%D!+4pV#&vy)8#X7+lQtkjuEt%>OPySyoZ;@sl)WANjy zf!E`lML^;^83)P^_EhSwT{%9-f5*k6rLo2V>(>SSb#^Z1ZE~M<#F;z1O)#HwZo5YtNk5bZ+Bwi z-zex}d&0VW%9ZDKw^yah=dQv#o@;jsaiIATdK7MyRcVgXn2N|~0whO2zx?r^;;@Dt z^T*keN`xv%$Rti(k1={gt+mTQG zIq6S$8GF`ivyhK*aPlKZtQ;kzIx@S`cbm#nd9t#%P39!mRRDi(UEUx(BFGS z&xm4-$8FwM4H#gCDtQX%5fpQCFp2-roA*`Krot}q8HZkKeZTl8t)9rt11q_eDaZ4@ zC=n|O-2ZtkfSKUkD~dAuDhv#?>L=~TPSjbcz<}a&NyJ$wcwOG9e5TXcH9P;`=6UhI zLJIIESR*ZPvW(A#B~FKEpcfy1S1?CJ1L!KnDg(LAZ)2jJ%|{+;c$u1}m>O z%}*w-dIXIFmgxs_&~~u|r0LGLn-dlL=GPS{E{8z$cIzP0XuZ{2n8dheaTSPN#( z;hdTM+rPcP-_O?41vSP!P|2XsQx?T2(qNSR4nbrQ*RScYKvU>Y2kre8=t+X?P;?Nt z*)s_j7swOW7Y;=pk=nA?`Kg+*a;&Z$O;^j8nYVb<*d(xrU#)F7FyKUG1$eZRt$bqkuA(AS#IVIyPatQ;bqR5-vOc6E?FXw(+*5O@cmdJ|rO^C5 zhQALdx;SEzmWDpMjU$$57e*2*%m3E67F9;#uj9#*lPDI^TvFI2QQKJ)SxyjRmwQgS znSG|PQlJ#JUUOFl^CjH1{#n0aK>eVbrc~))Ida;j7%E!nw8_vaD!&@oMg40I0VUDP zY#W6MUV8$|vCwsht5=FozK7>-H-;zglPn8yh3l2*keQfDPcN&Bnd4M)HDTs79)ds( z93g#nGI3j5vgribJ^!oTKdJNr{VPG-0n+ws5=WD+$sEOEXVl5c;QUOf%c+RX*Bmpt z4596^-wnt=#OxV9eMupLUVXb-;mNFzHreeVXGDvG`$QsTaAXph}_ z7g^0+I9sK|di)dr@V0$LcW#_DHTj`Re*sQT>MOfac)e@JP8)Rk5z;C2qa8d9NXvB${< zMotTwe7!m|s$eI&xG3k-NxL_(il3f_bFcI5XAL|k8<%c;xTqjt=PJX(eh!&2t%tO0 zcEKB>%A3nLl*|jX6S-t~Go_J41j)Y1%DV2$6CQgt9OU{E5YEsm4^jxyO8qX~l8fcc36PWleRfb4BXR`bePP zhF%dKd&hS-j%9mOdc=g&{<%zes{Hz=vrEYDB_*)8cJ32Bv!qH3V*_B{nRt(5Lzqv( zQDj}t%9r;m_1JbK^&oem1W>gl6GTFWlZnBOjGFT+?jGs;i+-unQc49mrNu2HD4!SW z2VSWYm#gp4SHcX)t(>!C`#!<=?C&p1L}+5dj>Cp|`KI>^i@j>AUz@EAwv?ch_$FbF zn=j^zR67)kQIi&lcX%1^@l;lM4}4`DL7KYQ8`LhI-v#=?otzRbw*1?L)(7jLmQiw_ zt>9kV9MP{jE+t^10#v;^lO$L?Y8_pyHr{nxfx)rd|y zINZyCJbh3?ma(atO6FreB`L%07M*^wP^bO(iGdJpWR<>7qc6F92(VPDnO128o{pJ1 z!WAXH>ICm=x!;~wmdMCeo}m+Z;RMqzCK z9ebd1+?LRjlFd!~u8Y;tzN6LzxuXrCldFeJT0ES+wRz!3y2P9nTTTldQg_fD>9?8& zDh&Clf>M{Y;}v&TO@>9eY>-E<5Iv2zxyugYu+W+YY_X!PL6 zG)*2-%yf*G-`WgsIlUYaU(~3Uqg!@pU^o?d!wFs|?){h=}ZXl;C5 zfBqf*N_`I5`u@As-W{AEOY(CV0V$4ID4{{)W;>}q#4jr?Ez0THgZ`k6+yt z4dxs@tJB~NRnwD*d)AkTo-ItgZoM5tAsNu?5&|n>j6?&An!RbpKYtji_VuA2+FDul zpkQLjj0x5S&?VY!GtdNfS+(ZV2-T5QMr^O(GCI(eeXxP&sL$~xhow2qB3maDR0J)a z%~z=NeRRJq_K8l)+WH|1*j3nyBc{PEma8C1{M{B40YbHhIl5>QTwXOLUcg&oYhkyg zDotj1`B%7e?vH0u#>7fsj^<#ef7!+IVF5Z~Mjx!Zf_QTy$=)vnl|EV3&aLBI!raBsyGGrJ9P6(nDL3q+)Xet_8eadiUiNr- zOpg<=F?!PFy=`JlRRI;ZyKR3zk%`$y13li4zGnOQbpd9`QRkC)0$@Mar38t4KD0kv z;fOLp^4;Wc_k6s~z_)kP9k1Fa{h+PZ`(Ja>P3NdE=g+udusgikxcCiVsn8O zQ@E(Fg6-dGOxC|ge$e+i7x+Mh)qw@W0mhlzD!o0Ot7(49VUwh(E1GA}egs}zR2pbG zDzJsTFmzNm+(VDMmIpX@HVIMGdU|fH?s}0Syw59%U|e=bUW&magRpl2lY#6l#fW*sq(kZ@4UF>g0 zT7XWGMgmlLqzj#SVRbW5)Si`G0M-f0=0si=xQRo59H&}qHlEO31GXr7WyC~r5RdF7;7=E^&n*Z{ix$ERp=rrxT zn7hnW^sZI&-=jcRvuHQd2G+xQaLhXAZHQsuIk(G7kg64jI)+G4%kWLZqaW+XvhrK| z8QKr;qQ*O$8Fb?B62R@@vK3s)q`{tQ?>X3_Gsa4R9z}y8`PhOv(13d{p$%K{OvfUl zX(*1ER|iE@Gl2SctJ{6;%(acUjQ(`!&zb+Z5zorXVN7=PoNPWW1{O*cqa76}-Fy4* z?;2i4K(E?ng9TrZ?XNqEm(uIHCtKdcwO_V5iqul}aRoF;VbeB0zSjSFEb-EPo?UEg zdP!4#-R=D=53yaG%nP+pQC}j&k_ekFMue7al)e=yVzGE{Q7lCqtxRK9Qjnr&WmGq zJ0)w`bYq~Hu*Xj1(9Hu@&*0^;Rrq$}e_WO=Gq*bk9`0YsKXD4!vfEn@ew(~ecm$Sy z4)owZMPH5-w~-M@;>qf1GutPS-xhJ#pDCSC)nUD?G)r6DzhO(WfyV-YtM9>0^ti77 z{rOz-3RG1I&TNbL#ZU_ZN>5U_Sz7!Ky{QWt974U zRrzyru}kr%BTlaOzXP6~-vnhpBMDis=|OlsVy16A?GVC~#}ew=It`EOMnhVMhK=9_ z0Jp~Z^!Sg!9QSra#wm3{&Twj7Lso8S^=Rbx<5!-1RPz2V^=U_3?*Anu*YS=)7vEB>8FF9%|7eMmE_bBz1D zfJWw*+j9?f;+(v2)7&&pq(jMM)b>hQKC&#<$zuOg2>0|oLZQkd#`54j|E zMvWugsWv$Sq}dviQea>}j&j2~`?`;zKBn_>qm#wnzELk~c7bj8t2TOG(&$fH_M>Nk z&HPw>stV7uQQpGkyPXWv2$Z(^koeL~%GReUbM)KV6)oCQ93h`vSOW}el{r?u*+OJt zohZ}C$i}nNSNq42Ka=kGG-cD9<>LSjSR7>mL2rLd1KX18_l?hA%dPe=y8w6or*L2g z)MfNq7)>PQqYo%?0M9mirX+?Q775JG(`-!VE0peximjqt=*ZgpTYMk1>EQN5bc6utr%RW(Ic2w^|ls z_f^YseUupYn=$2Bl{wq=NdkXFyWu8Unpna=bLB!MDBEx|34Tuo*q#$AuyAsL5X|vv zRQ79pQ7Kmvt4nn6%->l~<~i3YcMDdAV}Q+r8~5!paxb?e?_oI`S^QnZ04FpoP8fBq zyPQkt9NCBttzNa$9#<^|kRt5D@FkE_$7%B(syf~@@Lc^%BK`(xQ7qoOr%|LUc3}+O z(bJK%5Ry+b53&a+-rzC2e^p-b-mh{xM4!EpzD3|ocO8G^Q3!u6L7?6n?#2mLR*#g*^c-ak^obs~xv@@}H6pP;7*~;4 z=b3FsnoM=7bk(+3G(6x|_McvQ_zPc(FMPVvj{d9q09^QnVR&u*{K~$*v2l$gqsb{+ zgEFS;{F7uCbA{N56LGo)x0(w9@ZhMJL6>^7fjE!N&!)T|Rkk3Y*&iXXG{%mxd>J$)ma83-kF1yV)h0~n&ZrH*&X2}&jshmb7sTn%(ct}E$TRGi-W~9wrqe(Bl$MR6FewYHX z@Zr~%fpF;aRO?KY4>1|TZOcG~eLWVNgRl2kc<{txf(S|mF$R_ts(+Q}$DoZ@!{5hS zzMe*mg9QmlU+d(;f^PAQaGAx7+NLhWWf=VWF_SQjOCtd%u+hW3pFY3C=N;Kug775& zj6CpB_BFJsx6KcU^Sg`@+LxP_@8#y{_PIK!Zk@jMw964)%Jb(hJP*r+#DLEq@-_DL z=TD@gHO2FR{Q zCuuO21=_U7L}yH-F@l6p0mqnF^0?hxo^57IXlaK^mXlPPy=hZg5ZqhwX%L>GviPUi z)Q1#B5W_>J>*0jm53Pow1JafHS>Xgm6tpfbWjzLt&ZbDoNfFL0tYtZ}`st%VznWLa z4UUibpS*885K*~6Z2L@SRp}#g|4vl$7XGW!>6i}v6nOEBf5?!A>Qo2qw6~x&G+rX& z;a2pQ`1iW)tj$rA?8e5FPLD=%NF*ZsRlsVrG}ffLi5~l$|HRB6JO5*;VWI#I=S??i zD&A`LY$A4ho^B;D+yPJW#rB;b6aslKtWFJB(KJeM!BUbe+88pJ$$WYw59toN=Sw7U ze!UHCZMIy0wUODc43{jJ(l|4EU!cJ?yt@&LNjJs?e{<2q>Q#fV{TnR*0BNre*ok+h zW9Tlc;cLXuJJg=vpj5+%bC1N)Y$<<-YxpZ>tW}y9!rlWPdosyI9bkY{f=y=4^dQo@ z2UF-d-1^H1u42)3GNu(S^I@M?o3(u^_#wvrLWo?!arU>SM7n26p3eFS=6kB(XR>@k zsNq8Am7v6U^c};HQ{RAGQ(suB!Z%>kn#94EhM8h*C&Js^3WPF>Va^ijZQ3VYb{-yd z&PS=!oaiOJeP02^76lvD%U~PWc*6LX&s`Hs3gQ=cH!lkA&-qP-1(AA9hN!mdf)ZAE zfPyg1=h`bd|A@wUQa}lwZANyF(f_t=ip$j1Z2^NU?#@)>vpGpOz)Fq#2625tT_ytp zeAbXRsHHij*xL_b9=YO1(WfR3G2t6yzB>c8dz)0QJbmv@9ltVd{hXBxC{FcezQWSP z)%mPI#>bpS@prN|RkJFJyZ`F>G4_eU%A~Sf8c_Z?J@MHc(o9L~;=SlalB*59jx-6~ zJ$I8pTESEQ%7&!qVFGj}eAztha1oHPxmXjkiWHVXu4eq9n3)+25VJN3KekSfSB`}$ zbI18zOrfB+UublfZOBPuQZGKj)rP;+mV8)g({beky_5{tkj5v+Qr9R1OsTBXpi)x# z&ec|ILEq0-{gfN-u8f(jjv{hK>M!oYPC7K@PL|)_?A*+$LuFqzT#zy*ZD%qZD9$#4 zq5v~mS)sN1!c0S~TJvuQSdH9(Ew?tdZ3INqK#A5H4en&NOF&GVzC`$W#LYUHp52q` z0o^s6KqF!Mu;)N7+pVTb%dEO!#GcwW`Hfs7ypb{Ny6YkL-Tr_mtT!N>LJG+ZKGL zB&Q<{G#YO9xqo%$xkya{W37t=k1)lYdhC-66$j|v+LdfT?Ez77S9&FoNYD|!LOhoZ zFPl+oQFTeFu1>cy;%*pzn##4X>hq`Z%{fLCw%H6x8mtdc_{%HSW}IyFG!m_XVO2W@C| z-EaPBjy3~?QB$YKrAuvu=4W|$n{Di_AL_x8BET|6e1xT2f$nHEn(})ST{vR~qXfhj z?f`6z@+->)CL7~+DH3`@Py8eAv{@Q;-r&4@&BWg9ZESWWVXc$_YXIWE;EfX11&%$X zpq+8y1vbs;S-mI*uozYB{&^FGO++I9;#EQ+u&H%E20v5j9n14_Kqzh4Sn*_(2P_FR zGv=+`?Dj+wn$!P&AnSCSvp@v_c=|qYyPL+xLlenX2_Vc629f4(vX;1l91qBn zRlQd2W4LkLO!RDnmXxAiE+QKnkpt3qPRC$bR$=(5=pM(4z-)`n3}02nQ8=Cb0_hZr znY`QJK-ZKk@*1-)fS^oF%f)tGA9Sqm5#kziKmdD4Ry&coyf3B}F#37EyVPK$gSLrVMUJk?SV`o6L zh}6B|VgVg`{Y{5KEWGl3d#vg+`%18CK3MJuj~c{=3#8=HnpgqIR09KLsY*&RQN9P= zcHvw@6k?31g?)36yn75m+Ly9!2!qtqW4QqJzX;?;idVxt2LjpCfO=>>%*#`<1-;0W zjp@*)+X!P$0=6YD6(ekvW*z4EXPwP@t=;trbuTxTSsix(xtH%9&DF|*ql-F^7UV$k z#XWjUX;;9jEMR@~W}h)D^+3}cbRc7o-zuUf7{Q6mKDg6Z4Zi#_ixAw%QS4XO#$V{d$=ib&2{s;ZKgpjEX^Ud%Ypx zX1~CrAeWudR)%0=*?}T-uX(gPLW4)QdccIev5%o5mMf-6kpFekLb< zHf>=mpJGTXS92#`-SyBtaciavM|eNsFpSx&C*{zSZT%Dnka!6@FRo`4R0K>J>;Tdh zGi~{g;{2QheUy;CzIl$|ot=f7UQ0@skEMRo}q|(jZI2S!5Q@;0YM)>;J`}cyNtO>JFc<_F} z#iIsYL3w~LL-7S-XS4dGv-4+4zH(Vudy;n7Nw_37g3?EUHF8;`*pCfB@qWpHpvP(f zN7zuy;l%1)mrm*3K4V*w%W=CkE&8i7F;o!6>~*?&i))GdGCZZDjc^jjX~p~JC@;wF zi`CXHOvJ-INi`0~T=7MwOp}yDjHC1mQbIGH61CXS?ISzii;Ct_?eVwZQ_fkoej7Oj zF@GxsAK;6Is6N}SUuTh3VeWa33o;du&KQ+4S?QWB7we&Jx2{2t_;z#LJE6g7V|9#N zT6~;Dg2?%=JXpux?Mjk+7p^(~O5f@IdgM1zDjO3N@L~XG_>0i|WHS%A8QE8{7>PUG z7@)V0aL@FP4!pVBAp|&va?=-+99dG1Jz2eF&Kc?oqNsGDRE~24z^dkLWONl*%Lta#L*R<@mz0taOQ`Hz(| z$hVAr;PAEb?;C2~@rD;lP586+xv{qmM_`*&TtuJVx_ zMq|=>-Yz3-y@mdaWK&(g5=Mm&+;&2Hi+zE{@bt;>fVc7KxBhFNi3SJ6`5uq+7W#tf zlDDjKVk@Ex>?vC_uo6uDg#1Q!IMSPKP-M9sb><9+{maXT9{Q7u!Z+XTIZRAi1N}PD z?X?_E3n_8S#Z@`{cnM5nRwkK%>W_1+8~8w6diWU7KQDyQw#IH$N6|npiOzjTqR}Tt z3nrf=?t5;qV1SuIuzIUT9iu|ZEHypj%T%|Dq2gf_e4;0wXriVpz^SA(r47QE<|No& zpQ%5yZF`8N7Azx3$E+1LTyf4>EV(qVtpdFi7wc>=QbAT%kd^JCPFUTPP_2H$H|To~ zwswpS((ZrKxflw5oKb!Q=QW`{@FXw8n%9C+E&oDZGK;nr`m6Hf7srhPD>IhgI8t=0 zlq%h*T+8k2icykUv%l;bQ)>lD{9~!7&!mLp4w=MJ9fuVCOfW%C44A-2R;QXAp5E4N zk1z#**Erh+lhl4-5ejl63n0*+IdpZNZTpdY_Ll%3LZL_^-V=f$gxG6n_(YnZ_U+9x z`LW}}PeaSkhcHjz8tCd3g7n971EP%bGw=%lpnt79>^T7M@PbtR$b##0crDRAWv{&|roidxEu?DkcFz--`=)y}(9567~61&jx{$t5puasF`d zPG@XlG7D4Vsd#=p=2XkTFS6m5hNSJt0*R}K@p93~FKAb9Y#(B3>m)xopPaQ!Kl>{OO&HvYF$0if_QV!B4k z0tSU}0bk!zJ3fuIj6)QYtWKy3-3EmC;0K)5axD+v?L_KVQti}`^g@;y1mg;0r{q}U$?t&QN%IFL(fT>LQXh!ce zx>eXDKRJa9o|cCrE?G!c5I%ATog2+~AnDQ^wh5M1qm>pvpg*i{5T2b>L8?sXUN5JJ z0$!0UqWCL^5Ro1h)X5w5seX6}QrP?=m~?PEb(#1-ui;hk;GSpk8@c-Mg#8g&N2X(+ z4eDO;r*4}LshYG)fXNZ?Dt+m4;VOImsFdpO9==5$h9mBaGcmETowo1bToEm5Vf}AO zr04|1vy8MrHFb!FO97owULGgeYH_@s_L*F>VAs4tJw)=Fifs+&9f2QXnItPkzv z4L|Z!U|gthfsoxy=tD^a1PEibqHh2Y14!$FNL_>pJqYiw2u0mXA%RbA239Pp(PvwP zG&WdiHgKF(LIZbi362G_1n}eCMm^dfx^_Scv3sIplX5CNAc^ryat@y+nbT$%6#la1 zxjsvf_F5HZ-b7>rJ7R*q^|u9)gT<@F5hC*(7{h}}OHbzk_3?B#uR_M)F7iRXkO!-w z#Ndr2S&<_3t-e0uR?%?%9$9ZZRso<8ndy!0*&OJ72sIe z!Olj4S_pwKS=A501X6td3b#ju-bD{R8J~=-{@Mn^6;EtiEUBHa8iTO9R^k5Z=Rd^4 z(s``!@Dg+3#-EH zM^Y42vF%2v3XD;QGv&9eZpT6yw(+`W0NhTdkR*$p*f(z@l9Q6BzY3Y)pQrv{>}u;s z=7GqXwz)jqsrZm6)>Pv}R%!I&4e-<-g>Zz^{@}->tj$#6L2sCFvGcqG$`BomJr1&p zZH39d5DtJsE)9L_nhHQva~_}4V+i`JwiAp>ZqI%-o~#51Cj%yT^44&TU`UGxTRBb! zP^0JJyIocg<{!#pn?_({nw>DYSH3;3u$lD(eyToTA*h-jdM$oQQGjle*}{RYw_Yn9e59UXn|}J-^L7F+=3etd zs$KaWazA4dQM;@*MC-iC^i5qk0E|Hb-H{+oU|L%;jSNm9zcI6;#bD-O)kni}VSXVZRVgV9gN+8|MqIBje& zl}V|Iw>${mlbZKN=v`NUMg5(Y6>s@inFH<=|6K=!I|0-X&2@1lq{ zSLRm7j0!`WO-YcIz~(qu!_M#Lj>bi~wit2c_juU3@L0E51QXhCEK2YS!r?*f~H*NPT= z&pyP7{`8z3#$|i1Ea~o1qw!c?>brm0=g2yp!#{Jwwf9M9c+7v9u|ToU>oI66k{`J* z*X3oe{3c(jtfW+^5 z;|`}!_Bf`4>%xNr8lOQZhcL{ooUv*Q+>a_`NdY;>{z?-L&A^5Rcs%N-+37|}zAP_96#U3NJ zU<<2!y`RdkBZR-nZAt43({WOg5IhGNlOCHcVY6J-4hv_KTc%F*$FcX=IJepCqf3n~G=Vn`&`E!z)B|ko+ za$h(HpHdpAW9I~~+Y<;9H}XNCvJz6*JqE7!H{Ffj78S=Qw6}BlzE=D&Ro>BE2d|gzgTIzLq-; z(eEw$Cy$4<J99OO{c~yS1!ry$4*p7Fq_+jkcL` z5`!@}NaaI-m=o!0@AmTtJ4}@D4mk~NOfm=m5deD|4rgIL$_Uy##=bH`SR|*S74k`XTt!NaNXh?DZO5Q~CE+xl!a3J?;hrCfC^Sj}}&rf^1wN;)vWMAiFibM0f*`x}3A^IbCJv zu5?S|ED$R6Y^CTcDQE!rdP+W)BPW~E@8w#gJ&B9|<)lIVZ+wof9bR11Wum_)8?P@b zNw~~VWudEG71{<(LuJYTC&E!__u!`|*SpJWsm=*D#}YkrFUGCuRK2xz^WloBPmKur zR(BL{GV!NGO`T5_q`(+CF3_rz8|(O_@Pj{2j@=5k+H~mM+&0kzN5xv{UcVt$BcWvY7f|KL4zIW=A5iK7laBV_Q znUYcuK5vft0-u)BgFXG>FFYActw{+cJm<%+@~~T93*FT?lMsQrqky2-jZ-IrMgPjD z0+>G}Wi;MjP)67uh~X^sNCS${P4*ft0a3L+DLNJb46c{{S-Ru5`6zR*;?XMFRsu-AOg3 z5o(Q;FbJ=xJ0(@QGnRgqo9@r9rd}XI`l|u&?0&&H5p7+Deq#rg`ySB)?4=0*O~|ku z-~R@V5M9+fu^bLtgp!GmyYq9g+0=DGYgCx+9T>W9CX%6VzXE^$gz*J107>Niey&wU zBvJ&u=)!~l0j;z%f^OW6f9tvkeS2&HB$NPY0F=Z`$pL)|>i!DUYJlVa;ZVd#Jf8l4 zr}+Oc)=<_I_dllp{a+aq8R-qu#r}8U|2c&c$i9H%znbC*Og{kqpJzP&Pkwu52z!e0e<*zj(U`RFD3u)vHBA?h;?S)8vHw%nv%9+&5M_B{}=L#p-%t+ diff --git a/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png deleted file mode 100644 index 585c63a6eec194edb21b89716ff0a44d06cef739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)LNu@ z5otnHD49j5ZKNjlpr+>iw!7}k>`doByPCUOVwYL|W#*qb-~XNSedj0@&2LQn$4fEI zW#G{#^WRC5M1Ow?DACU}3`nvB#U90A`kV^W@25SP&WVgw@LNC$hT(@L%E|yE?O)(m zHN>VT6S$4;)d1V&G8D`dn-#MI!)U!$i|O7$IzxsdZZ-1HS0H9XJRg8CP?;HqEdgd( zVS#sS63taNIIy_t4E9_-$4PeHtA}KvP$M$-*9^rT)u{dYLk=vta+cE+_X!1=7;50nbhyNQ->{Odtr->fnU>tItFllsw^x(3{|(6J3y%F%t*odk~|Wp3z;VmA)zn} zjTfsCpO=p014YDe4ne7zpA_0DR6{z=9=D3yOsMS4*o>UYa(+8EHjU;>HCRCo$Ub!h zhOP(NlIyt8@}WL7G@aEarT{Wat2?YHgSsi7ml;7gb%r&!+a=}Kd&=G zJ#BK!jkq@N2zWK;&*IC>fsUw^9R9}J#91+!RQCywG5h5v$C=OO<+|*Z6V5A9){qa2HDPnT*7oLS(gEP?lr-{8JMCkPc X^UJ&XfJ0tf00000NkvXXu0mjf1XgZt diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png deleted file mode 100644 index 81186a89f1b6af469892eaacb7134ae135119f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmV;)1~&PLP)41{XBV2#rnA{(cjh5HArn0;Xyvn3IwSl@6BB zAv702$Ug@~Kq?6UTr5InjdW~r*x?(U#6Uw6CVK`5SP)5W7u+Qtq~>QLI6KFy5YX|3 zcrp0+W|~m5ThUX~fX=hE@Q#eX3^Rwf~m8tMgP7`30VHd01 zEX4YRNi(X&gx;&SDB=3VwK?0%kdl`{m7D)u9Ciayn$p7d)gt+EX z2-{9vMmX9ikeF3ouNO*k@F zVW94TR0U2YITdBFx{|5PSTY#?(p{*ebi0QHAn0A z-_IYLLDEXl7a*~>6EUhJ=?p4a9O{Yg0U2XSNkV%0I=MD{uN@tyuS+@#Q(E%ut%BXX z5`9-2@%%x%7|2Eoab%}S#{li;TXI{-r}ufPYLZkl zP}hV9M@~r|oSXJi$hRPU(>jtukAUW8g6nnB=R05}NpNCkuPlUNK^JowWXH`?x(Lqt z<$r2krs$A=J2KsP(b7$m2GIE3F=ARzA%W>xWNcoK!rc{^oAjdP*m=69OCh(aTzbR+ zl|DUb$7~iBL?|l^5F7J-9P5ma5H$q(A8)}}doQN?hln-p1}iZ3|=~K_^$bOpYz?&oktkH+Yay0s5qL9VRt*> zF7;3;Tq}-db0~}0RS1ghB#bFy8U07>d}ZL#2h1m24k zRZos0dVUACnkBdKxiA5pFMl#_3HDVI-kVXPy93PBtJg>c1`C97fJ?W#_0Q}xF8}?( f|M#f>>kR%0oYvoS6SgYz00000NkvXXu0mjfxHCtC diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x.png b/src-tauri/icons/ios/AppIcon-20x20@2x.png deleted file mode 100644 index 81186a89f1b6af469892eaacb7134ae135119f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmV;)1~&PLP)41{XBV2#rnA{(cjh5HArn0;Xyvn3IwSl@6BB zAv702$Ug@~Kq?6UTr5InjdW~r*x?(U#6Uw6CVK`5SP)5W7u+Qtq~>QLI6KFy5YX|3 zcrp0+W|~m5ThUX~fX=hE@Q#eX3^Rwf~m8tMgP7`30VHd01 zEX4YRNi(X&gx;&SDB=3VwK?0%kdl`{m7D)u9Ciayn$p7d)gt+EX z2-{9vMmX9ikeF3ouNO*k@F zVW94TR0U2YITdBFx{|5PSTY#?(p{*ebi0QHAn0A z-_IYLLDEXl7a*~>6EUhJ=?p4a9O{Yg0U2XSNkV%0I=MD{uN@tyuS+@#Q(E%ut%BXX z5`9-2@%%x%7|2Eoab%}S#{li;TXI{-r}ufPYLZkl zP}hV9M@~r|oSXJi$hRPU(>jtukAUW8g6nnB=R05}NpNCkuPlUNK^JowWXH`?x(Lqt z<$r2krs$A=J2KsP(b7$m2GIE3F=ARzA%W>xWNcoK!rc{^oAjdP*m=69OCh(aTzbR+ zl|DUb$7~iBL?|l^5F7J-9P5ma5H$q(A8)}}doQN?hln-p1}iZ3|=~K_^$bOpYz?&oktkH+Yay0s5qL9VRt*> zF7;3;Tq}-db0~}0RS1ghB#bFy8U07>d}ZL#2h1m24k zRZos0dVUACnkBdKxiA5pFMl#_3HDVI-kVXPy93PBtJg>c1`C97fJ?W#_0Q}xF8}?( f|M#f>>kR%0oYvoS6SgYz00000NkvXXu0mjfxHCtC diff --git a/src-tauri/icons/ios/AppIcon-20x20@3x.png b/src-tauri/icons/ios/AppIcon-20x20@3x.png deleted file mode 100644 index 99a5a02af610278955a8e6c3725d54f1974477b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3071 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 D>{4XT diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png deleted file mode 100644 index 2564c8e9d9f90ced1bd812231b9856012f99e7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2894 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 diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png deleted file mode 100644 index 2564c8e9d9f90ced1bd812231b9856012f99e7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2894 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 diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png deleted file mode 100644 index cf82acd8127409ace4db087b185819edd1815a97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4672 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 diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png deleted file mode 100644 index 75858e57d7ccb40e8c9ce5642999f301b0294726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4168 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 A?*IS* diff --git a/src-tauri/icons/ios/AppIcon-512@2x.png b/src-tauri/icons/ios/AppIcon-512@2x.png deleted file mode 100644 index 4aa5e2c2f7e6be93106a4cc7648ffa3d3e889226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66358 zcmdSAc{r4R6h8dS*p-M%X(4L}B~rquRCa~zjO?PUMYb8VkYp#yQjzT0cY|zW-*-lq z?8ZLK_Po#Z{r&k~@AkXi%|G*8muLAb=iKL<``n+ZVstoQI&$BdhL2AVe9i(#@cM@+oSu z#w9Sl2{-|8y42z#x`a=dNRU?y-w?jw4wJdS%v)Y|4A3|L;6%v{jei%)e*|FvT`))f z`vv&uRsXx-fD8V2!3^X4@8UJU^54ZBG;LPU-$iBkzh5*5-~Sh0Gs6iO8~hsx8vfwF znf|X0vB~j&4EE3W|L2DPDE_~dYK*O2TlKy^sPS(M%1=6)DQ5o-=l{}1+68_aHNRAfG6 z6v#U?9MDu6%jIrG64~)`Y<~rgOZ|vAi1OcvXa-l2p$Em4ATL#((9>mC3rbYZVoq&= zeaEAj0Cdp5XD4}#5dh)tPRRYKz7T@1pje;7Ams;!e;U8h!_LO0c0DF)Es}({n;fC? zva{JzP}8;;CqCYAZbDKU8WoIW zyvn_-CJhb2M+W>`+nl1=ml9^P7IgKEH>e~x5`GNT>c1{@ZW6pN$?{bVj<`A_B&iCy zqp%b$U|agJrPhaex#P9RtbO`7;0|oj*RZ#b%rKeyW)xIv5hcqsP#V>wTCM2yDe2LL zAZlH}8FkyspGMLw=zQ2}-qEf9QHOzEB;K%t$E1X~4R*sbX8U;C%8(8*2AL2qaB9hx zg@v?0^$!#4NOw?w6Wjeo%(mFR0y&W3+3iVE%x4KUv#Qro7{%mJeOJJ?1@JkvvHy~a z`cLygjz_#po0Kk;rx{t}N*GBLwdH3|V^Vgy`hCCN^Eqppv3RHW)*pO)XPQ?~susJN zV2b!5L7bk9vM|%wHBa*w{h6SFgv=&WrEXWwe1+ZBHWl4b7t&_v19uP#qE@rLB&d~9 zXE#gfD0NmQiZcOmRf5XRL1Vf~s2{OCpM~PW{;FelMGe%_Kq|54S2jH;7U=Z?T?Yry zrtfHbdpfyeV|4XA(I|?M%;E)4DcmNf{4iKn@VZ^Knv|aT=bPt(E66!8J>Dtzn{DpVRBqk5B^+WsDoz1xHwERmC#peC}cSAs@Q(Gpc2)RiLA(IjSgT8i#jTjolw8?f3cCqFqmtozXcqiYpib_6bhd0LQJ94Ru1t zr5W5eHZxk@s?#0()cD{ai>3@|wnPggo$dn=8^hndO)@l*wJLVGroz{TC5tWKNtaG< zb1_+f0LlkSgyufb0?L)k+`CSTWCyp#Ad~eP+?4C1akKgY%x)|yEvGfeAdkK+Zf638 z(p(@iEEUC2Cfgc2mD_m)gvHuzR{9U6t$(v7zL-!?Eb`88>d>gg*!Su%K0E_$>H}I% z%Y0M(cF)wJ*KG`A@^~obd(~}|W2sT`0`?i@S@-&D)uMi)7LjLnDlrjgRP0+iVy;}# z!va_Zu9P*+z3*INsaqT+smd=R#% z{kgZnzT*Co(Wi4nD;7)+CV3mllku)_N1Y-N|GF;=#Y$3A?vsC>U^%|x#e z#zYiOII+qzu-0ICK8>RI;RG~udfLocV^aj3EPn?23tmVF?0#O|gL*RZ#8J_}mOw6L zRnCF&PcEjGxEo4I2U{S3XD4oWOt~BXdRE*yR%G!0M{Gx=2ItZVSUwW~!G+^{Vi5uU{$>Q~m*DI5xINXURci)|MMCqhHhCAHFOe%WN z8%kD;LVQ^NQzx>VVW?bldQlle6(%K(B zS=JYW%H#M{_%cxl{&%W!T8v&-@^~65*)9;^xZnnrGH7f^b-C0__naj5bcTuR9qo%3;@j_eteK#NKP|BXz?)DS=*PU4wF_$&d}MOjpL-&MxZab# zF{da!I(jlgvsvFWd;ekd$~u8656y~0 z^#hC^m=P}2LwPl3H^imc4Ay&Y@&muW3dm}004HIMj>#`Z0mvfNjvVd+%8b9E@CFlcd^g=OFeI3 zdSG2VxJotO-@X3%M4H~^ek?2+nlFIN2Kcxk{HE4Wm&U&4G7z(gT{`o-c%|5ed<(S- z8(@lZ+{U0UI%I;&dT%vVm6T;Nc97ZAQ8E-JG~{s@2c(F?EVnB>AB%5Kou4>-%?Ma3 zIJin#u~Dj=q}tpR_i(LQ2v$A8Q*oX+bW?}=d>LL*BF2F8;my|W8x*Pe!2(b;cwB&wye8!@IHuWhpX#;}@vBG_Mi}bXy_dJcFT1X@?xHcQ%hL+cyu_(0+TN6S|2I} zjqF?>?t=+P^`ctSc!V#;oaxuG#N$Pf$B9QlAGUn$S%Z{073ZxM^#%7z^&_~ewd}GU zsd6t-gZ1bblBuzq$Ew9DI{dzQ(3=bxO8uy#JxD%m(eUUj78HVRoq?q3)ilFik1LJ@TxL@q5)CbcZ+E= zo)KHS;KBc#1wDXyh1ACEe%+HA*!W8i)-NrQ)VS=ERL`ns*mhtJ?}o0%@epLyARKsg zx|0fu-zF<1aLE&#ev*;nyb~;`hf~LU_{-~X6YV1diqQn0t0;mR(#3!;k}S6)HF{bnK55(Tmj^IdCfDkP`2D+Uh{E24s?J@&N5)H)(K~ zR`k+%tQwEmiCiOsl!uTV)gDKEA=1s+-C%Luj9mi@FwxHP)+etEjsljmv}wIgNm06Q z^(geD$oy^?-gFEleA99SsKB#-z?gBSL3zZ@120S|f;;qnt;#vTvay$*1K@b-Q^hN; zZe(2)3~m+;y5O83^Eu=d0qdKvd-OLTh&WqZx!hwB31ykWOw9f;nB^VXtX{{RzXZ{~JwtUEjrTtc+Nu!5q;#K{cr+dG0l^9R$HOAd z`S-fZ@?N)(k;{=2cpn}$EW*{pF+;1SM!&m`92KjX%HNSPEu592gooV9((K>VwDSir zDF?h{JSGatu{0Pt$aLi&Et+pq2jtS7yFC+&ZSyqXyQVJ3fck?!dMBY+J(e4{?_>`W z*GV>b6gl+hOG5t|d&N+Zg@87N(u)JNp=w6Z!bFAl7;xI2W=~%&y@=nBAKCAzAxE7f zR^zJD5Ubkf=jhMW3#JX+_!j#5Xo=UD4Y1C@5#GAo3IpasAk$BqF}6G&rY6G^^Bv*$ zSev{i!R^pAl^QmVq`Pv{2!Sr*bVQhoKbZ7=oC9}YVg}}DIbK@YD{Ja(v|5G@h&p_u zkJ(EUY}Zin?Bo>*t51*leAJaX5Ujh`B66KSQtUi%nwK^@h7N5mjrX=`#Siw$dl3tb z+z)EBL7x?!O?FKa`S*GcJX5G$r2Yy*gW_Zk#3RGS6a@)hT=|z`h&uZnfgsT-hdxBuiXK!BY}49Zx?wK=0=CBP+MUXC)KrW| zAZjq+s@Ty>no$n=(saS@+uZmHoZd!6A}jDe9#E~^n32V=#R?$2?|locU|@oV@~21) z-OuU7=)F-ZCHSaCA1ck*Xns+TjiaRc5#ji&TApBn3IN*j7+;fw@iaZe=$`2yGKqkMj-XjaWS@hqVe?3C+ zkWs%(Kl*{Tq0QFQzYz@x4zYOV%i>WjQx6t`NX?I-dlPS5(}w}KulQ|)e=gkIj*zP6 zsz2>T{Vh35d0=y}DqeT6eQcY0Z57p3CK@Th5mj99JYnptp_NeiIj7WHP83x5@A zjh)|u`&ADA7C4pwUb~XD-~;na$xEn;AYh?%HMSu|$u}GZ7}C;a=%3ouRm7OoJL+PX z#peA@ncpn4&OH5ua?zL?kb z^R{Z}Zxw?zl*G=7s)qG9tiFnG>Y!-ym}b;52GFGc6bHL6;gKaXm(@3s58Xw!cx>1! zl@(+5;T~)))1r4@5>i)?`#qfun`O2| zlE)+4N6#HX*@{}3ms(Mt2GR6ZIws>TF=;|@Y+PuWnx5`M+QZBUowb@q;P%r=_OAYx zoLHZNN01|b@kJ%%f+9VtVnYwCm4OOI+WxDl={(z;2g!@?=4Zfzyrr=#4X7t=3`@pd zVySKobtx?mxHe=kMVex#E=P-M{8d}{R;gR*ogdqk?07q%lk$S%>mCZ%I>wejbwU@Q zx^ZU{@R4l`$YrqF<~IK$JC@g?9j8WLa8kVbP)wwSXgW&Q`F`UmzVnaw`i+P9D9@55 zFZSA_QnizNU)OJrs_oB7WER}5Nmu15!^bqU<3w$XGfg=|p_KJN?B8%(gHYT@udgc# z(?ZL%XllGCmovk#YcD=%zvM`f?14^fLVN5R51aAq=6xq(d$X=WZ9juYGepF=D}zcB zlo9abF1wjq0gfc?eh7vfp!VcHcdVXGGlUC{aP)$N0oE857p(N7(`Sg`>a6n*@0>0% zX#bc))ULpsL_X zG>irGU3g!gH|Ai$DZCLaO`xEt8S6Qk?;-Q^I|KP$efpCI)T>a>FL?=y;Gb6M(E%5> zI%aCHkk@zt+d)aX1)YP$VyZ{0d}8gZ@VJ9k^WFlHHH(+1eh70v zosdcE@5iSc=_(@OK%?lq^QSb~QW>rLi=%u#8az9iF`%oEr)xJ=rv4XKu4b2SDjeGG zzS{d-ghH&Ee$Pd{>Y|S+OxsWIwLwpOPYi@X0n?r$Cb@z5v;RC(C5&@eYNj6-5sE`w z#Rz!vHox@2IJkQ#~Xb8}Ju+9q1|g|Gtf~)UlJ&FmYH2y3RC+xBdHeL2|6HpVLUbbhd^x zkFaPuJBeaN|LD9^U zeK)WQe44zxIr1X_3lsNEEwszJ>@zP(%T7+{h!Uz+R#|f6d$_$t%e=INR<&4E1=oD) z52cQo+7r7yxShw*k4s!-EraB2o3b_EPf`cOfM;S^D9w`q;7yBH&l7WB5F$)AO9(Cj z!d*-{#&pU-Aa;Gb9vM7d>6KetkNR7+@Nzs^+sB+LvYJd~nI4?3d&zR#{A`|2#jn+0 zv`hm^wvUN0tI}((Q3u;UyukSz82GO~@?~3sikFldc~4kB+rLUZACO$NxQ5*D39?LpvRP3eF*X;IK~d+Y4TeQ^D{mSe`h6M>QT;O+kJ+nuxrlhIb?zU|Gr)8d}ZyrrxJ^GCY_y!Cl%hXSD!hpt) z^pG$7=$k?6kUsAxM}9{H{QeyC9CdM5#4fn01LZ4Qy5xzzo+mk}m9`Ldfjnb8)a zvTph*N7f7rbZbJ22oGq{EWo7JIm@3Uhk58 z2j@yBE%sjLIb9ZB1rN?7FdJPI3D_$0Os?h&-R3NCIX`suRk7nyNvwCD&^bdTLRynX zm^r7k#x|?+PuiYo-Vkq<=pS1$cb~z4CX7`+l{*Td-V4+-;!(pb0XdUd;FqqPwH~$= z=2GTBP$j>%f)FSSFDY*vJb7dRD&*s#bfSu&8YTA#EvOt&a>kNhvNl|z-)}zma=R?u zhhGV>*W5HLZR*#%;q^@+w!N(Z-1^t-pi`Eo>cA`Yz`FEsOS7G15u0T$!e~g9J`U~W zl3Wk|s68f1kZ%eLv)REA%k(9a1Vm7K`BNYJ>W&C@Y$Hvz(qy1;cBK5-4<-QJOVgcv zy7AKWOd)VT82o!TGY`hs0Or|eQWHPO9)2!$jLQW#u1R+#D>-pwv%uh>=}wZ(o~#?j zz;EuN=w~^-W8iO%=#`D{QpzcwT~_z*^}qaf-{-SQhV#B>!UxTPBY?8Q*1&n-%9A2v z{4~TH)k#5asQ!qd0fd6UN+v0WGu+p!r=047i-F>Od)g71b(f0=m^TFxNVXY^uvcC# zt_59)nEsmsdF*rr8UdcE?4G--I}HObPlk%01R6i23Ib@BCv#M@dL*gg!p)ubR>|WJ z+gbif*jbZ2FZjEpb{b*KHYf<{n_M62abNR(Y^*H!Tkuuhq|;Y5w4?Ybqo5yFednTq zR~_TiF7mF8XBpaf;LKN*U{F={+cID6Xby2yhsX>0!VJ z@v{U&lgs9^-1AWB*G(POj(;^%CrgfYXWPxZoGe8k<3Te66zQt3qB{#rb2g!;)~ny2 z?i3lfg#rac6P4~s2L}r}->?06Rc&uqW3{h1K60K1K>wP}R01p~ZJwonsEch-2i#8}MT)>gPYW#{D4Y@Br z9&vv-`iX=jEb@$M)B&8s#E%FATHYO@KC`PNVSa-L(VodpCF;Ni1;=wrMwltrm;4t+ zc{WByy=rJrD?Q|G(7A%tQEW(gF~K@^AeEBvwKFo(;Oxz6#)oU>bW2Xpi(An8LNI25 z6v&U}?xbeO&WwyLg!_IpWe4P`IJn6+9`3ikR3HS7FS%g9drf#F{1ut0bmab)-52X| zG{k?5^HzoE)|!;>94}VodWUGq(kDiMujC*L2AsZDFo((-45)aJjU(&7Z)c&pFo?7C zJWT)tjLB`u?s$-zDQ$~Y&|oyGLZ1OyK##5i|f)MuDFtZOm9}NgtC`vFy?(3Dl zd=o^VLtmK{fyh72k|x9>3o9?D2+BNL=n9sn!+pS!JX* zYDb@+2j4O3QSZv?49Uez5%4z`SP#fW$jA@r*6opi9Ad zC;f>JvHPN-&4OdYLJ+AVlr#g`!RDVV0Ep!E{q)g9bo~i8nQ*;yJoMUm&_$AMvor@R z8PZs<1HVW()kcHNLLdXgXX@2Yr(Yf|Gd`tM@g@iO?u|)jV$7h}$(*w$Fn=x=8 zlG_Q2Jyb4?w`o$um#Ej%q|7<6%NkZU>JQ$75@!M#Qzv5UVL!^Nx6K=`I5Yh&>qGA0 z{+zD7Z`IL^enJ1|mz)Ao4<6S(#zxA(IIjDxz<~Q&8XrqLz)FG_EiR`mFH?c`8ZqZWBEb%Tlovl#q+KxBmfGMv}qW%l_9?0Xl5wSb6$cXN!n?pBr$<+FKI;{oRLv{E7p z>%-p7V|I?(nvk*RcTEd?{>^Nl{QY6E?JBsh2=z%>)f|fv>eR8bk|9G)y}4{1w%y6A zHGL6lVXK>*!c(PMyD)%5-ftFKH^I;6qoLNu7wQyKe+mBe9ssRf*OLa!t>x4@pHOEC z3cQwOrZ7Ue+C_Ce)AhUZ_nNKFl+$DR8o7dE{pWcly5Fk5Vq5G@;AjP5bmR;c2Dsjx zt_5`~H=B=VL5y<290D32>)D+}ZK6G{&VV*o74;uFTiV_%RJUfOP}P=XI~`=PzMZ2K zaBJ*G4JDg={70~PZU4mR(;>iE8fw7?WikQvFC0TL@kD}*Oh+GYt=$N~EdD$wgnMuq z3kETjx0!<-UP2ZoR$d9B#w|leQULd;WWc;ODS7zZ$Y1l%r(^T0?rQ+QjDW@<5oVyi zbXhIY_u&O~`}sC@izpk@1eN6^#jV`0sYj^3B-^op37d{oRIBfKUB@7lneW7s3cx+s zJ^t&?kITpzp)iMIukwbXorMJy_qukk!Z^ef?m=BnH9Cs7W8s&8EjmXfzxz;gWl|!= zf#+A{ixKyYAq?R)t-iQ;H&Mo#dWFAoRsP7v#Ju^yMVM>&oAxRjJ2M|i84Vxwk5Hgd zAcYh(DFX04xcl}Zx9W*X29bh%pM*xS3P^Lc_ ziNa%Y>eN0`4qk*-4O~qL6ETuJ@M@SKLLCV46yJx8zNB{`5A^bW|5&w*4Cf6^s9TUX*re4?sM}T&5P>oWyxT$G z1ocqP_OO_}qF!)0j;z-h-nZ@RP4RUq8^&I9P{_?Bs3qhz4yzB1x>E8n*m-q5vt~LHcvi+sY9xOoKCq6Ye-%;;& zsPYkca<$;xej7V7rXl~r21O_R&s&sZ^^VSF#1_u#_^Rkt|1M57{n)Y7YG$HxENPgG zsp0od0MLjQVFS=%_uj2dgNX@B(PiK5g)G`@K^70=au8}pXvZtPkZM2(+oUc}q1Is! z3tc}75pMjUa$=0Fs-#5e&QDQ&BaZ^;#+Cs_;Psa&l9YJdkJ{D@sHG)jp}mQCLIyPP zHU*@OYej2`&m<4Yxya6Tcm zJOCmv{!<%Y{P8tYY4-v+W_ta|L=gSQdSSaf^R(0zjrMF8MX?+U@22*TqS%(#8lyDr?REK^OW>PcDK=rxxqG>XNGLRlCf*zp0;GSBJe=w935~Y#O$gVv@dr-GLuku! z$AmRk3mn%O!O~LB!f1YNsz?YF3bEfF;G_4z-PM;MPLhYqVaCo?P0=4^_*6jIt6ysf zn_#=HC_g&3Dyu%PehiW?Lm{BCCDlLqW#H0QYK`P_9qjCzdxV^=%+=fmu*O%ey#=); zfvo~AYive*R*muZDb4hwI*a+`S1DVK0E|;4eJ(-$1>lk=#E$UU$N*j8WGBT(0#MTr z9?UYs08*q$`?5ucJt!P?GSbvu+tSTL?wi+Crt`*8A3w7<`EMTso_i)i-AQRhDgdj| z7xtR~GrP+?GSqAmb?50cwX;t6fEUH{Fx@vs`q>_5B?a7P;tXpRiV>IkyD0g5<9W$d zuLTb?c-oCWvT#9`7m2yJv|^-muw(iCd&JwKv2fs$K1BN}8;!PMDxgwz;XntsnGfe+ z{&4FEHHJ>N&a!NB%Z1vTByOiGx^Zf5c1^f4FV z{L^<@`N^E#G2l*PepSny`?euoRph?P2KTt_0 zfahI5cJnDs?`I)mre7?88N`&RT$gAN0(@fjFZ|Uzu6%J05(V6;7pF+YLEX>vKQWXK zS<1^cHeX)BPchlu5)q ziwQrm6NIwl>}5rJcjo`_Rs@WqJC?tK4<%vBD0+b5Vp?X~%V1wu?!kvFbXMxn>qASiLC0@DT5W z{rf`@P<}$=0U7So^?mS-RNU$)uf4Tgcv>s3<(Zqn?}dT0;F>8UDdLA3T zd4Hb-jw>C@FS{QAN3%j2l#e2(fJ=Op{UEL3J5l&l9c)cBIB?RnUFTI4+9{v@`+{sg z$qQHBF(~|I#sI8toqWl__l!je3R-VIWJ1q!K+k@>wx_#S6;B=5Ln$mIQ6>CmEsXbf zDbk}5P}HwkbO0){FiYQfy$x~4Ufx1cApS~50uvhE5_1GN!MsXL?QX*&>*nGzT9=53 z0H;+3&|||$d=;EOgYQOk1l2oRQX+Ew??Z8zP+5Ph&ON*)NAD%Xnz5dSSc6Nz^*K`w z5Jw8i2j@C{#Eu?SUzn{dT1Ey;G_yRy+T9RRskf70+?^x!jJpk2M$; z38Nhgm;kIIG=0dF=*{wf6GD-7kmlC^dQ6I5?v|;k7LW^OA`_OK;(NDv8{$u@PZpHQ zB%N@>uTL(D0w=^$tN_0H++9qK{!_%LL>H6xm@EJ-`#VOu@g<$JR0*G@V^FEvx69s; zu&2b!?1pKN&iq29yX2~X1(cN+)WPbNr1{Pc-s%FbSZV~96LDlj%A+hdt`xQTI-SIn zt8$uoE#(ycnso^ECXaOp1fZ2=iZxHDI)97X(l%&Y-?5EvLql3J$wtpy)94k`4U>b?HNw1SE(t($l~UoOf~`o3(i-4!l+u z0~o?Hc>rcU|A&fu6YNk^=BC2%5o@I0v)%H|28kkaB1vcpvbZ}@doiYJ1-h!=&6K3; zYE&SalY>=Z3{XZJjetd*m79mhq1^uowB(_TM4xTMvmvXo&DzBpJ>4{AZ#kf5CEi*1 zHv`%!WF?lpma$0}!Y*1syEG|^xlYt5^TICU{Ogx@z1`T!cb7{}JdVZwK=?L9ixFGD z(0{YEsr?(jOud}|ShCg+jkNjK30qlkDMLj9>uH?`fP-Ut6!TiYw(73Wij)a2&_WGQ zetXAf7DLrZi4*PM_7(tD^V53wD^U#St7t>hbNC%u3teZ!KpME)DEtAG0S9}cw_|9@ zg}mr-c7p1ce$eeJJ1Mx9QnZ^zTHCOgifFH`|W7p4bm4zX0e1e)ono7@snr zW%X@e0Vl3N$;K7za%ggjX0k8-h~uqS-4}FA`GLa$W#r;lZk@c?3F_{v&*{pRukXk~ z3N{^>r9^(@-hH4&Tm)(ifH^10}Z@%vEerAJEg1?PU{&k7j~qwuS`l@1>t z8$Ns-7_=Z)b#7_xYZFDRXjTMhC$j?5g8zB@r}^CyA|z{ROY`-PXtAc!iEUf-IOyv_ z)1QZghYkLp*PN25U(*ORk85nm^nlhzU8BSUnQTKqUG*0P+zMOJ5Hdst<)b$m^9A}V z7C-rG&0z`)eS5L6#KMv z6>l>}`Kkp-Vf9VHU%`PR7CU;E`WCOas7-pm7Ewuv2#T*A+~GHbDU-oCp(1f0R2R<* zq%s4nw64*o*EQ83OEm$fH*%?ve}ftk$9UUkwm<|NFq9}$hrr;`K~cQ&xwVaA3vMe# z;NbF^AAMBABp@0NJgk_#3zHZ+0<6<2+70!sAVl=G z5lP6L(6{|(@@xF=H7R*Ol6fJMSj(e)=%CgCc0g0w$0RdjIn%-qSN&Z(O}=bzFa~Uh zjqOPlqH)A$c-nR0;hVh!>)x6~Q+dH_k^HbtAp>BBGq+h!Trer*kt0Le%$7b25EG&l z^7PD8sC|&Wuz7|cn+aN5=z)O&lvD-rjBAb(7G#>Q_& z2wLO16nl)U3)pa^DzEZ{!)fNTXJMyHtHE(PKAy1SxB%Pml5H_N7J$^ba1E{;NCU_i zv|Ol|xV;5YRo6%N{M_6t&DAX19=hP7m5B)KpzRUC0fa->$-papFB6Ey{kZ9c$Msj> zn>kMDENB(8_wFnJ4Jgj(d;(mV=l>&agHCFwxvZFd7hXpJN#aILWXJl5ymNow-|H3w85BBiDTN;iwy~qC9>S~tHv+ARs`=fO7 zY*pJax0Ww|zIAt)+z=D3HE z@v*qhFYSvA=w6!4ryQ;1X%`*r{x^eN!gXQH!`TVyX}33$ToMim&&r&D+m|ULq}Esm zYx4D2Ib0odz9c;+*z8^9IA>*#h2o)9vaA;5pkHAC`pQfu44Aa3EJVHFU5|p;SWYR? z{Un_ygOYL7o|1mlGvIWa&3oU&xr}B`!r7=O=K4?fYC})U!_dF>d1Tb0LrjMv_u+iU zkMJF(p={T@9Ch`XbKHs?qPT!%zojBQU>TD?-qx$XJU`zB^ z9LGN6_LSa66C(LsWWGoEsrl`jI|~f&jfx~58HhCxh)s(zz#J-dt{W3se}lZ%?K8NVaHehmZqoo7PqA0s7#CYiP!BqcG=sYkn8|6mAMcHnJ7&%YlDp; zK!VS()O5QG?z0{a`E(BYp$X;U2@cQid zQQv9?lXy~yd)3>`7|H`$EA%nou-&%GuH4T&GG#n1#l7h@l)}DN`ss6#?uMd~yl;|u z6vwn7L>(sG0V-JB!$HY4h0D;M9Aol0tyr*%!d&*V)Ueb5^SD*`FZvH3nH>=Kxjm{M zV$>-FZ_f>!_=*9O*A5{qZ^t7SocBWeE>ry;P5@G6EoaxwFqN;xNp%n@Mq+<^zHuH= z{@Dwia}!QN@p`3wH|?&YhWcyuJq~cs02e&$%`E;_aI&?01_LQ1o*DI$Dy9{trwo4;_6%rxHRmW_GTP&jl zc`BZ=DmtFy>4d7s8Ve4A%45-_)p1^BalT!Q?~{>7#?&=R(I$05=#dG37B%n>O6g8# znYxO64v%v|q$^p>Kg{OZnJm{#aM)Min&;R!O!m zvr0SLt>Tm@z!ee`@`0VQqwOYz1{9;Q}z{?6>;RD7Swl;$p`F= z=ASTxg!7jr9(1>Td$$p5tAi7Pj_Zx8{fd_#xOC-QZl%qmMs0Af>O=DLov%AXFL>Hb zmQl??#scI&celQVCtTT=lA@YVLHTbkr5oy|Hp44FTBKQA z{x4?N?o&RDu+-+gBQ36CG1sr<1k7k`Z=U~E&gGMHwDHB3D!q-rX$V44W{AC4|U$;>7uE?8%ls1No?vfba?HB z--ek}_~hqDF#;x3-r}Y;4#*#0vqCZGw7tcd=VsZ{M17*^_l^x6>nh(=*;^cruIlsFyYHzLejGn2C`X<`ye#jWt`Yv!fbq^OGO;t;*;wrN z&+q$uGk{CSwm5*F?~#EO%5S5#Cl7(X{$r4`yvM{rq&v~*dtb!1Vx(lQ z*7<~esHU+z@~!Ujj20IReU(O&%n2H<_y;ULalGkiH+XIO50*jNN4<9CGrNZH$@(bN zEE6a>gO~TR=&mKbY4SwaxO9a&ZwTIaWMMb;M~Aw7{%}?bBgK|_E>cxNzQ(Zf+J%Q3 zF9w`=A)Q^nn*koYM#X2Bz%1njpzJ|yxid>T_RP0O{ODeq)6O-dZYe=Bd3)r<6ZW}t z_2Ex$P6Z#XKy6q^mN+VE{*bp{*6r&MAH*V1lh;gZ^2d4k{_Zg?IXc7#qX?#BBwo~t zc6g2iOInw>|sabUaiCzTSk-GcU9p~EmQG{`)-?c4@4>BBk+{7DFWk?N} zQ)#g8FA**`-3`XIQ(|Z>XqqNRjJvD&Z`k;ya4Hb^YSD<{!9=LX%SH*In64=ZR_HpaE$BM#VZed5{il9Pf#%4YqXx8@?@ELEg3Fq<{GuK z9s`}YP@teZc8 z)qhh6pG&ljuj4q)=s}<{WKaqCK*ttYvWqH;^n6L@swMuO6d0_b>az4q7OR|HgB z(255n+l9iuT#%q;CLmvws9IaxVDtD{}F*bGn+Dw(@%+T>qNS=0u z@umG#vWe4oIksKzlyjdS;{r6_i*-0F`ENc2J$(83?U7T@g~s~4>$R;*5$GcqUZnUn zCX>rkbK`2kWqU}`LotE+%DL*wXU#Y*wZBp9Mzn}|QQzyH>pwMnr(yM2GLidd(>dS+ z?HFNXCIrTi$T@w^GkHqFb`7`mDjbZK_F8>LJ4(9$!tyK_cM3|sGT}(J=u#DBgV~IG zoG)%Kyh(m%JA$Mt(->q8=cOABlY|eZm5W8!w{^s|eY)i)obDZhrNiw)W$N#3R^Gpv zrhsX7r(u>Kpj=j2$#X5$cXXqAR9Mzz#av}BujU{eA}pH7d9Qna3ZsaX&mIdH*RdrdfR)L*Bb-R1#@ z0)9P^?-`y@v%bjC{IZ`n+z5pZ+?Tw$|9!-E1Vj2NvvJdoZON1V2Su@l>G=k!wH=JP z-X7JHwwfEWe;SfHFJmmOwlf~QKMs62Necl&Y-=TxnBNROY`69+>myoFueNyGJGi^! zGmzCiJf9efS1}1kSF$h;B6AG4-b$>>v3_XH<5#Zk<~@+Y#8Ng4-;qo}vq6fi)bWSj zIBNQ&S7=2z@4Dk=JDAl}QRgVmt(V8Zw@V`q<}+7@&Kqp!+4c$o_jRoO&o`IOuCmjP zr4P4Vjuh%N#tZJRIZaG0dzTwZBHKs}QimgYsG*X@Pc*{m4g0ewD2TfV43}iz)iD-T zOC24#eO9{coRWCrJo>Ty=1tG=jCOB|$&Wk}8?^^jrEunJw0O!2kzTq`DXR~avKLvj z!JTi(+XIwfX^-FT#;)M{sVj`7Td9nvAS%@Od(D;bz|Q1ve>p7|r>8}^2`Q0~skVOst*z5bNyCOg&@&&``tC}8n~;L1G+LXvR}ChA zb%t#JZmo1k4NfHLzEn(c+DHILuIo}!bd@BCpph!G8G88kwFKIgR__bU%le2%L9H6{ zeV1kh&&At1!~uUgY1D*W;;RXDa2N4298^!=2%hS9dwVs~0)_r$9=HS@VG9N+azz9L zMUw`x-o}M;-&5`f&XtbG`#n|iZf^%GpSsm%xMN$4G@+iRjnn;LR^Ul1T%A^fFJyPq#xlp`R^>%mM;8m!md8yG`#^5oB6aNcK=ix}z|Nrr8 zrBaEMqTI?#W(s9jB7~4V%kCPP*S~^J+b-|lRCD zZ)9-tk2SK$C+16u*^`bdQ+Y5|Ao;8ROmos2LMRj#)FETJvTg46g4yk??>pQU1S`j{ zVl;1UH?U(=PRt`c<86Z0*=L4zG=^MQy8r&yZ?UVCi87w;z7yDeot!%Ew(}Xe`#h5v zNY-sL>M_Mm=&5hIv%u1yFwDrWRpQe2Y$lKfDZ~u>HJfxGHE4dU*_HhW%;1`J12fI< zsNTZSRd9S#&$mF)UyHQe``nVNi6yJ{VOyLoxBRtqDYF*{)Sn{6!^u*JAYBbeaJ*jZ zoT^>};*ZvmWP7oXGDcq{EH2*7=bF31pi1xheHU73Mwsffpy~k0&+TzRCnZ5PA6P+e zmNINVo5Q|*;|0^hDfs;1ZD6%$(Cwo*~fHT^hJ?0BWxc%eAv!cdO{_8mL zir)0B8$rilTy&x2kixonUm1#=JNE!1w-^)VF(~G|4387kb4?V{Ub29Pfuqq|xY(#9 z{cNl*~^ zO%)@Ip8qTsk|UN>-R;3-+d;F;P(Z0+ZA-!Y+G*9V? z9BzD9aB<)Da9O#l+tJ!Bi`c*cM$<$N_d5g{YGBF^9hvHSd)0`6so;N+{_^~yO|(ody@F$FXC;(w4_=%Fy}w1B ze2ZH8>e*<(ZO{$>P#=8zS;1}haAz?g-~lqG!Ns-W;u>3&2S}@xMsITMK~E}8V~4$@ z3!9Q1GGi+saJQl|wi*-rd4TxU?jc3D;s9e~^mD*v!bGlg^@i0*7 zfErhD$n1tml2QnEvKP#|_xT3XkAMzJOYd%ljDf(VfXUMp(BKxzN)#;!dv*j|oxSox zq+Z=Y3_aM@+nTJO_o+?#L;&uJu@Y38D8agQNfCK^{z>XMd&aZV_F|MRDA8R7{KmK} zpA^H<_Y!F;y-l7t4#{&J^;XHo%L1KUg$x%LAlNfOaCATWIAKK?o-^vNC4WU8^jZ=0 zE6Py#9aKxCg?)X{VfLrlas`Jp1#&tCBYi@ZOm4T9!VeDF6W0;;Gz_nsfc;7EuNvYT zL__$4H+b*-vBk0Nk3Ja8mqZ~KfOJR)Q5TL8ga%AXe{Y!$mb|Gu)^D&ob^-)4mvz&p zFOTu8Oj=;bB_xl?iM^6twJH#kbOOez#x1KZAV^jXwxW3U;_sg8p55<;i02a@#oD}o zzWT~Ex8v=&@gC0Czn8Ij0X!LDy$!2YVlfTxG*{nO(3Vx+cRDXDdPoK>hKgjUbZI?{ z9NW{=W3Sqrj!WW*Ki27eA=_^jyVuuXf3Wfktt(CRxZ%|e@gU(9N4bhKEi*#iB`0?l zjvH$U{gOEa+miMx! zU~swR_0s+!jrTjJ>H?c%*On7JbJK>8{E!!2eZB}iwJm-FYUuNO6WGy~-?gX>B0<)t zxyi?2#q_gF0O!y!qJ?RA+B1GvPS`D=Fq;+?G-JI>;YVK)t#-6*Aq!DjQAKHfrv-Ro zPkAqhpm~}0CnEg>pM#d%3j3$-P(MBWHe%ES6CfP-S&1ivou=y#}+)dB&zB zzx)saTl6(M1<5)CLLIUs`4+M;@exY3jkdr8VQA4iGF4-t7n$OELpRz~-7Q7f_-d6( z?JjyOEBi#Z0~(Brg0Y(&EdNejOG=%+CXg4^V^8RV$HC;6-V<1s6Z@D%y8@|asUPUo zXa?rsY_1Na;AFa!@can#YZ;oTNK&<-O#jBFb#yXNW5p2pgaRW;#iuyL{ckaT3>8UI zE_*v+D)%Bas#iDbp*;JQtrrGmwzBlw^*9AsEuYpI%8HXq$o_Dv>}{@Se>*5iF|b+>id;?>(W} z_4teGTL+b6xdsNZPG2UeHEKtN%d*Gc1d0RUJI3Zb-N?6_l_|1(eE7E@9@Oc;i!n4c zc!GEyW@$v}RGH6X3oCtf3>oO56llzYyihe0YnZKQ>{Z)0&SW5sF#vO}&^oV&pV^kE&+&QJI*X{2JYXzU-pxuNAnG>S|NYtx@WZ zhbqaa%2%tLunnWpzteS$u!{*^3sW%-vB1N9wG*>#t>F>z{q+)@sC$*E_GKM??y`~t z<}U6wfA%~ckXzQ7+$c^1H~jTtQiub85T`)nZGTPO`9JCJs_QH>{gQ`(x$JZF)UF8?Pr#j*>0_Kh z;wu*^yKn(IQ0sUrQVxpe`?6_A=C9Y795J}Ogyc(DWXcn`4Sz);MY1&l_eNDK>aJhz zONVn*`LW^zP^9b|Uh#j>aOpzw+33!RhGB~*$-Q2%TIJAkV30--&m`Mh$W>Ekh|OD0gygOLiikS6`@Y}r zv8w2v6gEF7<9!bQm_OPxI!_w8rLtXpn#Rn@=f*G-xR=0u@+vXT>QfxOAD&_pmqnz0 z_3&w&K|TCZY9=7C#(mQKp8RB#DBmV#tW2{i;9++pM_mzKy(iTH_0iBsO;=;>&~>jUW|8| zl24G`R0Jver|t=>*;z2F-RXSkVw_A0{c{T1AD8V|(BFeFVeMSA%nKooDDe!lWWy;fn{Z~kH}jzP<_&r?1Su}n~!;S%TV+#b9ibMZ}{NoS{r^1M;RNz_8wC5Kwc4scA2n(7>& z-?~B$*Y8Rb@W+GGnVPQvJLyRtGZJbD1k9G_FXkl#w8sPt1WozPepx*W-gEebs+B6e zn=Ti+LTd{-?7<+#8W#u(tunzV*PVN%Fu>-Wl(@&2jX z+I(1r(wK|Fzsy^o0IQfVh_R55h!E$F<9@HpVCt`X|M*V^5n_Xnw2V>wUfx~t&d7pJhfi`TuAE&8fCYh!v>HhKoG)ob=d2oKlw3wO>;6bKRq;`{47>YGxO~; zCiS(SHU;kiH*C@B9_R20nELBLB^XP0Ct}jYx7#9vBWK>l|M$2Yyj=bD?MCG+s3*D~ zC_$uJ%L!zE(<0A(KFacudxo733vzs0XqQLUOBmrf+9cGovh64HV)Y9DXaq;Yc1bt% zI?s3{)SjKOxgC^^4@uXOVu8d$uQ%%MXH#bl2_M}zT8$uuj zE^KGD~*-c9*?IHf!ST+BPgCP>IJ#MYjI6^S!O+$ig;Co7-AV}TCs@L(!X~u7iX7A zD0*aLu%bM|uU{+_^W>D{X)V@1D#f4NRp8`p@?4krv zNQ!_aL9$lZ4G8S9nsmrbIcEIZox?m^BPWt&XsJOsdCgtnbL3<~(hhID?D{RdF2rm3 z8J#ouikPYLy3%X&Jn&Q388Mc!GT83y%`-oIw)0qiMK@&E-K{(~GEI=iTHa#w;r zv}L^MWWhV=k~tJusntVJoR6VqZ`vrQw&2YXKdKUYRW6SnBjjEa&qE!Qn8Y`7_!V|I z6aNM$Kkq-vg-K_IomB$0#L?F#TUG*-zA;|Fd&+4yO#bS!QIZP{7>g&}W1qaV9F|U8 z*}JoTCX~1kEB@?{ih3ydb_q%>$T3wRWGD!CgVtq&-@$s4^q0TR?x1eC9z55+(_M$a zXy2z_=Pl4rsXi`SL|w}dSn>uk@%t+kQ`>WV#U{Y&%w`;MOG1*{d8k3)AsDPeI~g%j z2W~UMk;W2e!B`L9j!YQnbbxhX;7Z`Z!bC&EKZ;6nNYC>i1Ny>M zpw6?lLU)}KMdL@}`NyK_HsiIIy59PBHM$5`E-{2PZpNQiyoRdIMNI*-9M?EQ~kR1HlThZy$ z0jBi`-dj}og7t65m-a2yI>E(E%{PHjAX7@MF@D_s zp=mU76#cc?Z~RDqfw=3HvoqKh`rkQp(!b7ddf3j$Yx9qYZuFMa`3)tYq61IQIntjC zjb*62_@CGjylKt(TX*NM*YGa@K)^o+D&&0L_M(xLn?~c-{^7)$3rLezdRY|Iji76S z+tpKGMv-TZMlYgZQnC~^)|37RieCjgW$-&H1#?sW%I6mj?zvW4(202e-Zuygz?;K* zGiXwOM)~Q`kI7*dF4->&2}Zpt!7fwsg#2r3U9|#0R|1;YaBRc?^nRcZ1uO>kElf3C z53hbO(u7Hk(qD$ob)FvF?CEHbZYtsoGo04<>K(khdJdp_>aiRu{{EQSDIA3+wzI=+A`7M{a{F?3E+F)q+glAK2$|bVPfYC zZ%Z_K00leCPI<(7(wP`{Gj0ovB3n|He&`ox^aQ{Y&LNW8DP&m|ubu|nF7`ga09i5G zCJQnirfrWN#kVs`UbKvebr+{l~4eg$C}IypVW; zpx)G+QN*7;Nhl;g4+8f{_P5(TD8F_=;nC!53sq8=Aj27@+IycR>NFMrd=Va6&vZCv zVi`48oZatP-J?KVx^yj8Mhr{>l~0ZkT6B-H8p;y&u<#Q{wkOzVgn}mOSFS{QL#Igm zGX7QulsNfQp#=|H+HpE1zB*P-s*Y}!E+z^8?t&C*l-?s)c#hQ+YtX^`M37DGsmt|0Q7?7k+fXEP0pTTyh-d84ChfEm2~rCd44D^fWYELLH4QxTHlzeam0h-kmVRb zw_C=7Izh4H&RV*VM#UwJH5VJaG4eGZ>;sJQob}|*GkbNcuHr@O-|AGoi~9Om*L=Vu z`Jk!?3O`@6FkOQ8SdM#&?BwybsbJljW|M#Fwy@3K5RZx|@-#K5`EpKyimO_{AN)I` zCmPtf)LSmXH8qLiGh(n++{{0E(bV#-)Ap1?ebHP{LbJzUqoYS;`FwOxPH>BB(98+* z_26MbsWo+2cNyVYwZC%1w98xaSdJLSBY^){XJH(^wx+G4TW`1uobovfhwU`CM`Kgs zEP;y#G=cq`B9`|U!Zzs#e5QTHUD?H=zXMGD1Al&7uIsZ5U;9eP>$I=bJ?(4nQe zTOb=|8?h13r~1r!6geSEE~eVnu+hNLCWBQB*uPHF-W+_bnqE5E%u1?9%&9~SQ$`iq z#3xs{`Qo1o=~r&Tw`}yV!uKZI$T=0?!V5IB6H?W#0c((fEb^rhh6&m-PmCxKNHjHBb3rwR(-vrL82wqkPLYDB)XzesPxe9YIib_3H|eWv}EWbA@F!uvqysV*WB%2M;gc_E!Hzhy@Ue*0M!T6={h!=NLf#m6_e(P zcAz;rl*!Pv4GvU>Wll>TdAPfBBG6#IO4!Ov`qmZTpOiFA?x~sQIwAt1@00{aspW-E z#OltDO&4PB6D?L9Xn9i@-v1B}r57qsESO;#?7PPm1V^X3`PzdnV5p@lFElXmE60R~ z?99P6{q-wEcz!lKekZ3r==dAAtI;tJ1c4%bJ)!|@Srvcq&d+mKc1DL^k1>l>(jZmIxySMn_MimTm3WB zX*81T0TM)WmE?JL{$oJYi-kNvTuj9rPc|i}h=7~W@JSlUc!LKL4r&FgdzaUl;a)iw$)wi=Jd+1^7+1oH6EA|mtFjB8``)bXzp$~1)Q@Y$nTD6P#syt+PN-3IX0A(+p8RhSONq1N|G(x6>L z1f*CUKE3Aw3Lk02z*V5Ab)~EfrM&$Vu+L8ldfhC;o}v~lI9om#qP%>tIeaKARajS3 zFif*evShvCUk1$^>-VS;O}PEBDXFvDT4aets<*m z<-UVqmuS;woc;Acmgl6t55(N@$a-!B$Ws)xeFNdIvux zLFWuT*h%~IOt23=UTM%O@_Zca3?BC`lmRnM$20!aejUMmb9^-;F8!rrKG`<*=W7va zZyOk$I8|%@x&wYtThn0gXBtpR1F5ITDQ+Lzq@ON9vzN^d1~IgZ!&Ee^S?9k80Ugxt zj*r{UI6uFGN|2Z=vJwXYjk1zROU3>kWPHw7d=;&{v!r@niEP6jZW?Z z<73|)o*;>V0hIDE!%Pw=Rc*I6^g_v?K6~88&~T`E89>x^af?$JUB^Q2JOs5x$*Lf9 z`#R((-wFZ~iahXrxZtd<*j!~1w`aX2kvy@iB3PYmuA*e+EgV0#Kdr!cVhoEK)-9m(I{^sknzc9_eATO< zcdpvBQGZp|S}z&pDmhFT0p3C2D**iu^1|fOK)*1dPv!8$(kU3%QP5Sn-wH{n_Lt$S zP?$c*T$dS{y%dz=m510SOkOcG5%bAIh_D@sER8UOlK)|L!xJXUhHb-}Wnx1>Gctj| z&gYYJfQe3%{g4ydjM!X7VlK3QgOGkaoE*#;cIVX65AJ6B znV1mKDst5rRY~8vbD40zPBoxCZRd=RNHUn;<3f}KM%#0ls#OITTpLqJ2Q?WtmvoQ5 zx#e(SUAD9sij;QP4@OXu`wzvv|CehkyCZs|Q%S`7iFC><%^^gFshxpx@|LAGX+PoX zl|(_kiBs*p!muj>AW`#y>vGu#0Q}9R&4u`cz}Ls>E=q#_jD>wd0-OWpC(nLusN%7& z!=XwGOn{rgrJF7K=$55c@(nZEL?i(EJKpAY7`C&}b~D9!?G@?>WLG=z!eRZ5p9p9aqOk*luGl;qyaff;(g21Ff} z4N1&f+aM2jT#pszUN=Dn9Nb;Ln|au5Qw6ApL_f~90MNVr5cs$^y`qGu)Q9+HO@oqX`hww;&N@;r0Y` zH7h`sp&fc%+3Y!;x7;3-DRVj5Oi3`UPjbe@CvX{b+epsb!sQAjV5lj~x3B$mO zFq71W9s_Xo?%`o+3u=n=I7cT-=(bY_cugK&Tuy;I4>dJ(@u)uKzyCIn*VML(ZpYSy z#jD1jRUH*h_V7d|N`LmcIE}_%O=HQe_QcwH~cK0%&+?^corU}=xgVnrk6&d{< zH%aaN@{z1uU$xx{ajS&ZBs^fBT24u)A?Dh8Dt5uB@Jb%EzZUMS1`_?i6~*qBQhUfwZ|Rc7#L}NS z5M~56;4k{~9h|_|jv5;ilqRH)-+#c+Ebv2EI?SStrF_g`eDTh9*v)Ugyjo6c?rwbv zUIZWU`!P@yxC4msRsEGq%;0ypGN8O#=>UhfyIp{?310jo@#gP8Q?GpEu{3y^Tq9hu z)f~_{bzeB2fmdE z5hiKG_SKIeWFBzUZ8>KR&oy`FWlv8q`B8}>=oKAv{+n;(WJ9`+b)bdu??1mb=s2|I zUIgBst}*ab_Vn2ul??G2xv;@vI$dP!tBf?vZZ!Vx@LI{=fyjQZjY@Kg(nrWV&`v2? zDF{opjFnPkfC*hnuVoYWT6clq(2^c%Mm%9UX|Nxa ztmdNZqrRdtrMC>362COnOgi;{Zo{Ji03Op?Y>fXg243QEm>mV*NSJ#{p$%<%@0b2^ z!-#taY{gBZ-Q&|z8ZDVw;$a7i1vg-ngV*`6XBv)>-RI?KEC@} z=3qdS3t-N|Lr&bQjYTg_?F1SmNP^MiKqzZP(WxaH%M2dww_2cA z{-h>W07v=-q!QoowL-T%9R5)$kva(~nL#W~V1#Lky7DX5jqdQUl7D>9x{~nf-RHsp zL|zQ-&HFf>A5&bs+TU`a|MDR&DF%$q0_va%(8&^R9@{7ZNd4tvtaBm^G#POy4+O|# zFqb1}&+I)0-Tlf7kJk!#)mv7)%}3Hn>v# zMt74{0Fo}ayGb`8dDKZJS^#z%=uyqj%cI-{{#i*o zX!@rZtdLBBeS?j{3kaiDsLc?%``GW7h`#kx6nlmzOh^H|5`~P1+3b5zfz68}hE0mn zbpz1H)#R?VaU3%dk8+d}2U8(FT}RuTH%n=yLOyHL73}^U@L@@h`cQf0?e9xqFGsJZ z=EDP(mzd>Ps)f`zI{xulvJ*LPu%UCXcJ(U@IWR;n825u3;N~wl zpmF8%6fW#q9N0%aNbM7y)UEdG1oVOOi^uIoQ)weuCwwycoZ(T_T851LTg`8B%erKh zrky-1ux6=IhzSUf^BYjGCXv>bp|x6eRhw~Ssd|@n#+$u)o)e&ZA0$kqb!;oJn{^aT zCC(47x4z`Xx|vE;$QG4@e&L{KQ&lMOJs6K#%3~I9`Tu+)7yKP`8(B9Wr`mol~9h>Tuu6|+5QTr%d{vM zJGq`g111-2&_xO0(wG~fb5ffY!HDU`2rld~AQFA|1b0VJ-|7Ksvsn{_wWdR?v^G?} z><;F*KQIO(QZiV@(LaC^KP}{U zVPO^6^Fi>w{?zdJIkMat^KhxHUoD+3z)f3<+s8goY0MK0WQ<&TH5<7V}sfa|E!YQI{u| zBrLag&hXEe@2I z7owq|XL+~Xq#Nz1Ng69j933Wy1F53CAL{2!el9Nxrhhy}8!rpibk?>1PW1+g1IvTh zs=ofeb1(!2mz+>h;!2|V52pSZj~ZhI>>O}F18O=g_dFd14+7i;oUeY`t!cyLF6cSJ zS~L8jdyau;`7Tl6_;2+l_gS=XAZeOc@O0?_O2Jd-ezJmFReUkbSZbnww<5F3G%17{ zddBVn+cJwsifSK+o1eMPWkHWK6k%3?7rs~iudl%pEo}yz-W1Xk;3+NIoc{1l!;8u= zv6LmmB(Wy{Uuw#W;^fg`>r^6>%LR>b!6uG@X60?c-!Gc@=h+MY%p#gOI@3yZ%$fjD zv~CI?&WgV@j`c3WDFYkLndgt6m!R;WyVc#&Az zcP>h9k?Qsf+p+%99Syd#{Cbz73D{ZkZu**tvgOP z$)DE|p&mukf#Bgp_f*I0>BwD7*;fvQeOzlq8|olwZNC6My5u-0$oDdSF*ua*!$rl9 zOlMViD8jSDJ72+K0(B_n&&D!@u9F7)pu*QEB_-aKS0unJ?s7+Uu_wy;#E(_%{AQ6s z*)!cMcoV(fLOb%+tK=oHf}zScX9x9wcR>4rPC;cE>P6_5hef*w1sA-L5L1%YKE*M7 z<&R)j6}PHMH_NS!=}H~Fv+W7n)Fe$XS`^d>lpG5*bO(%bnN!b z;gLu`^)tW}#$}XL$GZMtrimqOM`}j5qH^m8pJl+L24xJ9X>%d&J+D#jJAqk^e*M@weXqSkMGIO^eb+0Zdgy5^!V>E1!^qw+Kvs}R{OQ9 zr7`efYBRpyJNK*0qXT}t{B@qu2<{VYse-lQ%m#>6yiY+Y=dD5?NV&4KfoOp@_M3Ld z7oT?^gE_1ca2%jh%W)E&?OD?e)hDfZcz9=5Sazn`*UpP;o&nPb_TbBB|4^q|RTsIa@h zp(jZOTpJOS>Y^iGQ)>MBcTvB2x51?VuIP3^58tpX#_g3n;vt={XhlVLc!m4~>8FhR z1D?v-j3PJT-VO?&UX?q+&5h*9?Gvy=?36t0JlN{^m_E~W)jaooX50e1GL5Jb?}SiMzBD^vcSvnJ?Qss ze|ue+NhO}oW1<`mU>}R5)0z#GJ-)D6Gu{NGG|Im!c1(%Ztkd%n%P-3Gb9hKKzyJT!PUxrlNDfm*J&XF-4JgUk`0JRB zc#*mpEGWPSo3P{TnZgj?)&Y~6n_A|(ao~_PvG28keuf@GoK6ZkGXUy3UobG15~`CR zf`jY(lea$Il;V9Ln(_l3jHP1VW;oSqGI*mBxCG1=SlK`E2d|S^?eS@=bddejvdZ!6 z8V&n}TWUd$&dVs->uM~&{MWjg7|iy-J~p6*Lp#_~++dSJ^8C$pT>#0;GLm9h;Qw9B za?I?ys*Yu4hN3W;wz%ZAL9njWJY+6-(v!e}egeGgJ)2Bn!J`vTkh6dO>OS0I_}M8e z(t_En-#0q-hOfyGYF3Iq`o*-a$7vpE`^Guw=b%JCuIDEN1DA~8qb?Q#i&6G}Vp5vKY_$OX3GO>_vY-s4W* zxqqv9(>QvG^(n|HFT{G>p6P%Iwy{}x;-X5O!i<|$fAEaJ_OwR5tC`2t&i5$7VRsTz zWiwj`e$GbjwL_PG-aGA#k*7A?2mV#jBS@ZFL52E-LCNU~m0z6ibR>yBKSr(HbYA` zZL*Bw?5XPEc+BS`Z9OZ8Zf)3v3bN8xONyRqL!X*rzkXu){sz1y8`UoBr*cdJiGcAV zhh&QBfQS+mx9QN*=q+zQ#0PfiO)i@?DBVZz)sJ}=4n2y=WukD`DP@T7Fe?i1~Yr-SFPUz49JZ8yZOg_!=CE}6a}C3g;NEjltv zHBm{LQwcCcU$9C#{HK7gF*a<2UVILEA)6a&nUtS^(U8{FGrftoEQa?grXxulu7>db zb1pzAQV0=@!)&J1;mit@7CpuV67jq2Po|?RL`=#j$49OLFkLz*p~tvmef188?jHnH z0+eIcNPOL)PoV#!12AM?Uq7Z&Ru!8m24YD$0X z1I;AA)&Uo9Bv1R4Pv}hJ2CW;2+d^haEGH&b@slmXst@3qnv}Qmz9c;;FR2TyK`1|D z#SCRz-|?R1Cfr9MSoww9q9wADXxw`FrM+M7xKom~FZ<$TG=anKMY)p>KF3Cn#@cW& zpA)3APD83BZD+u%NeL#2NedX3=Pn0gzQX=-|Sd6Hp?4<9r7p{O!uGzCd;^Ygv@ z>UL&Rk3K0-4z9S)cQI&P;EY`0GG+h*3jwu%eZEB;1ZMDKy-(`oAD_yv@CrTcnZVJ^p&-H&Zsitq5p&nyHWUhi2r`hGqh9=Du)X6vH z1c;JbnNeKj`6}hu1`o?iuYjilw%4Gv4^mObzrOTybZ&y;x9@~md$kgJEl zZY&*83%7_tI0GV$L7VdL#|`0oa^_NH@k6sNr^`P8!Kq>fn`1hrmlj_k=|R%HGU{zN z5pOMsHqI$L82*uEs^{TjpHELb@+0PUVmGvC)NhCX3!Y_seZMcEU$^!VOjKH28_s+V zdT~@Gb7Q0UkknNU=tcu5KJlp7xFoXh)vh(Jn_qLQ>!N;v_vSM2V=T12niACydNmvc z!k`tvb};#};^?Uh`bdhfho(82p&ou&U_YD@5RaQ*Eoe3G@;S8S%M&6gy!j?zcq<$ZTv)A=N08ulGc6<@i7D%Z{)xHUUI0Il? zT$pK7@cG+y}r*X2S2!-TX{Mc=mH$y9yTz9&)0pd3ohA_DdSfNQ> zh{!}2W)eV_)-BdFBFvZR=pnslF!df?!zTc8oHKbz@bLK#^zl)b{qL-@tOw**wF9P@ z`afR(j_Hi3ms^J}L3PNYcr6I8vHXKP# zku{m2Ok*b8u-(w`envm^zHl^dog)MS_KA-7D1S4$GEpZ}SU#^3_Pu#PA&jGoB|MPT z@)X0ToC#Zu&!UgC;DE7Y5@@Rf7pfUPDHO5ymwm2Hq>(;(5L47P$EIz&U%IXhf7ZY! zTsmI)imFlVPBV%JizikON(kIZ?rVjd`5vlt1CgVfxl3N-i}dEI-s$j!G)D_41{O-3 z;*{n5BUtP!9j2X0&nse3RKr`F6*Zbq7+E5~;m1)nkTCnaGEGq!04gv8FwoYCSsI^F z_HR&;mi(HhXU2BM{N1N2L$|9c#k~>Y+_oUapbiFDXD1NwnkVa&=~#$zVcDbaJ!&WA zEcvr~A!DxV)C054?kGXK?kj9$i|RvY2?i7LlmxF?=V`R!@E=YFGj02)1Rf0fl=$U+ zHZI2WS=ieLKi`l*y;Vd0&3r@7T#}Gwp@ChdLKj(k>cXnKmF^qTP16~l%h5ee?_o%shD&ML&mg$8!aM-NhXpFlK0}SfR%iokGf#cgTT=X`gDMzROs&6vJF+5s(k*IJ|LHg7br*;E@ER9R0rBm4i>gG4fE+?^rfwO-e<3jUE6C6Nvk{PePz_7? zc~|SGZj_!jhz!#Qd*^tL;VGnv`6%M`Dv7v%B=xet@@$JSkj37{h0yZng6CRp((Kb&&H_5Xi?*9P;}+fkh6pa9nWW zr6^Roh9M-4)cWzh8RfxEzsG9(TUERcP-Vcmnow+_%=M|Lg% zr+|)Dx|Qp{d8}myiq*19#Fshq9pg`6LJR9PZFmH7!vA7uY)|*GAP#@m2WgcpFv;Zm zyrB{o@E4QL?%?g%4&o*N!=pwvQ6zimezOQTe)Rs~9J)>cJFfHP zf5MAqYzGRuIL(()&8t{FN79ot4WM>RbR=o)!FPmexB5|}7LgHJKPG!)n`gHPj z1V&Gh^#E$L(Jn)B>XVw3tPT zjYj}av75A0*Ha#df#o$)CTz9esSQYW0l906hbNwu-PlV7-b0aZV(i2Y&0z(q9#|iS zEXtr{k$w!>_=PwR_n~-A+7kq~YbArSi)4Zcs8|48>BT^smKNi29A?{TZG!sxD=~2K z`Bs#ya=98f%@RRgW{ep|G)P}tGBJOh=Q4+la-pztNu@6`SQ-M(Rd|neQ0*3ei4$fW ztL%!v*<+ZL6OQ_w{O3FPP8+P@I7TE|TvxRWD)I?A<2t^UXud65M>IEUHWph4Z7qmQ z3+v;lvAl$xYMV1kUU>k!QV-l}W&_v{R>+&wRCclb&cT>#Yw!X-&5rUC@bR|j)^elOD4&?gs1F&yPbXTCij+?f=PRp=aNIdGFa?WM$5PMqwa7tI#i6QmEQ+L zwqFjo`y<)`1UN7)J#nLGEUP^Htq(W=-S_)_V!q_Y0kKd zQGdeJuRmmK_47!7an-}As#uU=tU)6>9l4j5ItjlXR5bnHDo4_^FO!9Eb^hzAy?#K8p>iflr1M=QN zt^svX*W*DdIi+E2?rywqep3z@AZ5#VXrB&T#_r7-8@k-uUnN<6?hlzV7u39s>N-`A z0zPML>)t7lZRrO8g@680OnXO_H2V}FH?TMDTYXbLG-hE@RHNp!(viT~IYe|_mMu$K-F{_il#_rY$u+TSwad|g;UVx>pWGMnZ7~%xx zHZYS$zS(BbegyO&z`sXbVntjdzo65f3-yU6$^U3uBfwTxLc>G;NJYuxT_`o@BU z2PHeAf~LumZi3nu(|uaZ$2XrkR>l$zotL26fXzp)Wo%Tdm6$j&FbpEz@A_K-nrmyu^~!x@ryc~yy@ zJn9CIz21YauI5B%Jnyz}3MejD4kTbd53(Q{=20tm$IL=`CIS*@2n;sTf&wDBY zVc%PBV;hDWV0neAjOPhQ?}Od-_Gm>e>uq0TOY&45ovU@sWgpdiN@cD-5>Py%6>^pM zg+up?t9R4khtH+2!H#t$LWqqLei--;ErH92Yqe0!mfuu$XDCrWfV=OTN^zYUhk|Ds zSo#!1?Q-S1NFhC+&MB(N*Lg>qG17h=z(2Nk@myZF-1$bp`954f9b^S*=i=u=yf$Y< zv?cTpRKAGY$MBof&R~Ich~)daH}Il8{r~?{67m?@Le)byfa3k!K%=?HM(8w~Blqva zH_1(Ck>$ESYm<=hGxBT8&#v{rh{R|yB~1HXoAY=O&9Bh}y#`b`V6S-V%qwSnkfA%? zuCjUnf7y?!i3;SA=o~ev0S{$w4uzz5)qRZKNVy(ZXjXH(v*L@r?qg~<-L2Ui&O(XVXwujN`^1@7RVdY4#j zv&WS2CW9gFpZ500r-J=-pSB@a_j93b{OA=n0O@e}yDqE zIc2P|%#Q)?bn}`d#w0=su)##q&G9Ckr4n^P5ItlJ@`e^nswuRX)z%7xdTvEtR|-Lq z?{!u8dj56>Ujneji%{XKXSRU9Iv}{U6(pJ?l> zoRV30$$JEO&y4GL{RmjscSsL~W8hAVDFUp|*tPi#ahaFYxmfWcQ$;{(z;tVyZ(rv- zEDomIZ>J_NfKA=NKa>DXhv5>wsVz>`HO&MH{#ynAgsCI^?5|8h*0tZz9oJ|bZuRM? zP19H~Zt~iRDlzMCXJk`WZjDK#k@?3LryKf;8J=hD*kIcLqv{G+%)_Yz=HA9BwU)cz zvkeq;zkk8~nPWXH2|jkMMb#+g!aq_H$uf+7Lhl>0A~WArOU1a~wcPWJF)O@tu4s z?5_wstb2L*RK)P9p#*blWY$mJFm1;N?{C$Vh!k>InxWJNn=^GHN=Mff15qw9jeJMI z7KI%Tjpsfgh@Oz%`ADFrKo^$rud+oK?8i;2w{ak7~Sn(bV z;O%djbA%O=jw;;JasXV#4lah`Z&%Q-G`0x_!pSB(7F=YXFVX-{z7nRP7T|JJdSGr_ zeok1`2QAF7tGZz0Y$yyiu8|mLUe8t9IsdLO=@HTK8LR2G>UM(O#5)ZwB3PX{_Kf?*r#Che5S{3;;kjXDTXZ3j>5MIJwwKs!VNW-mlDN z!~O?)8UD&wYk+Wdg>|T4(1x%YXQ;jx4acSei?T>-x@+_O-qc;Eo`b@!NgVsoCFAblW+Zs*XBeMK4L!} zV@qM38GsgaMlx~u(6QXwl3z|-PKF1lhGprE*|@jR&j=F^f8Whe$po~$T&LJl5hQo< zZGh?f(%ZRkVE0w8Di=q;Qo$l*jv^PSet)_EzFA$H%UfYG?Rof(9mCg$@At?XOJoME zKFB`n|DyU{FJfIz@KTxgq?|>kBIfkeW@;U7wHmPQ$IQVH_C5XVtx{(bJB0WMqrxSy zYTX-(vUfTvgjWmeU&KHMLl7bk){zSC;cHq29v!IP7ol^txVpJ`n^tt4!2uBo#@qhl zk0g)L{N;*&`;h^y{#v%$s!>vfZdQ{z214;*d|Be!{zQFoZmZkYv`EI{e|EX5ZFQk_ zX?nmYtaA_Or>ckflb}LHa_D@qY5QV?xF^%`6N>3HB9gK$5Ch;Z~F z5?`j5Y#KD2A&S)>nK8KO>@pt5kjmZEz_u>shU4dgr6CPfZJ3A)=b`lWLHWz}SNtId zV39uV@e*zu;gnQ2R~7KrF{#4s$EZqmW2XQY@iVSz%e*kybo0>rjnSF%oh$v&I5|D& z0I3D67*@O$KIYh1E6=zU_vmVIPo2OG7{UjXp+@#`5S7{KwibJT-(U>Jr@c0v{nIl& zv3R*_hrFlV)$Xa?vlTMeMwOt?>}eMiKCXr$b1M<|LD{IwvF5u|lWR&*HU3rqWPeut z{jtUb_7@pDBZM$wQ;X6A>QmvJzd=o;SI_MzxbOo*2tPnL(hp;iI@m-iXTsUg-VT~H-k?P1Rz78j4qnN*A^SIMxVRjs0P6f} zb!Anjn^6AqduHD#l=qd_1>n$Pwk&+yAwpi}I&0=Y^T_DeJyzf zgGVg8Y8gEkg^@(c_FVks5AHx>6atvK)R4BWS=fE1VvpVfZQTw_!iSKWZOLO7xNpQ9 z^7g0+shP)A;#lOXc)BRuqHyYklq>i2s7N+Qu`J88sc){ebB{i7YpclwXQ)845wOs51S zEzxtP4o3h?CnMuasl{7oK44tZds}IfZ87(ckO@9Up9xnxa4mP7N$Ct zL3a}}Ob>C9wX>`JWOJt=hjEUjW|)cYEFwnV#~oHV+#MBa4D{SiZ)6?lS{V5GObtWytz5x@}y zZ(aZJ1xb^j>?HqM)qZx;DXjoBKbz&<_=um<#_ouZEF~-L30#_+01t5sJVbW32oMAC zpKCXuOCX6PbH%+kCL+hN$*%Mfz(wVc&}Zhd*aV{(F`;4MKipBk^=p*`%35JSA6QyI z24mx-90&b(fQyOIb)>ZJcbc{?siaASE9=U}ml%wnR{q{ck9n5LFSsdome|hBean+l z?BwW6wr3YO;SUZeZe_XGiwid{zWK|Br)=z=)W7BxlbesNw-0_hSS8{_wyP=hDLdX| z=lMrDNSK}&2`VYOv4+{&{XX-=s=!PQ>1mwP;WnHX;E5Moa|#+fe?D=QA^ZbcpveB@ z|HOQ)KRc|E8cwn72|qi<)b4y~qw_xI4!0{a|ef}c2QVK=bE zg0QTXJ8EoR86{JWSL)qX7vMogI|x;HROpn( zGmNGG?hPYch?eo&{zu5##lnxL!S{aUkhx6sTp5f^|(fqaY|r;Ls| zp!>5SJMt&^oD2Bmu|x`%a6q4U_i386jol(CePW0uAw0j}_ej3tR-GkO=2%j&^M6*$ zq#4F@dk+mVc`Ee9ICi$V62?>ykGg=HX5|fewPwuMMqpJT;=X0f*Y$0jDeQYs?R_1= zo7w9bYjHQd!at-*TTCl&*~F+#IW%MRFxbS(-rwy~sQz14=ijM}z;K(un+|a*$=86e zS|katq&0ZuTzhYMEm=;H_n()l3ST44fEVP~D_jho9P9kemJZn)I4#UhFzG@tDU@lK z&k=|_+*)tIm4!zO9(yP9c1et<+=#jg_n-Xg*4X!TcU-OGq1tT?BeAq%>FD#`4M9m)+&FPjhPjpw+Z#6 zzcvGU({og$TguMU&#z#{fBGW|NHI3R-nZeuEBn32^x*=luQsAc{!fr$zh)nUCURA@!iz-e|CZ)5B;SMJY5&msTW?J2k83y8h* z;Mmxk;Iu#EVK7(R=DVSWN|S%4cUiMNdsGF#L=6M{Rzpvj?;I`Oo(&cHXzlX(FUo?i zG=3dii_+{KHRQsWdarf9e=db!9TLq_QHvk(e?#}n(W!ao)tE#MfOtZfxEA! z31<`aA;d|S4FU&D^K#TQrFm&ZP?A5^?@S-P;)n|Q%0b8aU%aU7VHdW}lYe9TIBOGZ zPPGOvG??EVs(t=&hn`alM3bT-9O*9WYkKQIjRL8#un+16X8g3tK#uXBrpdn_MqIT= zbCEUk7aHTr$T=B{T9T-b`+cU!L$1P+CK04#4O*6i<15I@n z&7XT_+1*j8iJFM|mUSXW@KsmbrD^dR`FyolUexG-SKUO`WA&puH0W_eXhx0yVk43e zH&nNqG~GTj8vkO0_oL6^M6%^HaKBXp!cS7!^>f<pJCCAF$F*W1U?W4Zv?5!`X>j}6H{~#|4mg@|V zg7V7ScM9)1GiyN5AYleN^ccZ&y|F4Q@13cS{tNL%-WO@11xKbIqb z>G3pap_kG1$hv4!BF`NF&b|jn6rRwKC8ZMEkJ?13Rc-cW#o~XO(Q#JeC2mYl?k=a0-Odhk@AE~6y@+PHeBm%?*7-aq zG_X*BW1o@1PPvN&svp`^7@Q*IGD*-=I&TKf^KK^}bRQ2OkE=HOFE*+SG0Uq9YY*t< z*HDQQ0tcFCf`yj6n?8992Si*LEbXS#xNtLIlWTRXsH-N0`3ZBN*&&d?qdsNxDZsVQ zb}gmJ@fk6H?%!|;Sfr>}GZHFU=<=poihYkSFUE~aXIjh)Z@;5in&$tUR~c^E&+MG= zYuY7vFp8;h3=CjUqNs5-_kU?5c`)iw$o(S?uIwVW-qhz;sM=dsj+t*OIK}+&b#Lix zl{{&ByJVF0(OYq03GqPWacccl_803UuRjH4PhtPu4&L_c5lQ9c@`&GY1OnW^r(y+vX;Wi35wD*!YCJy|=dz%Xlx)?ffoa5=p9kw(H zI{A5Ub6_daO5*ZOD*e;#HqYH%yFb7an1J z$Am4jq`c$E_Z)gb%o3)tsNp%I%8qM?e@PHk{qw>#r~rVHZQ2uFVF zQmE(fte&Ny+rnm(*pA*=QfozPlrDSbNk%5g-Pmd?@GSd~1rN$#Gd-RDQkFrTLtp0c zvHEFLoTo+lB8km0lj3;JijT~?1rdT|Z9 zm^#6JoOZD7Q4OXJ(ZJC&oK zxO?82i&lTe8Vixy0-yga{Hl970>A(Dy}eFN58QudE3TiCruiA`M80$yliez&7Wv;X zeWM{DH^n|clfRf7qcJfnn(y*4l(qPL@G#H%s4Rw&;UR61pxCjD zuJZ+xB4uw(`(~O48eV4Kz`gk7G<^j__QMN5x}K0=^;?8lg^s>!Kx9@Zyla^%OV?!C zY=|ejg18nrP`{5t+Mj3SPk4}4c7SmK#CHFBiGqv+j{gra0&m;zJGFMw%6??mWKH{A zNkY^LpZmK~=pONwRU$mH(90TOWDBl`@nQiagL zbA#QlRjDJqYhDB|Ion){@_zJaG1f09(U{{u0_hu`qT%S#y$0u6<=cu>jZ}0mdS&lu z%kG7|s@Sx~4x+mn;Pp21#xuGwD@i?P9=P?J`uP3zslgaZ>WDHEtdIZks6B+WF+?qr zl1wXFZ_OUKbgqHX0@_Od$z1ZC?U9xk{qF}i9|%tp2|RgsEL0-~#=;C-D^~U^)$(h8 zGa&Q94p#f$4$h<9y5%|dhX&@t_f6J4z+)I;fN&%s|1&^LVe0MMbp0D`N=#D%8Vmi8 zH{wl7C@bRvfKhwc-x_i+sRQS55M|;{B%e zwSSuA)zbOt^J|(M+_WtoBnzLZJ)v` z^_BvUcoWorf<1Q3*>gTtbloaj31Z(q(9iX$y665`Ova=qH%YeV{_HuKx$?kO;XnNm zOIGE2(LK=+OMNIW9~NKhDtGcU6uFCFAv!EGyy|KQN*n4)yS4fTMM++UN7#kEEAkR#>G`o!tJNJDk%$=Xd1 z+U?iZoX@9=Wl#0JnqEh1a35ZyiNI5ceyf^5net7!DAV> z)%mqH2{{SDa$0NSQPP3-K(sm}YF;%D@pQ|QajvF9-*J&S;_`v-OvyPNG`7o{B{K{D zVafg|Pyc3RD9$)<5sWgwz=Wq))tLl>J#n@5T#qPz-+6PV%c{@arL!L^Z9)%iQKd^( z%&6S@gn3y2xn*1{@Z8aW#xx0Hf;vxTksYst;+UM?oBPoTZ4zW5i8&z%|ka=Ur zP4m6VCmULEcTqOHL8+?RE0_0_dwjZ&23lsjWwxjqdxD!L@P=OeLUrHD`4AnnE4VuC z{cZq38J2KQL)BL&m6pg+QHW&~8U(Bz0a7zzcoi&3gm=eMn!E$%lF}nnQo00MVh)XX zV6rq5n97V_RwJ>RL-YKmRjaS}$yCFH$5trTf$)xJWw!629XWEa%6KVUaY8%&R z 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 A?*IS* diff --git a/src-tauri/icons/ios/AppIcon-60x60@3x.png b/src-tauri/icons/ios/AppIcon-60x60@3x.png deleted file mode 100644 index ee44251b993fad0c19b6e5ad49810bf85df0ac79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9839 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 Cm+X-M diff --git a/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png deleted file mode 100644 index be6755a0c53f45d0022861ee2ef5143243f43439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4077 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 diff --git a/src-tauri/icons/ios/AppIcon-76x76@2x.png b/src-tauri/icons/ios/AppIcon-76x76@2x.png deleted file mode 100644 index b7b6603c5991b69b961d23901d6463dca21987a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8076 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 PApt1MYsgi}ScLp9SE=%N diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8e095ac3d..2796291da 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -14,13 +14,6 @@ "tauri": { "bundle": { "active": true, - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], "identifier": "com.impierce.dev", "targets": "all", "iOS": { From fd05b5d854ce8e25eff8850a892b738d4f390da8 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 19:49:24 +0800 Subject: [PATCH 57/62] fix: set icon --- src-tauri/tauri.conf.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 2796291da..d3a08c565 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -14,6 +14,9 @@ "tauri": { "bundle": { "active": true, + "icon": [ + "app-icon.png" + ], "identifier": "com.impierce.dev", "targets": "all", "iOS": { From 83211e0e246aa57f7a27216bcbfbbee37383346e Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 4 Oct 2023 20:44:41 +0800 Subject: [PATCH 58/62] WIP --- src-tauri/src/command.rs | 6 +- src-tauri/src/state/reducers/authorization.rs | 55 ++++---- .../src/state/reducers/credential_offer.rs | 30 ++--- src-tauri/tests/tests/qr_code_scanned.rs | 124 +++++++++++++++++- 4 files changed, 168 insertions(+), 47 deletions(-) diff --git a/src-tauri/src/command.rs b/src-tauri/src/command.rs index f919c5cb2..6dc28097c 100644 --- a/src-tauri/src/command.rs +++ b/src-tauri/src/command.rs @@ -23,7 +23,7 @@ pub(crate) async fn handle_action_inner( _app_handle: tauri::AppHandle, app_state: &AppState, ) -> Result<(), String> { - info!("received action `{:?}` with payload `{:?}`", r#type, payload); + println!("received action `{:?}` with payload `{:?}`", r#type, payload); match r#type { ActionType::GetState => { @@ -79,7 +79,7 @@ pub(crate) async fn handle_action_inner( } } ActionType::QrCodeScanned => { - info!("qr code scanned: `{:?}`", payload); + println!("qr code scanned: `{:?}`", payload); let payload = payload.ok_or("unable to read payload")?; let form_urlencoded = payload["form_urlencoded"] @@ -109,7 +109,7 @@ pub(crate) async fn handle_action_inner( .await .ok(); } else { - info!("Unable to parse QR code data"); + println!("Unable to parse QR code data"); }; save_state(app_state).await.ok(); } diff --git a/src-tauri/src/state/reducers/authorization.rs b/src-tauri/src/state/reducers/authorization.rs index a8d76e279..e184d1190 100644 --- a/src-tauri/src/state/reducers/authorization.rs +++ b/src-tauri/src/state/reducers/authorization.rs @@ -3,7 +3,7 @@ use crate::{ state::{actions::Action, user_prompt::CurrentUserPrompt, AppState, Connection}, }; use identity_credential::{credential::Jwt, presentation::Presentation}; -use log::info; +// use log::println; use oid4vc_core::authorization_request::AuthorizationRequestObject; use oid4vc_manager::managers::presentation::create_presentation_submission; use oid4vci::credential_format_profiles::{ @@ -21,7 +21,7 @@ pub enum ConnectionRequest { // Reads the request url from the payload and validates it. pub async fn read_authorization_request(state: &AppState, action: Action) -> anyhow::Result<()> { - info!("read_authorization_request"); + println!("read_authorization_request"); let state_guard = state.managers.lock().await; let provider_manager = &state_guard @@ -36,12 +36,13 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any let payload = action.payload.ok_or(anyhow::anyhow!("unable to read payload"))?; - info!("trying to validate request: {:?}", payload); + println!("trying to validate request: {:?}", payload); if let Result::Ok(siopv2_authorization_request) = provider_manager .validate_request::(serde_json::from_value(payload.clone())?) .await { + println!("||DEBUG|| SIOPv2 request validated"); let redirect_uri = siopv2_authorization_request.redirect_uri.to_string(); let (client_name, logo_uri, connection_url) = @@ -60,8 +61,8 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any .unwrap() .replace(ConnectionRequest::SIOPv2(siopv2_authorization_request.into())); - info!("client_name in credential_offer: {:?}", client_name); - info!("logo_uri in read_authorization_request: {:?}", logo_uri); + println!("client_name in credential_offer: {:?}", client_name); + println!("logo_uri in read_authorization_request: {:?}", logo_uri); state .current_user_prompt @@ -77,8 +78,9 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any .validate_request::(serde_json::from_value(payload.clone())?) .await { + println!("||DEBUG|| OID4VP request validated"); let verifiable_credentials = stronghold_manager.values()?.unwrap(); - info!("verifiable credentials: {:?}", verifiable_credentials); + println!("verifiable credentials: {:?}", verifiable_credentials); let uuids: Vec = oid4vp_authorization_request .extension @@ -97,12 +99,12 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any }) .collect::>>()?; - info!("uuids of VCs that can fulfill the request: {:?}", uuids); + println!("uuids of VCs that can fulfill the request: {:?}", uuids); - let (client_name, logo_uri, _) = get_oid4vp_client_name_and_logo_uri(&oid4vp_authorization_request)?; + let (client_name, logo_uri, _) = get_oid4vp_client_name_and_logo_uri(&oid4vp_authorization_request).unwrap(); - info!("client_name in credential_offer: {:?}", client_name); - info!("logo_uri in read_authorization_request: {:?}", logo_uri); + println!("client_name in credential_offer: {:?}", client_name); + println!("logo_uri in read_authorization_request: {:?}", logo_uri); state .active_connection_request @@ -119,6 +121,7 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any }); } } else { + println!("||DEBUG|| unable to validate request"); return Err(anyhow::anyhow!("unable to validate request")); }; @@ -146,13 +149,13 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti ConnectionRequest::OID4VP(_) => unreachable!(), }; - info!("||DEBUG|| generating response"); + println!("||DEBUG|| generating response"); *state.debug_messages.lock().unwrap() = vec!["generating response".into()]; let response = provider_manager.generate_response(&siopv2_authorization_request, Default::default())?; - info!("||DEBUG|| response generated: {:?}", response); + println!("||DEBUG|| response generated: {:?}", response); if provider_manager.send_response(&response).await.is_err() { - info!("||DEBUG|| failed to send response"); + println!("||DEBUG|| failed to send response"); state .active_connection_request @@ -161,7 +164,7 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti .replace(ConnectionRequest::SIOPv2(siopv2_authorization_request)); return Err(anyhow::anyhow!("failed to send response")); } - info!("||DEBUG|| response successfully sent"); + println!("||DEBUG|| response successfully sent"); let connection_time = chrono::Utc::now().to_rfc3339(); @@ -201,7 +204,7 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti // Sends the authorization response including the verifiable credentials. pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Action) -> anyhow::Result<()> { - info!("handle_presentation_request"); + println!("handle_presentation_request"); let state_guard = state.managers.lock().await; let stronghold_manager = state_guard @@ -217,7 +220,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio let payload = match action.payload { Some(payload) => payload, None => { - info!("||DEBUG|| unable to read payload"); + println!("||DEBUG|| unable to read payload"); *state.debug_messages.lock().unwrap() = vec!["unable to read payload".into()]; return Err(anyhow::anyhow!("unable to read payload")); } @@ -240,7 +243,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio ConnectionRequest::SIOPv2(_) => unreachable!(), }; - info!("||DEBUG|| credential not found"); + println!("||DEBUG|| credential not found"); *state.debug_messages.lock().unwrap() = vec!["credential not found".into()]; let verifiable_credentials: Vec> = stronghold_manager @@ -265,7 +268,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio .collect(), )?; - info!("||DEBUG|| get the subject did"); + println!("||DEBUG|| get the subject did"); *state.debug_messages.lock().unwrap() = vec!["get the subject did".into()]; let subject_did = state .active_profile @@ -289,10 +292,10 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio let verifiable_presentation = presentation_builder.build()?; - info!("||DEBUG|| get the provider_manager"); + println!("||DEBUG|| get the provider_manager"); *state.debug_messages.lock().unwrap() = vec!["get the provider_manager".into()]; - info!("||DEBUG|| generating response"); + println!("||DEBUG|| generating response"); *state.debug_messages.lock().unwrap() = vec!["generating response".into()]; let response = provider_manager.generate_response( &oid4vp_authorization_request, @@ -301,10 +304,10 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio presentation_submission, }, )?; - info!("||DEBUG|| response generated: {:?}", response); + println!("||DEBUG|| response generated: {:?}", response); if provider_manager.send_response(&response).await.is_err() { - info!("||DEBUG|| failed to send response"); + println!("||DEBUG|| failed to send response"); state .active_connection_request .lock() @@ -312,7 +315,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio .replace(ConnectionRequest::OID4VP(oid4vp_authorization_request)); return Err(anyhow::anyhow!("failed to send response")); } - info!("||DEBUG|| response successfully sent"); + println!("||DEBUG|| response successfully sent"); let connection_time = chrono::Utc::now().to_rfc3339(); @@ -357,7 +360,7 @@ fn get_siopv2_client_name_and_logo_uri( let connection_url = siopv2_authorization_request .redirect_uri .domain() - .ok_or(anyhow::anyhow!("unable to get domain from redirect_uri"))? + .unwrap_or_default() .to_string(); // Get the client_name and logo_uri from the client_metadata if it exists. @@ -383,10 +386,12 @@ fn get_siopv2_client_name_and_logo_uri( fn get_oid4vp_client_name_and_logo_uri( oid4vp_authorization_request: &AuthorizationRequestObject, ) -> anyhow::Result<(String, Option, String)> { + println!("redirect: {:#?}", oid4vp_authorization_request.redirect_uri); + let connection_url = oid4vp_authorization_request .redirect_uri .domain() - .ok_or(anyhow::anyhow!("unable to get domain from redirect_uri"))? + .unwrap_or_default() .to_string(); // Get the client_name and logo_uri from the client_metadata if it exists. diff --git a/src-tauri/src/state/reducers/credential_offer.rs b/src-tauri/src/state/reducers/credential_offer.rs index 13327959f..f322555bf 100644 --- a/src-tauri/src/state/reducers/credential_offer.rs +++ b/src-tauri/src/state/reducers/credential_offer.rs @@ -2,7 +2,7 @@ use crate::{ state::{actions::Action, user_prompt::CurrentUserPrompt, AppState}, verifiable_credential_record::VerifiableCredentialRecord, }; -use log::info; +// use log::println; use oid4vci::{ credential_format_profiles::{CredentialFormats, WithCredential}, credential_offer::{CredentialOffer, CredentialOfferQuery, CredentialsObject, Grants}, @@ -13,7 +13,7 @@ use serde_json::json; use uuid::Uuid; pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow::Result<()> { - info!("read_credential_offer"); + println!("read_credential_offer"); let state_guard = state.managers.lock().await; let wallet = &state_guard .identity_manager @@ -29,12 +29,12 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: wallet.get_credential_offer(credential_offer_uri).await? } }; - info!("credential offer: {:?}", credential_offer); + println!("credential offer: {:?}", credential_offer); // The credential offer contains a credential issuer url. let credential_issuer_url = credential_offer.clone().credential_issuer; - info!("credential issuer url: {:?}", credential_issuer_url); + println!("credential issuer url: {:?}", credential_issuer_url); // Get the credential issuer metadata. let credential_issuer_metadata = if credential_offer @@ -50,7 +50,7 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: None }; - info!("credential issuer metadata: {:?}", credential_issuer_metadata); + println!("credential issuer metadata: {:?}", credential_issuer_metadata); // For all credentials by reference, replace them with credentials by value using the CredentialIssuerMetadata. for credential in credential_offer.credentials.iter_mut() { @@ -108,7 +108,7 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: } pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow::Result<()> { - info!("send_credential_request"); + println!("send_credential_request"); let state_guard = state.managers.lock().await; let stronghold_manager = state_guard .stronghold_manager @@ -132,7 +132,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow "no current user prompt found, unable to send credential request" ))?; - info!("current_user_prompt: {:?}", current_user_prompt); + println!("current_user_prompt: {:?}", current_user_prompt); let credential_offer = match current_user_prompt { CurrentUserPrompt::CredentialOffer { credential_offer, .. } => credential_offer, @@ -142,21 +142,21 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow // The credential offer contains a credential issuer url. let credential_issuer_url = credential_offer.credential_issuer; - info!("credential issuer url: {:?}", credential_issuer_url); + println!("credential issuer url: {:?}", credential_issuer_url); // Get the authorization server metadata. let authorization_server_metadata = wallet .get_authorization_server_metadata(credential_issuer_url.clone()) .await?; - info!("authorization server metadata: {:?}", authorization_server_metadata); + println!("authorization server metadata: {:?}", authorization_server_metadata); // Get the credential issuer metadata. let credential_issuer_metadata = wallet .get_credential_issuer_metadata(credential_issuer_url.clone()) .await?; - info!("credential issuer metadata: {:?}", credential_issuer_metadata); + println!("credential issuer metadata: {:?}", credential_issuer_metadata); // Get the credential issuer display. let display = credential_issuer_metadata @@ -183,7 +183,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow }) .collect::>(); - info!("credential_offer_formats: {:?}", credential_offer_formats); + println!("credential_offer_formats: {:?}", credential_offer_formats); // Create a token request with grant_type `pre_authorized_code`. let token_request = match credential_offer.grants { @@ -196,14 +196,14 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow }, None => unreachable!(), }; - info!("token_request: {:?}", token_request); + println!("token_request: {:?}", token_request); // Get an access token. let token_response = wallet .get_access_token(authorization_server_metadata.token_endpoint.unwrap(), token_request) .await?; - info!("token_response: {:?}", token_response); + println!("token_response: {:?}", token_response); let credentials: Vec> = match credential_offer_formats.len() { 0 => vec![], @@ -239,7 +239,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow .collect() } }; - info!("credentials: {:?}", credentials); + println!("credentials: {:?}", credentials); for credential in credentials.into_iter() { let mut verifiable_credential_record = VerifiableCredentialRecord::from(credential); @@ -250,7 +250,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow .parse() .expect("invalid uuid"); - info!("generated hash-key: {:?}", key); + println!("generated hash-key: {:?}", key); // Remove the old credential from the stronghold if it exists. stronghold_manager.remove(key)?; diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index 731f26649..78c9b49f6 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -3,15 +3,131 @@ use crate::common::{ assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}, test_managers, }; +use did_key::{generate, Ed25519KeyPair}; use identity_wallet::{ state::{actions::Action, AppState, Profile}, verifiable_credential_record::VerifiableCredentialRecord, }; -use oid4vci::credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::JwtVcJson; -use oid4vci::credential_format_profiles::CredentialFormats; -use oid4vci::credential_format_profiles::{Credential, WithCredential}; +use jsonwebtoken::{Algorithm, Header}; +use oid4vc_core::{jwt, Subject}; +use oid4vc_manager::methods::key_method::KeySubject; +use oid4vci::credential_format_profiles::{Credential, CredentialFormats, Parameters, WithCredential, WithParameters}; +use oid4vci::credential_offer::{CredentialOffer, CredentialsObject, Grants, PreAuthorizedCode}; +use oid4vci::{ + credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::{self, JwtVcJson}, + VerifiableCredentialJwt, +}; use serde_json::json; -use std::sync::Mutex; +use std::sync::{Arc, Mutex}; +use uuid::Uuid; + +#[tokio::test] +#[serial_test::serial] +async fn test() { + setup_state_file(); + setup_stronghold(); + + // Create a new issuer. + let issuer = KeySubject::from_keypair( + generate::(Some( + "this-is-a-very-UNSAFE-issuer-secret-key".as_bytes().try_into().unwrap(), + )), + None, + ); + let issuer_did = issuer.identifier().unwrap(); + + let mut managers = test_managers(vec![]); + let primary_did = managers + .lock() + .await + .identity_manager + .as_ref() + .unwrap() + .subject + .identifier() + .unwrap(); + + let active_profile = Some(Profile { + name: "Ferris".to_string(), + picture: Some("🦀".to_string()), + theme: Some("system".to_string()), + primary_did: primary_did.clone(), + }); + + // Create a new verifiable credential. + let verifiable_credential = VerifiableCredentialJwt::builder() + .sub(&primary_did) + .iss(&issuer_did) + .iat(0) + .exp(9999999999i64) + .verifiable_credential(serde_json::json!({ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1" + ], + "type": [ + "VerifiableCredential", + "PersonalInformation" + ], + "issuanceDate": "2022-01-01T00:00:00Z", + "issuer": issuer_did, + "credentialSubject": { + "id": primary_did, + "givenName": "Ferris", + "familyName": "Crabman", + "email": "ferris.crabman@crabmail.com", + "birthdate": "1985-05-21" + } + })) + .build() + .unwrap(); + + let jwt = jwt::encode( + Arc::new(issuer), + Header { + alg: Algorithm::EdDSA, + ..Default::default() + }, + &verifiable_credential, + ) + .unwrap(); + + let verifiable_credential_record = + VerifiableCredentialRecord::from(CredentialFormats::::JwtVcJson(Credential { + format: JwtVcJson, + credential: json!(jwt), + })); + + let key: Uuid = verifiable_credential_record + .display_credential + .id + .parse() + .expect("invalid uuid"); + + managers + .lock() + .await + .stronghold_manager + .as_mut() + .unwrap() + .insert(key, json!(verifiable_credential_record).to_string().as_bytes().to_vec()) + .unwrap(); + + assert_state_update( + AppState { + active_profile: Mutex::new(active_profile.clone()), + managers, + ..AppState::default() + }, + vec![Action { + r#type: ActionType::QrCodeScanned, + payload: Some(json!({ + "form_urlencoded": "siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6MksT1XVJXVo8CTpiq9Qit67bP8bSpFBmSKHLTsbXyCAn7T&redirect_uri=http%3A%2F%2F0.0.0.0%3A3000%2Fsiopv2%2Fauth&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%5D%7D%7D%5D%7D&response_mode=direct_post&nonce=n-0S6_WzA2Mj&client_metadata=%7B%22subject_syntax_types_supported%22%3A%5B%22did%3Akey%22%5D%2C%22id_token_signing_alg_values_supported%22%3A%5B%22EdDSA%22%5D%7D", + })), + }], + vec![Some(TransferState::default())], + ).await; +} #[tokio::test] #[serial_test::serial] From cb04c8fe0cf7729777460515fb1ea8c7dc7f79f4 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Fri, 6 Oct 2023 12:12:42 +0800 Subject: [PATCH 59/62] chore: update gitignore --- src-tauri/.gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore index 816efeda6..d3f8afb8e 100644 --- a/src-tauri/.gitignore +++ b/src-tauri/.gitignore @@ -6,5 +6,5 @@ gen/* !gen/apple/ExportOptions.plist !gen/android/app/build.gradle.kts -# # Can be generated through `cargo tauri icon` -# icons/ +# Can be generated through `cargo tauri icon` +icons/ From c5a747e30a22ec870b9f0bfdfff43900fc2a0c19 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Fri, 6 Oct 2023 12:33:34 +0800 Subject: [PATCH 60/62] Revert "WIP" This reverts commit 271f9a03869a698175c8149edc42c944824a51a5. --- src-tauri/src/command.rs | 6 +- src-tauri/src/state/reducers/authorization.rs | 55 ++++----- .../src/state/reducers/credential_offer.rs | 30 ++--- src-tauri/tests/tests/qr_code_scanned.rs | 112 +----------------- 4 files changed, 44 insertions(+), 159 deletions(-) diff --git a/src-tauri/src/command.rs b/src-tauri/src/command.rs index 6dc28097c..f919c5cb2 100644 --- a/src-tauri/src/command.rs +++ b/src-tauri/src/command.rs @@ -23,7 +23,7 @@ pub(crate) async fn handle_action_inner( _app_handle: tauri::AppHandle, app_state: &AppState, ) -> Result<(), String> { - println!("received action `{:?}` with payload `{:?}`", r#type, payload); + info!("received action `{:?}` with payload `{:?}`", r#type, payload); match r#type { ActionType::GetState => { @@ -79,7 +79,7 @@ pub(crate) async fn handle_action_inner( } } ActionType::QrCodeScanned => { - println!("qr code scanned: `{:?}`", payload); + info!("qr code scanned: `{:?}`", payload); let payload = payload.ok_or("unable to read payload")?; let form_urlencoded = payload["form_urlencoded"] @@ -109,7 +109,7 @@ pub(crate) async fn handle_action_inner( .await .ok(); } else { - println!("Unable to parse QR code data"); + info!("Unable to parse QR code data"); }; save_state(app_state).await.ok(); } diff --git a/src-tauri/src/state/reducers/authorization.rs b/src-tauri/src/state/reducers/authorization.rs index e184d1190..a8d76e279 100644 --- a/src-tauri/src/state/reducers/authorization.rs +++ b/src-tauri/src/state/reducers/authorization.rs @@ -3,7 +3,7 @@ use crate::{ state::{actions::Action, user_prompt::CurrentUserPrompt, AppState, Connection}, }; use identity_credential::{credential::Jwt, presentation::Presentation}; -// use log::println; +use log::info; use oid4vc_core::authorization_request::AuthorizationRequestObject; use oid4vc_manager::managers::presentation::create_presentation_submission; use oid4vci::credential_format_profiles::{ @@ -21,7 +21,7 @@ pub enum ConnectionRequest { // Reads the request url from the payload and validates it. pub async fn read_authorization_request(state: &AppState, action: Action) -> anyhow::Result<()> { - println!("read_authorization_request"); + info!("read_authorization_request"); let state_guard = state.managers.lock().await; let provider_manager = &state_guard @@ -36,13 +36,12 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any let payload = action.payload.ok_or(anyhow::anyhow!("unable to read payload"))?; - println!("trying to validate request: {:?}", payload); + info!("trying to validate request: {:?}", payload); if let Result::Ok(siopv2_authorization_request) = provider_manager .validate_request::(serde_json::from_value(payload.clone())?) .await { - println!("||DEBUG|| SIOPv2 request validated"); let redirect_uri = siopv2_authorization_request.redirect_uri.to_string(); let (client_name, logo_uri, connection_url) = @@ -61,8 +60,8 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any .unwrap() .replace(ConnectionRequest::SIOPv2(siopv2_authorization_request.into())); - println!("client_name in credential_offer: {:?}", client_name); - println!("logo_uri in read_authorization_request: {:?}", logo_uri); + info!("client_name in credential_offer: {:?}", client_name); + info!("logo_uri in read_authorization_request: {:?}", logo_uri); state .current_user_prompt @@ -78,9 +77,8 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any .validate_request::(serde_json::from_value(payload.clone())?) .await { - println!("||DEBUG|| OID4VP request validated"); let verifiable_credentials = stronghold_manager.values()?.unwrap(); - println!("verifiable credentials: {:?}", verifiable_credentials); + info!("verifiable credentials: {:?}", verifiable_credentials); let uuids: Vec = oid4vp_authorization_request .extension @@ -99,12 +97,12 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any }) .collect::>>()?; - println!("uuids of VCs that can fulfill the request: {:?}", uuids); + info!("uuids of VCs that can fulfill the request: {:?}", uuids); - let (client_name, logo_uri, _) = get_oid4vp_client_name_and_logo_uri(&oid4vp_authorization_request).unwrap(); + let (client_name, logo_uri, _) = get_oid4vp_client_name_and_logo_uri(&oid4vp_authorization_request)?; - println!("client_name in credential_offer: {:?}", client_name); - println!("logo_uri in read_authorization_request: {:?}", logo_uri); + info!("client_name in credential_offer: {:?}", client_name); + info!("logo_uri in read_authorization_request: {:?}", logo_uri); state .active_connection_request @@ -121,7 +119,6 @@ pub async fn read_authorization_request(state: &AppState, action: Action) -> any }); } } else { - println!("||DEBUG|| unable to validate request"); return Err(anyhow::anyhow!("unable to validate request")); }; @@ -149,13 +146,13 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti ConnectionRequest::OID4VP(_) => unreachable!(), }; - println!("||DEBUG|| generating response"); + info!("||DEBUG|| generating response"); *state.debug_messages.lock().unwrap() = vec!["generating response".into()]; let response = provider_manager.generate_response(&siopv2_authorization_request, Default::default())?; - println!("||DEBUG|| response generated: {:?}", response); + info!("||DEBUG|| response generated: {:?}", response); if provider_manager.send_response(&response).await.is_err() { - println!("||DEBUG|| failed to send response"); + info!("||DEBUG|| failed to send response"); state .active_connection_request @@ -164,7 +161,7 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti .replace(ConnectionRequest::SIOPv2(siopv2_authorization_request)); return Err(anyhow::anyhow!("failed to send response")); } - println!("||DEBUG|| response successfully sent"); + info!("||DEBUG|| response successfully sent"); let connection_time = chrono::Utc::now().to_rfc3339(); @@ -204,7 +201,7 @@ pub async fn handle_siopv2_authorization_request(state: &AppState, _action: Acti // Sends the authorization response including the verifiable credentials. pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Action) -> anyhow::Result<()> { - println!("handle_presentation_request"); + info!("handle_presentation_request"); let state_guard = state.managers.lock().await; let stronghold_manager = state_guard @@ -220,7 +217,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio let payload = match action.payload { Some(payload) => payload, None => { - println!("||DEBUG|| unable to read payload"); + info!("||DEBUG|| unable to read payload"); *state.debug_messages.lock().unwrap() = vec!["unable to read payload".into()]; return Err(anyhow::anyhow!("unable to read payload")); } @@ -243,7 +240,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio ConnectionRequest::SIOPv2(_) => unreachable!(), }; - println!("||DEBUG|| credential not found"); + info!("||DEBUG|| credential not found"); *state.debug_messages.lock().unwrap() = vec!["credential not found".into()]; let verifiable_credentials: Vec> = stronghold_manager @@ -268,7 +265,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio .collect(), )?; - println!("||DEBUG|| get the subject did"); + info!("||DEBUG|| get the subject did"); *state.debug_messages.lock().unwrap() = vec!["get the subject did".into()]; let subject_did = state .active_profile @@ -292,10 +289,10 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio let verifiable_presentation = presentation_builder.build()?; - println!("||DEBUG|| get the provider_manager"); + info!("||DEBUG|| get the provider_manager"); *state.debug_messages.lock().unwrap() = vec!["get the provider_manager".into()]; - println!("||DEBUG|| generating response"); + info!("||DEBUG|| generating response"); *state.debug_messages.lock().unwrap() = vec!["generating response".into()]; let response = provider_manager.generate_response( &oid4vp_authorization_request, @@ -304,10 +301,10 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio presentation_submission, }, )?; - println!("||DEBUG|| response generated: {:?}", response); + info!("||DEBUG|| response generated: {:?}", response); if provider_manager.send_response(&response).await.is_err() { - println!("||DEBUG|| failed to send response"); + info!("||DEBUG|| failed to send response"); state .active_connection_request .lock() @@ -315,7 +312,7 @@ pub async fn handle_oid4vp_authorization_request(state: &AppState, action: Actio .replace(ConnectionRequest::OID4VP(oid4vp_authorization_request)); return Err(anyhow::anyhow!("failed to send response")); } - println!("||DEBUG|| response successfully sent"); + info!("||DEBUG|| response successfully sent"); let connection_time = chrono::Utc::now().to_rfc3339(); @@ -360,7 +357,7 @@ fn get_siopv2_client_name_and_logo_uri( let connection_url = siopv2_authorization_request .redirect_uri .domain() - .unwrap_or_default() + .ok_or(anyhow::anyhow!("unable to get domain from redirect_uri"))? .to_string(); // Get the client_name and logo_uri from the client_metadata if it exists. @@ -386,12 +383,10 @@ fn get_siopv2_client_name_and_logo_uri( fn get_oid4vp_client_name_and_logo_uri( oid4vp_authorization_request: &AuthorizationRequestObject, ) -> anyhow::Result<(String, Option, String)> { - println!("redirect: {:#?}", oid4vp_authorization_request.redirect_uri); - let connection_url = oid4vp_authorization_request .redirect_uri .domain() - .unwrap_or_default() + .ok_or(anyhow::anyhow!("unable to get domain from redirect_uri"))? .to_string(); // Get the client_name and logo_uri from the client_metadata if it exists. diff --git a/src-tauri/src/state/reducers/credential_offer.rs b/src-tauri/src/state/reducers/credential_offer.rs index f322555bf..13327959f 100644 --- a/src-tauri/src/state/reducers/credential_offer.rs +++ b/src-tauri/src/state/reducers/credential_offer.rs @@ -2,7 +2,7 @@ use crate::{ state::{actions::Action, user_prompt::CurrentUserPrompt, AppState}, verifiable_credential_record::VerifiableCredentialRecord, }; -// use log::println; +use log::info; use oid4vci::{ credential_format_profiles::{CredentialFormats, WithCredential}, credential_offer::{CredentialOffer, CredentialOfferQuery, CredentialsObject, Grants}, @@ -13,7 +13,7 @@ use serde_json::json; use uuid::Uuid; pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow::Result<()> { - println!("read_credential_offer"); + info!("read_credential_offer"); let state_guard = state.managers.lock().await; let wallet = &state_guard .identity_manager @@ -29,12 +29,12 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: wallet.get_credential_offer(credential_offer_uri).await? } }; - println!("credential offer: {:?}", credential_offer); + info!("credential offer: {:?}", credential_offer); // The credential offer contains a credential issuer url. let credential_issuer_url = credential_offer.clone().credential_issuer; - println!("credential issuer url: {:?}", credential_issuer_url); + info!("credential issuer url: {:?}", credential_issuer_url); // Get the credential issuer metadata. let credential_issuer_metadata = if credential_offer @@ -50,7 +50,7 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: None }; - println!("credential issuer metadata: {:?}", credential_issuer_metadata); + info!("credential issuer metadata: {:?}", credential_issuer_metadata); // For all credentials by reference, replace them with credentials by value using the CredentialIssuerMetadata. for credential in credential_offer.credentials.iter_mut() { @@ -108,7 +108,7 @@ pub async fn read_credential_offer(state: &AppState, action: Action) -> anyhow:: } pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow::Result<()> { - println!("send_credential_request"); + info!("send_credential_request"); let state_guard = state.managers.lock().await; let stronghold_manager = state_guard .stronghold_manager @@ -132,7 +132,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow "no current user prompt found, unable to send credential request" ))?; - println!("current_user_prompt: {:?}", current_user_prompt); + info!("current_user_prompt: {:?}", current_user_prompt); let credential_offer = match current_user_prompt { CurrentUserPrompt::CredentialOffer { credential_offer, .. } => credential_offer, @@ -142,21 +142,21 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow // The credential offer contains a credential issuer url. let credential_issuer_url = credential_offer.credential_issuer; - println!("credential issuer url: {:?}", credential_issuer_url); + info!("credential issuer url: {:?}", credential_issuer_url); // Get the authorization server metadata. let authorization_server_metadata = wallet .get_authorization_server_metadata(credential_issuer_url.clone()) .await?; - println!("authorization server metadata: {:?}", authorization_server_metadata); + info!("authorization server metadata: {:?}", authorization_server_metadata); // Get the credential issuer metadata. let credential_issuer_metadata = wallet .get_credential_issuer_metadata(credential_issuer_url.clone()) .await?; - println!("credential issuer metadata: {:?}", credential_issuer_metadata); + info!("credential issuer metadata: {:?}", credential_issuer_metadata); // Get the credential issuer display. let display = credential_issuer_metadata @@ -183,7 +183,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow }) .collect::>(); - println!("credential_offer_formats: {:?}", credential_offer_formats); + info!("credential_offer_formats: {:?}", credential_offer_formats); // Create a token request with grant_type `pre_authorized_code`. let token_request = match credential_offer.grants { @@ -196,14 +196,14 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow }, None => unreachable!(), }; - println!("token_request: {:?}", token_request); + info!("token_request: {:?}", token_request); // Get an access token. let token_response = wallet .get_access_token(authorization_server_metadata.token_endpoint.unwrap(), token_request) .await?; - println!("token_response: {:?}", token_response); + info!("token_response: {:?}", token_response); let credentials: Vec> = match credential_offer_formats.len() { 0 => vec![], @@ -239,7 +239,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow .collect() } }; - println!("credentials: {:?}", credentials); + info!("credentials: {:?}", credentials); for credential in credentials.into_iter() { let mut verifiable_credential_record = VerifiableCredentialRecord::from(credential); @@ -250,7 +250,7 @@ pub async fn send_credential_request(state: &AppState, action: Action) -> anyhow .parse() .expect("invalid uuid"); - println!("generated hash-key: {:?}", key); + info!("generated hash-key: {:?}", key); // Remove the old credential from the stronghold if it exists. stronghold_manager.remove(key)?; diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index 78c9b49f6..bf6178772 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -3,7 +3,6 @@ use crate::common::{ assert_state_update::{assert_state_update, setup_state_file, setup_stronghold}, test_managers, }; -use did_key::{generate, Ed25519KeyPair}; use identity_wallet::{ state::{actions::Action, AppState, Profile}, verifiable_credential_record::VerifiableCredentialRecord, @@ -18,116 +17,7 @@ use oid4vci::{ VerifiableCredentialJwt, }; use serde_json::json; -use std::sync::{Arc, Mutex}; -use uuid::Uuid; - -#[tokio::test] -#[serial_test::serial] -async fn test() { - setup_state_file(); - setup_stronghold(); - - // Create a new issuer. - let issuer = KeySubject::from_keypair( - generate::(Some( - "this-is-a-very-UNSAFE-issuer-secret-key".as_bytes().try_into().unwrap(), - )), - None, - ); - let issuer_did = issuer.identifier().unwrap(); - - let mut managers = test_managers(vec![]); - let primary_did = managers - .lock() - .await - .identity_manager - .as_ref() - .unwrap() - .subject - .identifier() - .unwrap(); - - let active_profile = Some(Profile { - name: "Ferris".to_string(), - picture: Some("🦀".to_string()), - theme: Some("system".to_string()), - primary_did: primary_did.clone(), - }); - - // Create a new verifiable credential. - let verifiable_credential = VerifiableCredentialJwt::builder() - .sub(&primary_did) - .iss(&issuer_did) - .iat(0) - .exp(9999999999i64) - .verifiable_credential(serde_json::json!({ - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1" - ], - "type": [ - "VerifiableCredential", - "PersonalInformation" - ], - "issuanceDate": "2022-01-01T00:00:00Z", - "issuer": issuer_did, - "credentialSubject": { - "id": primary_did, - "givenName": "Ferris", - "familyName": "Crabman", - "email": "ferris.crabman@crabmail.com", - "birthdate": "1985-05-21" - } - })) - .build() - .unwrap(); - - let jwt = jwt::encode( - Arc::new(issuer), - Header { - alg: Algorithm::EdDSA, - ..Default::default() - }, - &verifiable_credential, - ) - .unwrap(); - - let verifiable_credential_record = - VerifiableCredentialRecord::from(CredentialFormats::::JwtVcJson(Credential { - format: JwtVcJson, - credential: json!(jwt), - })); - - let key: Uuid = verifiable_credential_record - .display_credential - .id - .parse() - .expect("invalid uuid"); - - managers - .lock() - .await - .stronghold_manager - .as_mut() - .unwrap() - .insert(key, json!(verifiable_credential_record).to_string().as_bytes().to_vec()) - .unwrap(); - - assert_state_update( - AppState { - active_profile: Mutex::new(active_profile.clone()), - managers, - ..AppState::default() - }, - vec![Action { - r#type: ActionType::QrCodeScanned, - payload: Some(json!({ - "form_urlencoded": "siopv2://idtoken?response_type=vp_token&client_id=did%3Akey%3Az6MksT1XVJXVo8CTpiq9Qit67bP8bSpFBmSKHLTsbXyCAn7T&redirect_uri=http%3A%2F%2F0.0.0.0%3A3000%2Fsiopv2%2Fauth&presentation_definition=%7B%22id%22%3A%22Verifiable+Presentation+request+for+sign-on%22%2C%22input_descriptors%22%3A%5B%7B%22id%22%3A%22Request+for+Ferris%27s+Verifiable+Credential%22%2C%22constraints%22%3A%7B%22fields%22%3A%5B%7B%22path%22%3A%5B%22%24.vc.type%22%5D%2C%22filter%22%3A%7B%22type%22%3A%22array%22%2C%22contains%22%3A%7B%22const%22%3A%22PersonalInformation%22%7D%7D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.givenName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.familyName%22%5D%7D%2C%7B%22path%22%3A%5B%22%24.vc.credentialSubject.email%22%5D%7D%5D%7D%7D%5D%7D&response_mode=direct_post&nonce=n-0S6_WzA2Mj&client_metadata=%7B%22subject_syntax_types_supported%22%3A%5B%22did%3Akey%22%5D%2C%22id_token_signing_alg_values_supported%22%3A%5B%22EdDSA%22%5D%7D", - })), - }], - vec![Some(TransferState::default())], - ).await; -} +use std::sync::Mutex; #[tokio::test] #[serial_test::serial] From f704cc28797ecbc20944a9153a70260f8d0ee690 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 18 Oct 2023 11:04:45 +0800 Subject: [PATCH 61/62] fix: rebase cleanup --- src-tauri/src/state/mod.rs | 1 - src-tauri/src/state/reducers/authorization.rs | 1 - src-tauri/tests/tests/mod.rs | 5 +++-- src-tauri/tests/tests/qr_code_scanned.rs | 10 ++-------- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src-tauri/src/state/mod.rs b/src-tauri/src/state/mod.rs index 87a456207..997847dd9 100644 --- a/src-tauri/src/state/mod.rs +++ b/src-tauri/src/state/mod.rs @@ -73,7 +73,6 @@ pub struct Profile { pub primary_did: String, } -#[serde(default)] #[derive(Clone, Serialize, Debug, Deserialize, TS, PartialEq, Default)] #[ts(export)] #[serde(default)] diff --git a/src-tauri/src/state/reducers/authorization.rs b/src-tauri/src/state/reducers/authorization.rs index a8d76e279..22941dd10 100644 --- a/src-tauri/src/state/reducers/authorization.rs +++ b/src-tauri/src/state/reducers/authorization.rs @@ -10,7 +10,6 @@ use oid4vci::credential_format_profiles::{ w3c_verifiable_credentials::jwt_vc_json::JwtVcJson, Credential, CredentialFormats, }; use oid4vp::{evaluate_input, OID4VPUserClaims, OID4VP}; -use serde::Deserialize; use siopv2::SIOPv2; use uuid::Uuid; diff --git a/src-tauri/tests/tests/mod.rs b/src-tauri/tests/tests/mod.rs index daeaa0e93..3be112653 100644 --- a/src-tauri/tests/tests/mod.rs +++ b/src-tauri/tests/tests/mod.rs @@ -105,7 +105,7 @@ mod tests { && fifth.as_rule() == Rule::ident_comb => { let mut first = first.into_inner().next().unwrap().into_inner(); - let (ident, path) = match (first.next(), first.next(), first.next()) { + let (_ident, path) = match (first.next(), first.next(), first.next()) { (Some(ident), Some(path), None) => { let path = path.into_inner().nth(0).unwrap().as_str(); idents.insert(ident.as_str(), path); @@ -128,7 +128,8 @@ mod tests { .as_str(); let mut fifth = fifth.into_inner().next().unwrap().into_inner(); - let (ident2, path2) = match (fifth.next(), fifth.next(), fifth.next()) { + let (_ident2, path2) = match (fifth.next(), fifth.next(), fifth.next()) + { (Some(ident), Some(path), None) => { let path = path.into_inner().nth(0).unwrap().as_str(); idents.insert(ident.as_str(), path); diff --git a/src-tauri/tests/tests/qr_code_scanned.rs b/src-tauri/tests/tests/qr_code_scanned.rs index bf6178772..6688b0f13 100644 --- a/src-tauri/tests/tests/qr_code_scanned.rs +++ b/src-tauri/tests/tests/qr_code_scanned.rs @@ -7,14 +7,8 @@ use identity_wallet::{ state::{actions::Action, AppState, Profile}, verifiable_credential_record::VerifiableCredentialRecord, }; -use jsonwebtoken::{Algorithm, Header}; -use oid4vc_core::{jwt, Subject}; -use oid4vc_manager::methods::key_method::KeySubject; -use oid4vci::credential_format_profiles::{Credential, CredentialFormats, Parameters, WithCredential, WithParameters}; -use oid4vci::credential_offer::{CredentialOffer, CredentialsObject, Grants, PreAuthorizedCode}; -use oid4vci::{ - credential_format_profiles::w3c_verifiable_credentials::jwt_vc_json::{self, JwtVcJson}, - VerifiableCredentialJwt, +use oid4vci::credential_format_profiles::{ + w3c_verifiable_credentials::jwt_vc_json::JwtVcJson, Credential, CredentialFormats, WithCredential, }; use serde_json::json; use std::sync::Mutex; From 920352bb5a0538a51707ba96076ab5e2ded85377 Mon Sep 17 00:00:00 2001 From: nanderstabel Date: Wed, 18 Oct 2023 11:46:55 +0800 Subject: [PATCH 62/62] fix: remove unused dependencies --- src-tauri/Cargo.lock | 1 - src-tauri/Cargo.toml | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index c7b0f8ad9..bd8270138 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2994,7 +2994,6 @@ dependencies = [ "jsonwebtoken", "lazy_static", "log", - "nom", "oid4vc-core", "oid4vc-manager", "oid4vci", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 15ac6aeea..0d6e6c87f 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -55,10 +55,6 @@ uuid = { version = "1.4", features = ["v4", "fast-rng"] } chrono = "0.4" sha256 = "1.4" derivative = "2.2" -nom = "7.1.3" -pest = "2.7" -pest_derive = "2.7" -serde_yaml = "0.9" [dev-dependencies] tauri = { version = "=2.0.0-alpha.15", features = ["rustls-tls", "test"] } @@ -73,6 +69,7 @@ indoc = "2.0" pest = "2.7" pest_derive = "2.7" tokio = { version = "1.26.0", features = ["macros", "process"] } +serde_yaml = "0.9" [features] # this feature is used for production builds or when `devPath` points to the filesystem

sNzlI0YDHn-#50DC0Zd%jQZCfE@IMdMKxL; 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 diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index 03cb30dca0b8eb6d7321c176161a203047784fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2089 zcmV+^2-f$BP)u(fw6g@LL``+z?c1vl?qtsF@wD?9*d?8}+Eov}9qa;TBFZiqFs-VY7u|%x>cp&BL%2VHe?I*l{+nI`>k=R{ z7A?Rm0%gs2BhcQB=52NGUH6JSE^XP1qJ>qWbv+i(i0Mfc9ZxkE|LL!PhW`eEp(&4r zLa15uD(1ZKIO4GwbdpAHc`5QMXX4PhZxQwlAlTK9o`x%!@mNh#&&F9+lMa;G#@0p5 zXbu}LZ~YscXD-3wb|5+!#DX=iW6tu$2>Aj8CP=OjMX=Wg+q7I1%%3Yx!QLP6b_=ta zjy)lU^;p8Xy6aoe^2b4vfm;ApzVR$E`xruf{)7*k63nrUaq+3<+Y02O9Pz>oFl46q z5h*a}7#cV4k^NXOghFDk>YZg`Wx*aFtfXb}TRqYH`21j3--riWa$J~5QXGkw=~}5W ziU9R!j;)y?*$vwTsn3 zSK%u05X;dd!M8`(Q;dD5hSN-lo?^meT4}%_O?mV7gCdK_z#v)FL-5pA;`;s*=sbN% zeEIzP-!X8r0}7qbU9PLX8AIKDav!^A8r(CB5G8%{9P4Ap88i0iP0d8{41|64+Mc6g zRjduWCm$6rFTqe(FPeX=6PBY?ShJsh6b04g$@Uz@^}6Hqu$mNI(f#wJNcGVS8{CX* zI9W6d^xD4TFq1>DE6iE`INW8^ab?FL@mXfnN{yr9)u%|?Ve(x&ZXK&98*3$|HF1{G zCl(6uv2rkGYcTeYwaXoir#(bA#caE06=UYohtbz^Lp04zAxgelzT!zZrca}5VhH&I zXd>oKRtw2z2qlYa;iBte#IEMFLNS}90U5=irWDH9je`wMXRx~;ZHLZ^cA24BH0`#$ z9JKy*Osq_g#*tHABAO2S2I&DDB$NFJv~`L*So3paMmQw3AFapfFE>jus%EpaZ6jC= z`7kq}*=%S#d9Yn&s7Xt_igtzX=cNnls0E(bE{i?4xA#9VZ&dqD;bW@gvo+7v#d<>J{H* zEjo(}#gDnw4tDgSe*JdI8r*(8wf6|~+%TGct)mC;gOwhHW#*hwAh|iMHH_NE*D!Z1 zO(jd}hp+V(Nkf(7Rk*NHbQm58NSkI&Tl3to73N~#Rwqt%Le{&{m}$s|IhBQI+PS?lllH>A zWX=sDcTNck7gSKu4am8jXD>_WVXmU&!Sg?SMdTAEx2XSaJ85}9NMJctty(7GNP%%5 zHt-@vm#N}uAKqm@hBADQII0O0AM2nl$KP|yb(IyN@~x%xFmuHc8#eAj&xIB#Kz^Y6 z)~TBGITSruC9L!P^fY-UHDCkDj2UwiW8AeEC>LMn*(S2J z`IL42vV@OIP%lB=J!SGYpQlp1Y~FT&w*4buOPAb_xvwmtdKk=jd6dxbcs{}`($d^f zl#jxi3Tel@Y`^%!4hrsAv??uQU2|+={*A#XKNu<<^n&vYxX|%Mr=2j@eH+c3z+Y^B%vLY#M%e$OdaaS(#X6 z#N!iMG0Tjv+`ZF)bP|JbOXgManXi69glvg}OoSLWJFIXN7l?E4v#AT$s{ic%RxUcSF{E`Ads2 zd)Xq#9vD5=4Mhrc2@Q@zv=NLeHoJmD=wjD zx~?MjIH2>`MGxHz&ja%$OYp|}<%r4c+2VH6encc85>Nnr3f}f-{^m!&%@jKVBj>`h zQFIhg{HBs@ke5!wZZUk_RD34)A|)9Gd8rfSMuOquS4PFeseNOv>H3{3Knk|@u_|xez*PX`;8;(enrZ@-|4dKm(YI!rpOE| TJ-3MA00000NkvXXu0mjfy=4GL diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png deleted file mode 100644 index 03b72d5f3f762400879035c977132711dc1f2067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3658 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 diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index 0b4f6422e6d47a653c32ba090fc834eb52472bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4670 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 A{Qv*} diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png deleted file mode 100644 index aa2d6b6bc154d060a8c184a459a5ffe6705148de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2366 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 Sr#(dg0000q*aPPkP#( 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 diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index b662c4884171b440bd03ca6bb86a32e3b0d462aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2296 zcmVHkr+-zrsh z+f;FsL|JU(II$BOFG);Hhz;0az-AkaS%=xTmwWD;0h2_^ykTqwDbBu4RYSiofgMD}Te z)kmPAIWLWz`JAS@`zd&LPQX}l9aLCfNfo=dQU1nqiUmTerkV0eM~9k~$Pq=daGG*# zG~UrgH{Li!{yQ^dFq=3lMxhY05f4Ym#2KnR@C4O8x0mA4=&A&hJvylx&y7|K_5SZT z4Ze3)sADb2mDP@iB3g`mj3v)O#MCNM86e3@CO{Fa zZvUGfF@OsUAYWD(6x#a7=c!`PHlY-psd`^4mF;S#EB`#I>4yzqyyFTLH`i(_q3Dli z)x8sfFgxw!x!l7bPLnm?$8{OGx}%B4IC!JQ zLf(-{ia_A(RGGxHx-OP~i`5RzE>O>rW2BgkB60-U@~0PtBB5EY9J5ptc%|df7&+Iw zES90o|mA=zOfoq+z8HGBOZg7lM!@ivg;Cp^Zv+Zf2UrlQdcx7yzM8D3tUy z6hgzYyJY}ECH;RIjZAhM&0M=Fc52CU3V?Mi(%J*NDKIrlqn~sN5Q{S>1v{ysIQczy zC3w8HvYt$A3L04b@t86Lul*G<{7r7d$S=eDs{29cf zI}@l0<{T@Ho$I2-(K{k$P+}tkaF(y5JDt7c`K(9kMr6@1HDO)LPb5=j*2dHq*J-Ag zv&XGTEEuA)$C{<815l>I);&)sCIf}$7rC*!ES89tqM)Xn%6GR=m_Hvp)*%#0HG7+W z^Q81fSb13KP0o^mUn65SS3Xrdxt*d6#_X_3mSDenbz#tB1gTcq^Vv1>d8Wl)5p3lz z9wTc}zI;B{Kf(doxfcpj)xMufcB1~U=w_I!`NHsoG>8CH#lN$&ZeR@fZFt@D- zAD3y_ZIo|3e@7OW<1yy$#QAPAGS_2Vh4ZS{bMiWkU^@PI9p=*<6EWGSR9=s?=8=gMk=1zCIRDo01mrN#I#Nq=c@m0n`8{S zxN-DDF^KToBJ~`8U#s#)<2OLu8=smPoz$c&-R&L_J}0&pr>C!4~VW+5s8i2xt zi@3LJBD*_Z1gQbg&I{qf01#B~k>k>OTk@UaRt1|XMC`=pLybY(4jq7E2)=rMs|X$6 zryE;(<0-PhO>w*BZ18ylzeh9I_4lKaJwF=&03b*N+kEIb z7PeigcJF_V%W#x>G`ze|qhm0n%c0UPb_O0+;Pt7Z1W-Ba3Z>mZ(3qQxxM;zC!SCSA zg3Q>^1qvVd-}2{|Snw|Cm-_zOPQI}zuKYIn9)%JVi?OTeEqZCe73#tJ`QmDFK{7TM~;A>z!)myjI8c&sE1-2FDN{awpKNgg7m4FgHR8Zy!Xgy?zK93H_#^M!S+nU!Kb<3 z+A6jyPPB?vTzTQt$+Ukhn*y8x&&8{B^T%Co7?#(k;Yt$E#*4t6$rhzxlNaur$+i!MNCF>tAZ4TpmS{IgLVD!N8gL;DlZnOVolU66`W}zwD<;9)!HNCq<-i9t4T@ zJFlu#Xja@(r&)3M-Z?ruD3s?$&E0qyzCdTFvBeH(CnhDzL9B#ZAvTu!G6)U z%Lbo8$@<-d%(wPcTG|kkO3SFQoo~(0U26SN;bVcYyh+_;xgWPfva%PO5~v#IZZ;lU znq8Eo@9tCdnF{;+IHnM-yv^_cZV5iP8;|!B#F|Gy56{i`AOAt+heD^d594d}LnL(U Sr#(dg0000aQqi#m3O-Ayvic6!4m+0EU(pT{|$ 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 Rd%XYv002ovPDHLkV1mHvvpN6( diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index ec8eac72bb5af2a133f701e33db8bd60ed3ca2a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11577 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 Rd%XYv002ovPDHLkV1mHvvpN6( diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index c98e5b99ec6074fae716e918078a47a614046dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7573 zcmZA6RZtvEv>@PNAh^5x;O-U}2r{_41=pa12MO-(!Civ8LvVNZ!69fMKpWDgXe$kcUWX{96*-<4;5K3|X(4<5PXlY0ttZ-U27| z?(w|iv7_-B-cfOav2lWqcum(ai2!*vTq)#B2e0WrSJn0{(q7szh?=0DjC;uy4VLAX z-#gbkFWWCts!p5M$tJ$W`>1Df1sRBmCaZYhjgYf6)F8fqdj%A*?|)%4+yW~I@P89X z!M@Lg;Ouv2X}Cf63#``)rGRHF5&?9VF*}!?~;SB3i*$k?I9-(!r9bWnoPH ze@WpaC;K0zm7+rj@z1bQ#{W({lEJ~HA#I- zwC{AO&o;21QCD?meeim$Pm7Yy&D^8IF2ROpPLbs6wPaB?GE%`KN*@o5@bi6M7F@HB zOSBSe@Tg{x3?@ISk^-pEOT{5oo!+m!N6%q7?_FYep@b+FgPDkTi`JZC*;PvFO#3s8 zGgW1F^&yM8+tL;>jOu~935}31{gFP7q~J9_L?vo`TwR2It)4$wuQ9VoygUeesB~q3 z;pZq)by|wE3k!#3#j^u9+u!G?EdDnF6U6x+{4b5C%4HEFV@KtLgZ82q+#1*TTjm>9 z1s2aZJ$XrvXRU1ZZjmEvU(ZNktx60l{uJA(yful0uOHc!4FocT@k1b7ht3%zfZyg& zATme9UwNDFoAocq6tDSlORiVJuYv;NpuHi#IY(D;mFu=}!p;Y)3#an88K=gk}y=L1ZCNhtG{+8?~=riT@RLG^*vD#wcsES z?h`23(M#fmhySXk1j^8Yo6P6{HHX|;t*VAw#$51`NL!q)Ra3b_1+s+a#abc8y$JIa zaBBEs@4Wwvd`-d)gY6U2dZkaoq<^8xRQ6t9(zw4c9!QV3yOEBM^-k@Ep zJLxwZCJq6Av#Ij2+=IXSETkT--%g<|q2I((q~LpN%|vA0{E9px=Isb#xCuW|%3|6V z4hj}iH#COl*Im}oJpk>CB=>ky!`jO~%8In)+m)nT2ZBCBI(YivY=?^FaIEQ(y#Ag{ zI{K)9uqavGr1T_Q&6t%<-Fc5VGeHuZWE9FWtZz#m4PobA{!_F|tZP$fGP`zX*%f}~qS#7q zF~5k#i@btH{Cf?TBw5?j$LNW&RRaf6QPn}zu(qq>CR~_hH3b=pqkZdKQ(Yb(9^=Tq zSSwGd0B z%EK?(T3ldQ?SP#O28I5xc>PwHYA6zy&FY|Ckq01e?`!2fc|JimZCJpu`BE<_$xth2 zx*^TZIEx(RfsjzRMcCi?<2t|K^%(>UxY=dijUlL_n}sKd(1eD)oOZg5<2F9q#8rr4 z2L(_3Ugvz&xMURl=Cb|eQ7@Eax9R>QK?5%0oO&Sfn@P(FuH+TdZW#GjbDz{nbUBG5 zEI=GS0!_Br+rsjilAOs7ep;ajyCX|cb(q9wNT_K~`evu^>=6DH9YFxieAz({xC0qL zvNHSIERL9np*H5{dpXl>wpu_372`3wd92s#)Qb*}naOzi$$5JXO&=)xLVZYtX6DdO zTY2VQo7Pnt0O_c86zRGIbG?>@*iBBJF$?nWg{pYI;M(hi$)XtXQ)$h2j%I)i(F zzKf=|iIamk*A`Bh7I|T3SFSMg#!?wRh#188_z=?!oll_DQCB_O=(!kHcB7QX@fqBo z5q-lIzb!VR4q327-W zI`w>Ez1S`N@m;Le%A+!QgbP2!oMJuKq{<<238;X7m>3p*5w58TeQYSOa3444FzP+UJ z!66gOI-qlZZGH2=gU!18Djj5NinJQ~BK!(_fre|smtt+Jq&Vks5}`M}xW{em@jQDK z4)X6M=J0*1;41gVExo-Cy_;7R8w(^v-skx0ckhzB(X33%#aJEWCH}ik&6rB`Q?jMs z<#a}w6vH$>l@lH{qD6FW6)F`zb&GqF`)r*_VeV}An9MxszN`u%)@l$N{8stVkX>bj z@HSmGZ z`T5ylS=~EGhAUIGO89O>=SIh;mr7UDQedcNsI}c^QcnsT?cx;jq4d1N>D=-3F;h34 zT{wuFc#dP2p1z_@`$v|qR~l^Z`k4H^`Q0;r4A@Jv!l4WoxX@+*?E`fMkEXxMmpV8X za|y+T{J;6E5)9T`e99T^yCuHLwi^`fQW@Tte$d=Vyr zmytd>o0(KEnBOrtDM$zr$Q8VP-LY62;{^0~d_t^c%$=aruVD)!LF4#9TYR9DQ(V}M zhn=NV{ES7v(E>MjK3DMqEqCCvTD?Ja&SZ5)mYBgreHy)C8b6EjYE9nc1G>_Xx2kqs zB4(?ZeEV)&P3rUuK2l%n=e#FFyA2}FN&8pw_{e4EK+Cw-Z@(>HGe`uOB<(G*91wQHCF5;JxS;)FR>7iJ*k57IFFHIj3L-FbAVKZ-3P;F#ZAX6~})q<#4nQ)h9#?h&M%Gb#LxoEMys z%N7mws3)rmk5OhBUz?TLCOas{;tQ(Xk@Aj1^_`a6g(T?k806!68Y^fK#{Wrn#2;DR zHywP34nO4c<%U`A0#8Ss!kR^Zs;;FIjN7G$Z4Hr+Zf}O!T!b9iDK|sYd9dwU9WxU3 zz)5@CEVVK6X9zQ=gzToaGK$=0qJP=k9=Zghy7%fmOC|vyQ>yuVm>J<^jDX;wNP;o1{Ti(>m)g6rA$GG zJf$|>Eyp>$j}4K$q(DYD7*}hW-ZvCeq@LTF^7Gt5Plu2s0@+J85?CxY6>o`ZVDF~( z90N!Cw(ht;EAyvs!_~N-^G&^zY#zX4QF~^JQZuEXkt_TDG9<7yUDd2YEU`P2v{B2R z+8C-_j-f+;p#oK>a+x>!0{ZZuH-HSWOIqNo9{8*zqD_*6!*kgD9I1{6=$f$AA4!yI zq9%^hdu&E@GA^o#qlw5*AtIR(zgn5T7a8-QFBF4Hm?p32{%r+mRruv0VCIhzHXx~( z;G*pHxe33+V_b+8mII0g(9EcGFq0jkW8O~;Qed@kxz)XTwQA*;ed_xh&%VLo+D5~w z@YBApyL_Fjh}36JK6IFPm`5woNzTQE^OVFrRV$O_ckshNUp(G9Z7bnR^9_qGdn>`R z1dX(=qnXbBptuBR4QO!2{Qe$rYqE!?HZkdw&j z`+aQ~ZG?5xa{W)GEMmXgF=jhqDg3pm6|a-NUZzD$tMG?*$K_uKGy#V_T$DgB%$SQl zVWwncCKNmguH{ATZeNnGe)M;=@H}WAFg{BG7YJt=-_mg4)~5V249!GAuK|V_C?t@@ zeY_ca2%4k+<+fI@8OD(kbK;I4osJNLb7ms>Iq;dS>JF!x4uR@mbLNvMnCKV9NnexH z6;8GjiN@6zSoH~8Vmn2^SfYWDJWbJ25J`$mBR3O`P1H;Q{ZNo!@Y-(wXO9+{%oLdV&y zdO0zbg6@rXDxU#aQmw;n+onuK}`F} zDz&t|G?9Lgdf-hMrRUvr%hkl7qDJsY%#PtEDTGnpbM@N4cZ~oULf##pJl4dnr86H{ zeZH3qjiG^w(52IEE_=wUd&wq2J{Gq$uQ|{rPmUF^u%5d)jO)m0yen;Ya7bvTw4D<* zk}(~t{J7JYqGvL)c00%hlPceUSj>6c@ZUsHMqW|)j)Y=2p=ELTb+!+Bm+;Y+2!B0q zqe}juzm=M}aykC*kJrPJz)OGd4Ifb-8em$A4yQcp>O3CK%35U%5gxdmn~U z-~*o|hOY>|rDHUV#3a~#YBWEW`>HZ!B)KjYu(!?r>8?e3c>2^MGt{P$pb5?r6R4;6 zO?k0_RODvYxpEP8pK{#l3cIUx!J|#{jaEra)0pHK`{uFPYc45697-_1`M|3*lK-&B zp3L;HKrS;Ic}`$+ntGU1yxB134(A+?`w4@fh_w=Nr$OLZ2}-e4G=~w*WuTw-?`afD z@Fn;?{Oj#pn}2}+aA!9jSBBC(?_VQ*^$hOQ&V`8C*Rv-FLwW^h%2Jh>MqddW*NMTj z0ln&vEF0+u&!wgDjzpFFBvGxM%U&)3gn$k&V#_mbYM*HG8fep4?h08CVyC9fvpzQO zdbubQ(z-EcRGpVda=U*Q8fT4qIEbtJHb6N;8lw=6Y zIhOI7DM+}|J8afFy{N79!`4b_TFilGvH68-9RwaK*wz`nanlw&IQ{nmi3tr)%1FdW zjz7rp7M%j9m{~;ZeCw{b!=RNP<16z#UB%x)OAUe|35x)2WaNUfLLPMRfK4C?;?z5jChVEq;3rQJVZqB zQAxi+sPeP?x6-8Fnz+0{F8Pt|{ln?6uYR!eaFyaVRr#T{{SSX%YDHp)YnT_Z_mOWb z2@azxW+o}BSKr5u{#64<1Wm3RRQQC9A%FPIg>w4-RXxg(cs$%S>sdV?1#i z8TZ{@Q>OT#KK>d>^pxk9`}?wYEvTWp2wL4gnV|5L?^2zQmT}`)pW_RIZI4c_$32hz)isnWf8kO^Q*XwIDtd&S79IF1-j&_p$}g!QW8)AN;=xH? z;l?;Ue>X}W-+9%{5aivbyMs4{K8x}yIf0G&)uxR>F@89#U@glUec9-B@gW%@HLh1m z(Q>sh(Tc;M7u*lO4ej2~`=xIs)KG8zQ&2uN%Tz3o}TyFVKMOVF3xfzWRNBcG zEnIDone6>YaX$2Hw+qDEh0d!MuG^BxAvGHwBYUxQ?I^uk>PkPXioE)*yEEudiT5&T zMp9riEsSb~g!PKG>UFxC??Cb`-GL%E7C%dZqjVMRQPYW*h^3itb`~`)7|^{o=Soe? z8oV#KZ}NMZ=;uXgF}5S`Cp%;XN<5D}0LG7^^+uXwq(Af9LkqouY?0kRL&njnQqSuR z?G0o8TKCYu*th*il&4}MSOdqj9_dL1=p}#makphj*@%jnJlw>M`_^=V^T5}(*t^@! zfRnv|E@O06t&8Y5<98>Xrr&o(#$yC9wy7X1(|$M}qIimM7HJgdEppCTC2hIp?+yQEohkutFQ(=0%cQysuGmq_ChOizD!fc}gua?r85=ns zWRoDABPvYgsCKEYLEzvm8?4xeyx zzOFOPP*E>!KpAasuJ&*~f0VB>b4+ihzW#iS1>9<;AAo;Ek7+t|7OYQWw$3Jp1Jf7$3}#q5$oJIn=r=Rw3eMw(d1dCy^9A4zfv zl6dO!I^Db8jk3f|O-JQj|sSed9m&fWO1F+0?kCrQ?zp z!Inr*5JqpKY5gXYHCHIYx3z-^cUC;gRTaLS##4^%Z?Q*y%90j`zaAN*9gUOzu4&;& zB<`h(ILBErGu}v>Cjy2U#HfT8*sQYUc8!dX@LEGA;CyFvzL-~K@H`<0O&;`UXKeH8 ze&z1&Na_`DFq*r-ud6HwElB@K;|QjAk- zI7~pNGspyR-TX<+D-!Swc;s%dUN{-nkpt&S_l_fSy&2!9$W`2o2-B_Hc~gRu&yFl9 z1YED10#lph7Q=CBH?ypg0&mdL-|f2-o|rY>xrZSXABO>%d{0GZ1vQEKQeXL*(x4W^ ziyCmaLD*St$ZL1)dZM_(s^kFwJ$*FGiSa<1O4ZAgl5KFiIJz5o@i;e0EX?FPyf5wG zZ%RE7wp&+0*8P4b-(2n&gB@6YO-7-viPJC%KcG>P-lq0v8CAfWza3gQnZ}A)W*f)H zWGvV#t^1k>zo?WnH$KhpV5-`*v!6WgE%1YoCV!rcRF@6b(_<3-@urA)#5)@rsk!6F zal{xUMS&cKEM2o!VCsHR9PVetmu*-&B?z?h{l`OC>C-a(+zP8ZEKTSMuA$*3zEDx( zUoN4}2PV`O{AoNm9_&zme2%ZIq;z(uH?CHHqVq<>v3f4QhjY9jNYayYA9h_W8aMh- z*RA40JhvxwFjP9MqJo4izU!%~OwR$_fa=n@XYnvrgdc!~XJa|-0o?hN(hL=!XghSc zQ8taFv`y5^o4mqZMcUy2QCZ*tI zyt-ij7!nX11Wzp~@fNy1%u`O1a(oGQ;#u{Pk5e_D=r}qcN&fzh0WU6JpPpTich)3v z$bt^O^77v2Ty8atplpz5-EGB|+S+1*<$Y)k7u6@(Q{`DxHK`P*Y{qUhpGxuCmLz#@ zjac>X>3D1we>){+K@Z;SYM^EDrZdY6M@@CsOcjQONA!MQ{Ku^Tc^MVyTB(o0{|7|+hu8oB diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index afe2053388c2b363122add9c841dbb84b14c7cf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18330 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 Ug0)i_c*+ffr>mdKI;Vst0BJ0)q5uE@ diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index c98e5b99ec6074fae716e918078a47a614046dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7573 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 diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index c383ddfe3ce2cbac181842ae28ce178505d72c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10107 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