530 lines
74 KiB
Rust
530 lines
74 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use log::debug;
|
|
use sdk_client::api::{
|
|
create_login_transaction, create_pairing_transaction, dump_device, dump_message_cache,
|
|
dump_wallet, encrypt_with_key, encrypt_with_new_key, get_outputs, login, pair_device,
|
|
parse_network_msg, reset_device, reset_message_cache, restore_device,
|
|
restore_device_from_sp_wallet, set_message_cache, setup,
|
|
};
|
|
use sdk_common::network::{
|
|
AnkNetworkMsg, CachedMessage, CachedMessageStatus, CipherMessage, NewTxMessage, TrustedChannel,
|
|
};
|
|
use sdk_common::sp_client::bitcoin::consensus::deserialize;
|
|
use sdk_common::sp_client::bitcoin::hex::FromHex;
|
|
use sdk_common::sp_client::bitcoin::secp256k1::PublicKey;
|
|
use sdk_common::sp_client::bitcoin::{OutPoint, ScriptBuf, Transaction};
|
|
use sdk_common::sp_client::silentpayments::utils::receiving::{
|
|
calculate_tweak_data, get_pubkey_from_input,
|
|
};
|
|
use sdk_common::sp_client::spclient::{OutputSpendStatus, OwnedOutput, SpWallet};
|
|
use serde_json;
|
|
|
|
use tsify::JsValueSerdeExt;
|
|
use wasm_bindgen_test::*;
|
|
|
|
wasm_bindgen_test_configure!(run_in_browser);
|
|
|
|
// We're using alice and bob for clarity, but it's important to remember that here Alice and Bob are the same person
|
|
const ALICE_START_WALLET: &str = "{\"client\":{\"network\":\"regtest\",\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]}},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const ALICE_CHALLENGE_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292\"}},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:2\":{\"blockheight\":0,\"tweak\":\"e3e21d551e933199f8c977bc0362616bdfb128da7ca9728bd7254977541c39cc\",\"amount\":3936897,\"script\":\"5120df3af55a63bd056c5d6d09f47a3a19c382d938c08db8bc41a59c5235970209ad\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:1\":{\"blockheight\":0,\"tweak\":\"7c84a3074c18c23a65eceaca49a327989ef6e7240e0e080421afb80f06906d73\",\"amount\":306,\"script\":\"5120eb78084d7a2ccbdb7eb7e9bba7cf875c4e54a5aba0beac57c5d3e41133bd8fdd\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const ALICE_ANSWER_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292\"}},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:1\":{\"blockheight\":0,\"tweak\":\"7c84a3074c18c23a65eceaca49a327989ef6e7240e0e080421afb80f06906d73\",\"amount\":306,\"script\":\"5120eb78084d7a2ccbdb7eb7e9bba7cf875c4e54a5aba0beac57c5d3e41133bd8fdd\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:2\":{\"blockheight\":0,\"tweak\":\"e3e21d551e933199f8c977bc0362616bdfb128da7ca9728bd7254977541c39cc\",\"amount\":3936897,\"script\":\"5120df3af55a63bd056c5d6d09f47a3a19c382d938c08db8bc41a59c5235970209ad\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\":{\"blockheight\":0,\"tweak\":\"6e5c1d4690b9ff4fa26e5185ada25af5c2987650e629a518db8a43fdaad7a26c\",\"amount\":349,\"script\":\"512088ac90e180c87b7fa6aa33db4c72a8620cd08fda3ba1c71430b904eb068c587f\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const ALICE_LOGIN_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:1\":{\"blockheight\":0,\"tweak\":\"7c84a3074c18c23a65eceaca49a327989ef6e7240e0e080421afb80f06906d73\",\"amount\":306,\"script\":\"5120eb78084d7a2ccbdb7eb7e9bba7cf875c4e54a5aba0beac57c5d3e41133bd8fdd\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:2\":{\"blockheight\":0,\"tweak\":\"e3e21d551e933199f8c977bc0362616bdfb128da7ca9728bd7254977541c39cc\",\"amount\":3936897,\"script\":\"5120df3af55a63bd056c5d6d09f47a3a19c382d938c08db8bc41a59c5235970209ad\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\":{\"blockheight\":0,\"tweak\":\"6e5c1d4690b9ff4fa26e5185ada25af5c2987650e629a518db8a43fdaad7a26c\",\"amount\":349,\"script\":\"512088ac90e180c87b7fa6aa33db4c72a8620cd08fda3ba1c71430b904eb068c587f\",\"label\":null,\"spend_status\":\"Unspent\"},\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292\"}}}},\"tx_history\":[]}";
|
|
const ALICE_PAIRED_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:1\":{\"blockheight\":0,\"tweak\":\"7c84a3074c18c23a65eceaca49a327989ef6e7240e0e080421afb80f06906d73\",\"amount\":306,\"script\":\"5120eb78084d7a2ccbdb7eb7e9bba7cf875c4e54a5aba0beac57c5d3e41133bd8fdd\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:2\":{\"blockheight\":0,\"tweak\":\"e3e21d551e933199f8c977bc0362616bdfb128da7ca9728bd7254977541c39cc\",\"amount\":3936897,\"script\":\"5120df3af55a63bd056c5d6d09f47a3a19c382d938c08db8bc41a59c5235970209ad\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e34824b0de3f00416caf295dd919fd695404c34334a36b9e7b81917c64fc9701\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\":{\"blockheight\":0,\"tweak\":\"6e5c1d4690b9ff4fa26e5185ada25af5c2987650e629a518db8a43fdaad7a26c\",\"amount\":349,\"script\":\"512088ac90e180c87b7fa6aa33db4c72a8620cd08fda3ba1c71430b904eb068c587f\",\"label\":null,\"spend_status\":\"Unspent\"},\"e34824b0de3f00416caf295dd919fd695404c34334a36b9e7b81917c64fc9701:2\":{\"blockheight\":0,\"tweak\":\"8a1c96e8c723fd6ca0bb5e02fe59e0f87e1e7ef22399dc1c20273f90b8ff4488\",\"amount\":3935151,\"script\":\"51207d4a9230b989b8ea963701b985a1b5b9741c3d79db9fb78ca01b2c21c522dfb7\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"},\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292\"}},\"e34824b0de3f00416caf295dd919fd695404c34334a36b9e7b81917c64fc9701:1\":{\"blockheight\":0,\"tweak\":\"624024a2506e52d6be8266c89cbe6936a556c076f814bb9f38a484a8cb426a0c\",\"amount\":306,\"script\":\"5120f53d418e01044021f4da574e67cb367e31c9e97ab9a1bc75be3879f41733ef70\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const BOB_START_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const BOB_CHALLENGE_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const BOB_ANSWER_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":{\"Spent\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:1\":{\"blockheight\":0,\"tweak\":\"f0ad83734cdc7d73575e5a32651390cf30b92cc7e44cf94ec37da46900ecaf71\",\"amount\":654,\"script\":\"5120230cc1e85829be238e666f469653cbc2f1c0e3675a9bf33e1d1f91115f5dd306\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const BOB_LOGIN_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"93722ea2fb9b74954210b4cdd1360e280b7ff1bc156d6b75f847e62411c588fb:0\":{\"blockheight\":0,\"tweak\":\"da5e3aa2378e3a257f99eb1e0ae4c672916f6a2f32a8ed9a8e146f2074da981b\",\"amount\":443,\"script\":\"51209eb9e950127b6a7d81668f25b4d5b164b42dafe59ce40b80e6c489ec983540d7\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":{\"Spent\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:1\":{\"blockheight\":0,\"tweak\":\"f0ad83734cdc7d73575e5a32651390cf30b92cc7e44cf94ec37da46900ecaf71\",\"amount\":654,\"script\":\"5120230cc1e85829be238e666f469653cbc2f1c0e3675a9bf33e1d1f91115f5dd306\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"},\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const BOB_PAIRED_WALLET: &str = "{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:1\":{\"blockheight\":0,\"tweak\":\"f0ad83734cdc7d73575e5a32651390cf30b92cc7e44cf94ec37da46900ecaf71\",\"amount\":654,\"script\":\"5120230cc1e85829be238e666f469653cbc2f1c0e3675a9bf33e1d1f91115f5dd306\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":{\"Spent\":\"a70e0a70c4df32e9e2bde88b9623eead5e24f25260ecb14252f0f0dd3094164a\"}},\"93722ea2fb9b74954210b4cdd1360e280b7ff1bc156d6b75f847e62411c588fb:0\":{\"blockheight\":0,\"tweak\":\"da5e3aa2378e3a257f99eb1e0ae4c672916f6a2f32a8ed9a8e146f2074da981b\",\"amount\":443,\"script\":\"51209eb9e950127b6a7d81668f25b4d5b164b42dafe59ce40b80e6c489ec983540d7\",\"label\":null,\"spend_status\":{\"Spent\":\"a70e0a70c4df32e9e2bde88b9623eead5e24f25260ecb14252f0f0dd3094164a\"}},\"e34824b0de3f00416caf295dd919fd695404c34334a36b9e7b81917c64fc9701:0\":{\"blockheight\":0,\"tweak\":\"49ab242529118b90ee3db481f7f979588bea59abaf71f6fdb1326156ec95d1f9\",\"amount\":1200,\"script\":\"51204d4dafb5ba432c6ecffc2db7965c901b20312e1beb08132ef9893073e0cbb1bd\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":{\"Spent\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f\"}},\"a70e0a70c4df32e9e2bde88b9623eead5e24f25260ecb14252f0f0dd3094164a:1\":{\"blockheight\":0,\"tweak\":\"70265572d5f239fb96022c48c49ba73dc0c544cfe4a2a77900aae12476258e7c\",\"amount\":191,\"script\":\"5120e3c9e3a1a606214c0b2138efe90bf394a92f3210062899ad11e58b35dbf12d9d\",\"label\":null,\"spend_status\":\"Unspent\"},\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":{\"Spent\":\"a70e0a70c4df32e9e2bde88b9623eead5e24f25260ecb14252f0f0dd3094164a\"}},\"a70e0a70c4df32e9e2bde88b9623eead5e24f25260ecb14252f0f0dd3094164a:2\":{\"blockheight\":0,\"tweak\":\"dc37abf37053e241d71f6c401b056d8e6f944f06811daa18494387001f20faed\",\"amount\":99895946,\"script\":\"512050de7190c8b7dd4d6268e716f89a9be001674b8779574bed42be53fa02531c68\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"}}},\"tx_history\":[]}";
|
|
const ALICE_SPK: &str = "51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1";
|
|
const REVOKATION_OUTPUT: &str =
|
|
"3dd51588af6cc2e4ff8e405fd2620f19c8f4e09e05692ad57a9208a061687295:3";
|
|
const ALICE_CHALLENGE_CACHE: &str = "{\"id\":589363040,\"status\":\"SentWaitingConfirmation\",\"ciphertext\":\"756bcdca605b478fd7b27076b3c770e0cd2edaa2d52d817b19b7070b404680384546139dc9a5a88fd5389095e72f60b07ad0e279dc33a51132ccacc8013717645c7055cec0eaefa1999ba7edfc62d62fa84ada991677a389014f7ba02ec1d9d144df3f4205624a6fcd1d7d35bc53a94de06be0f9a3d435de76e3b00d56a7fd62404db7c9db60d6649133bbc1e37fb3cedb271b1ea682fa02eff88b6edc2790a08550dd049030da2f14247f777757414dd9890535021ee633df7bfd12ab\",\"plaintext\":[\"TEST\"],\"commited_in\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\",\"tied_by\":1,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":null,\"timestamp\":1722020264716,\"error\":null}";
|
|
const ALICE_ANSWER_CACHE: &str = "{\"id\":589363040,\"status\":\"MustSpendConfirmation\",\"ciphertext\":\"756bcdca605b478fd7b27076b3c770e0cd2edaa2d52d817b19b7070b404680384546139dc9a5a88fd5389095e72f60b07ad0e279dc33a51132ccacc8013717645c7055cec0eaefa1999ba7edfc62d62fa84ada991677a389014f7ba02ec1d9d144df3f4205624a6fcd1d7d35bc53a94de06be0f9a3d435de76e3b00d56a7fd62404db7c9db60d6649133bbc1e37fb3cedb271b1ea682fa02eff88b6edc2790a08550dd049030da2f14247f777757414dd9890535021ee633df7bfd12ab\",\"plaintext\":[\"TEST\"],\"commited_in\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\",\"tied_by\":1,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\",\"timestamp\":1722020264716,\"error\":null}";
|
|
const ALICE_FINAL_CACHE: &str = "{\"id\":589363040,\"status\":\"Trusted\",\"ciphertext\":\"756bcdca605b478fd7b27076b3c770e0cd2edaa2d52d817b19b7070b404680384546139dc9a5a88fd5389095e72f60b07ad0e279dc33a51132ccacc8013717645c7055cec0eaefa1999ba7edfc62d62fa84ada991677a389014f7ba02ec1d9d144df3f4205624a6fcd1d7d35bc53a94de06be0f9a3d435de76e3b00d56a7fd62404db7c9db60d6649133bbc1e37fb3cedb271b1ea682fa02eff88b6edc2790a08550dd049030da2f14247f777757414dd9890535021ee633df7bfd12ab\",\"plaintext\":[\"TEST\"],\"commited_in\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\",\"tied_by\":1,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\",\"timestamp\":1722020264716,\"error\":null}";
|
|
// const ALICE_PAIRING_CACHE: &str = "{\"id\":1283337801,\"status\":\"Pairing\",\"ciphertext\":null,\"plaintext\":[\"PAIRING\"],\"commited_in\":\"d5edbf1f60ae4fd7d698626b44ed1e85edddf65b45f62e5f82928a9e12759db9:0\",\"tied_by\":1,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":\"57ca073676fa6130397ce1e4738278952483cee943daa1664b9a1807d4700066:0\",\"timestamp\":1720966687785,\"error\":null}";
|
|
const BOB_CHALLENGE_CACHE: &str = "{\"id\":1777910913,\"status\":\"ReceivedMustConfirm\",\"ciphertext\":null,\"plaintext\":[\"TEST\"],\"commited_in\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\",\"tied_by\":null,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":null,\"timestamp\":1722020264775,\"error\":null}";
|
|
const BOB_ANSWER_CACHE: &str = "{\"id\":1777910913,\"status\":\"ReceivedMustConfirm\",\"ciphertext\":null,\"plaintext\":[\"TEST\"],\"commited_in\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\",\"tied_by\":null,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\",\"timestamp\":1722020264775,\"error\":null}";
|
|
const BOB_FINAL_CACHE: &str = "{\"id\":1777910913,\"status\":\"Trusted\",\"ciphertext\":null,\"plaintext\":[\"TEST\"],\"commited_in\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\",\"tied_by\":null,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\",\"timestamp\":1722020264775,\"error\":null}";
|
|
// const BOB_PAIRING_CACHE: &str = "{\"id\":2639151119,\"status\":\"Pairing\",\"ciphertext\":null,\"plaintext\":[\"PAIRING\"],\"commited_in\":\"6525a5487853e13a99b94302a1bbc94601ae91a0129cfd39ea4b2c32a441eef7:0\",\"tied_by\":3,\"commitment\":\"d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"5a28562161f939bf77983df807dd914e73f02ea67a21ed976d214452887ae43e\",\"key\":null,\"confirmed_by\":\"57ca073676fa6130397ce1e4738278952483cee943daa1664b9a1807d4700066:0\",\"timestamp\":1721315780531,\"error\":null}";
|
|
|
|
const BOB_PAIRING_CACHE: &str = "[{\"id\":2853916441,\"status\":\"Pairing\",\"ciphertext\":null,\"plaintext\":[\"PAIRING\"],\"commited_in\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:0\",\"tied_by\":null,\"commitment\":\"7f340cd5f070a4bd8d16077214a0488e43bd41d64d8b2b39ab0fc016c1093eba\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"a86c30250a8e6a8dc9581b3ab2dacafda6446f6c65f4debe124f5870b6796ea1\",\"key\":null,\"confirmed_by\":null,\"timestamp\":1722436062445,\"error\":null}, {\"id\":1045548533,\"status\":\"Closed\",\"ciphertext\":\"bd2acbc73fc402a8cb57121153f2667b944fe31f67ccdd6031e7d9481642f42ebdae00b572b1be6735ff413ceedccf29d2f0700021c6cf61b954891912968a449e6cb735e9344d90db21268ff596f844db358bc4852358ac89a71e81179b249b499a6b70bef341ff71737ea0a9a7e3f2a90bb41d376272410a18ec367d5b6f417420d6d6ee06a132c263269cba281c1fa6e644b5beed716783e973594f5e9da76c28bdc10968ec7e49031924fb8051ec80d27f87e943f884263cb1a273b18f79\",\"plaintext\":[\"PAIRING\"],\"commited_in\":\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:0\",\"tied_by\":1,\"commitment\":\"213c1295d6721f3194745063190487e73853c21373218255d2af20c4b1ba6a7b\",\"sender\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"recipient\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"shared_secret\":\"094849bcf340d0791fa0bae31c9b58b8572ad3c9bd028de3a26e501b578cb24b\",\"key\":null,\"confirmed_by\":null,\"timestamp\":1722436062534,\"error\":null}]";
|
|
const ALICE_PAIRING_CACHE: &str = "[{\"id\":2059106889,\"status\":\"Closed\",\"ciphertext\":\"6634050737f9dc18b187c69872943f9a11764252bac9e163fcb7480fd0aa3cf543f7b0b7eef9579d1ddba0b79fdf8c59747050313d0518ea4c8d23d2665948549efd72d0fde7bc8e7a02936de78b7406a31072429d9a81751d5665e9333f8c429c59e47a11b8993583fc5806c8e8695db970247761d11782188c550bd19f7a2c60172104c2892a463f79c19e4173852279012003edf3f777e7c1a95e7d87863d155bcaee1fc4c1b0cb69cab42a45ad5c6271a9c9ba4f79e49a3de2e0fa0aa9bc\",\"plaintext\":[\"PAIRING\"],\"commited_in\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:0\",\"tied_by\":1,\"commitment\":\"7f340cd5f070a4bd8d16077214a0488e43bd41d64d8b2b39ab0fc016c1093eba\",\"sender\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"recipient\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"shared_secret\":\"a86c30250a8e6a8dc9581b3ab2dacafda6446f6c65f4debe124f5870b6796ea1\",\"key\":null,\"confirmed_by\":null,\"timestamp\":1722436062375,\"error\":null}, {\"id\":3841225687,\"status\":\"Pairing\",\"ciphertext\":null,\"plaintext\":[\"PAIRING\"],\"commited_in\":\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:0\",\"tied_by\":null,\"commitment\":\"213c1295d6721f3194745063190487e73853c21373218255d2af20c4b1ba6a7b\",\"sender\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"recipient\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"shared_secret\":\"094849bcf340d0791fa0bae31c9b58b8572ad3c9bd028de3a26e501b578cb24b\",\"key\":null,\"confirmed_by\":null,\"timestamp\":1722436062605,\"error\":null}]";
|
|
|
|
const ALICE_PAIRED_DEVICE: &str = "{\"sp_wallet\":{\"client\":{\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:2\":{\"blockheight\":0,\"tweak\":\"e3e21d551e933199f8c977bc0362616bdfb128da7ca9728bd7254977541c39cc\",\"amount\":3936897,\"script\":\"5120df3af55a63bd056c5d6d09f47a3a19c382d938c08db8bc41a59c5235970209ad\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8\"}},\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292\"}},\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:0\":{\"blockheight\":0,\"tweak\":\"dac814c1ceff86cac3476e028ffa6eda0d9858bd74288a0e6e9e5cef271f723c\",\"amount\":1200,\"script\":\"51205e349be9fff1dc0c8e6bae3d35679029c57d9e554f0bb9705b71491d9b7569f1\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:1\":{\"blockheight\":0,\"tweak\":\"7c84a3074c18c23a65eceaca49a327989ef6e7240e0e080421afb80f06906d73\",\"amount\":306,\"script\":\"5120eb78084d7a2ccbdb7eb7e9bba7cf875c4e54a5aba0beac57c5d3e41133bd8fdd\",\"label\":null,\"spend_status\":{\"Spent\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\":{\"blockheight\":0,\"tweak\":\"6e5c1d4690b9ff4fa26e5185ada25af5c2987650e629a518db8a43fdaad7a26c\",\"amount\":349,\"script\":\"512088ac90e180c87b7fa6aa33db4c72a8620cd08fda3ba1c71430b904eb068c587f\",\"label\":null,\"spend_status\":{\"Spent\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8\"}},\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:2\":{\"blockheight\":0,\"tweak\":\"6ebffdcaf1da7b160b167caed039e795f8b6d5168903972f9436aaedef574f28\",\"amount\":3935806,\"script\":\"5120fe0ec587ba0a8f8b1ef7c708a8b67723e55d45fb8e5c12ffc8874d61dedc3c16\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"},\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:1\":{\"blockheight\":0,\"tweak\":\"cfea493360d6ffe2bfd13e4c5c2f677351e0c038f1ce0cd5383fadad6adc79f1\",\"amount\":191,\"script\":\"51200f008ff13f876bf328c69f10ad8621c9770ff8d5eb1861cb67199189a6308bb9\",\"label\":null,\"spend_status\":\"Unspent\"}}},\"tx_history\":[]},\"current_session_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\",\"current_session_key\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\"current_session_revokation_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\",\"paired_device\":{\"address\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"outgoing_pairing_transaction\":[184,15,3,43,210,105,33,82,25,230,171,60,50,65,148,233,155,169,157,72,81,194,100,136,113,83,51,13,148,124,233,120],\"revokation_index\":1,\"incoming_pairing_transaction\":[45,121,119,37,134,133,105,239,129,247,25,31,24,117,14,236,248,39,135,158,142,195,2,15,53,45,106,175,177,156,160,35],\"current_remote_key\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\"current_session_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\",\"current_session_revokation_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\"}}";
|
|
const BOB_PAIRED_DEVICE: &str = "{\"sp_wallet\":{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:0\":{\"blockheight\":0,\"tweak\":\"898284108952bd8b0e74030e00b81c1b387ee151a810ca3b40143da227707df2\",\"amount\":1200,\"script\":\"5120c0ff94a1318f0061960a713c927ff175a0d71a791497e94e70601c3baae739b8\",\"label\":null,\"spend_status\":\"Unspent\"},\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:1\":{\"blockheight\":0,\"tweak\":\"a68aed757eb3aca6bcbd0deb749eb26767963401e07d568b19f05f9945fce9b3\",\"amount\":248,\"script\":\"5120d3a39aed25fccd3338aa8c9d40c015febfb4361cffb6cfdcede3032317dc26ff\",\"label\":null,\"spend_status\":\"Unspent\"},\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:2\":{\"blockheight\":0,\"tweak\":\"e02bb8059b6c787d22715be95de87ea75c120e0f4e0507233bb3e1547b50d98b\",\"amount\":99895292,\"script\":\"51203207d027bb48df9a7c5798091b8bd4912c436c19ea41f04b48ea5dad31118183\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"},\"93722ea2fb9b74954210b4cdd1360e280b7ff1bc156d6b75f847e62411c588fb:0\":{\"blockheight\":0,\"tweak\":\"da5e3aa2378e3a257f99eb1e0ae4c672916f6a2f32a8ed9a8e146f2074da981b\",\"amount\":443,\"script\":\"51209eb9e950127b6a7d81668f25b4d5b164b42dafe59ce40b80e6c489ec983540d7\",\"label\":null,\"spend_status\":{\"Spent\":\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d\"}},\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":{\"Spent\":\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:1\":{\"blockheight\":0,\"tweak\":\"f0ad83734cdc7d73575e5a32651390cf30b92cc7e44cf94ec37da46900ecaf71\",\"amount\":654,\"script\":\"5120230cc1e85829be238e666f469653cbc2f1c0e3675a9bf33e1d1f91115f5dd306\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":{\"Spent\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f\"}}}},\"tx_history\":[]},\"current_session_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\",\"current_session_key\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\"current_session_revokation_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\",\"paired_device\":{\"address\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"outgoing_pairing_transaction\":[45,121,119,37,134,133,105,239,129,247,25,31,24,117,14,236,248,39,135,158,142,195,2,15,53,45,106,175,177,156,160,35],\"revokation_index\":1,\"incoming_pairing_transaction\":[184,15,3,43,210,105,33,82,25,230,171,60,50,65,148,233,155,169,157,72,81,194,100,136,113,83,51,13,148,124,233,120],\"current_remote_key\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\"current_session_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\",\"current_session_revokation_outpoint\":\"0000000000000000000000000000000000000000000000000000000000000000:4294967295\"}}";
|
|
|
|
const ALICE_LOGGED_DEVICE: &str = "{\"sp_wallet\":{\"client\":{\"label\":\"default\",\"scan_sk\":\"e3d8922a41a7cb1a84a90f4334e987bb5ea2df6a1fdf44f789b5302de119f9e2\",\"spend_key\":{\"Secret\":\"93292e5b21042c6cfc742ba30e9d2a1e01609b12d154a1825184ed12c7b9631b\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,104,242,105,185,6,124,208,34,44,149,52,163,38,63,221,150,12,198,24,95,143,126,235,37,149,233,88,118,32,86,233,152],\"spend_pubkey\":[3,198,82,196,243,12,59,126,109,143,144,157,128,176,168,94,54,134,232,139,115,102,11,178,128,244,239,251,40,228,67,153,72],\"change_label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"labels\":[[\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",[2,244,223,255,57,50,216,27,133,112,138,69,120,126,85,110,6,242,141,33,136,191,82,164,241,54,179,115,84,161,145,174,154]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[187,119,108,230,171,125,106,11],\"birthday\":1620,\"last_scan\":2146,\"outputs\":{\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:0\":{\"blockheight\":0,\"tweak\":\"2e3636950174a42842da254d7936f589e8c9ded6e17c90656bb759467fff9ea0\",\"amount\":1200,\"script\":\"51209c3a71193f7fc52482fd516a1a36f4df55f646a15f15ecc4f55497262b06e7c8\",\"label\":null,\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:1\":{\"blockheight\":0,\"tweak\":\"7c84a3074c18c23a65eceaca49a327989ef6e7240e0e080421afb80f06906d73\",\"amount\":306,\"script\":\"5120eb78084d7a2ccbdb7eb7e9bba7cf875c4e54a5aba0beac57c5d3e41133bd8fdd\",\"label\":null,\"spend_status\":{\"Spent\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:0\":{\"blockheight\":0,\"tweak\":\"6e5c1d4690b9ff4fa26e5185ada25af5c2987650e629a518db8a43fdaad7a26c\",\"amount\":349,\"script\":\"512088ac90e180c87b7fa6aa33db4c72a8620cd08fda3ba1c71430b904eb068c587f\",\"label\":null,\"spend_status\":{\"Spent\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8\"}},\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:2\":{\"blockheight\":0,\"tweak\":\"86a78efb4f522790d46096df9261435e3f7cab5f5129efe4ff77562fb4834a0c\",\"amount\":3935451,\"script\":\"5120c314279d078acaa41b5d897f98b81f09546001b6422e90e0b3f902ac7442a6b7\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":\"Unspent\"},\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:1\":{\"blockheight\":0,\"tweak\":\"49471984d232f62afb7421c904a26ec073b968e76e3e1b8f4371f2f730ba627f\",\"amount\":191,\"script\":\"51203b12839f99ca62bd09eb277bab720b9bb506003ed5b3fa6654f37a42f3cf1825\",\"label\":null,\"spend_status\":\"Unspent\"},\"9a4a67cc5a40bf882d8b300d91024d7c97024b3b68b2df7745a5b9ea1df1888c:1\":{\"blockheight\":1620,\"tweak\":\"b8b63b3ed97d297b744135cfac2fb4a344c881a77543b71f1fcd16bc67514f26\",\"amount\":3938643,\"script\":\"51205b7b324bb71d411e32f2c61fda5d1db23f5c7d6d416a77fab87c913a1b120be1\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292\"}},\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:1\":{\"blockheight\":0,\"tweak\":\"cfea493360d6ffe2bfd13e4c5c2f677351e0c038f1ce0cd5383fadad6adc79f1\",\"amount\":191,\"script\":\"51200f008ff13f876bf328c69f10ad8621c9770ff8d5eb1861cb67199189a6308bb9\",\"label\":null,\"spend_status\":{\"Spent\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c\"}},\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:2\":{\"blockheight\":0,\"tweak\":\"6ebffdcaf1da7b160b167caed039e795f8b6d5168903972f9436aaedef574f28\",\"amount\":3935806,\"script\":\"5120fe0ec587ba0a8f8b1ef7c708a8b67723e55d45fb8e5c12ffc8874d61dedc3c16\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c\"}},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:2\":{\"blockheight\":0,\"tweak\":\"e3e21d551e933199f8c977bc0362616bdfb128da7ca9728bd7254977541c39cc\",\"amount\":3936897,\"script\":\"5120df3af55a63bd056c5d6d09f47a3a19c382d938c08db8bc41a59c5235970209ad\",\"label\":\"ac14a827e2d023b8f7804303a47259366117d99ed932b641d4a8eaf1b82cc992\",\"spend_status\":{\"Spent\":\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8\"}},\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:0\":{\"blockheight\":0,\"tweak\":\"dac814c1ceff86cac3476e028ffa6eda0d9858bd74288a0e6e9e5cef271f723c\",\"amount\":1200,\"script\":\"51205e349be9fff1dc0c8e6bae3d35679029c57d9e554f0bb9705b71491d9b7569f1\",\"label\":null,\"spend_status\":{\"Spent\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c\"}}}},\"tx_history\":[]},\"current_session_outpoint\":\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:0\",\"current_session_key\":[193,95,100,240,34,120,208,149,63,78,80,240,135,212,31,167,234,42,121,233,178,209,49,231,189,60,70,89,71,185,1,187],\"current_session_revokation_outpoint\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:1\",\"paired_device\":{\"address\":\"sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u\",\"outgoing_pairing_transaction\":[184,15,3,43,210,105,33,82,25,230,171,60,50,65,148,233,155,169,157,72,81,194,100,136,113,83,51,13,148,124,233,120],\"revokation_index\":1,\"incoming_pairing_transaction\":[45,121,119,37,134,133,105,239,129,247,25,31,24,117,14,236,248,39,135,158,142,195,2,15,53,45,106,175,177,156,160,35],\"current_remote_key\":[16,187,49,126,30,231,11,43,228,86,96,159,92,122,234,168,16,107,97,83,38,34,15,14,115,173,94,120,208,50,47,34],\"current_session_outpoint\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:0\",\"current_session_revokation_outpoint\":\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:1\"}}";
|
|
const BOB_LOGGED_DEVICE: &str = "{\"sp_wallet\":{\"client\":{\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]},\"network\":\"regtest\"},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:1\":{\"blockheight\":0,\"tweak\":\"73cd0a0ebe8e61c3f5ec6b414107934238c4642924272823fb630ef828c14a97\",\"amount\":248,\"script\":\"51202c1f1be3cff73416dc34de0d5f7760095a51f6b4a7bfa118441221718394beea\",\"label\":null,\"spend_status\":\"Unspent\"},\"78e97c940d3353718864c251489da99be99441323cabe619522169d22b030fb8:0\":{\"blockheight\":0,\"tweak\":\"898284108952bd8b0e74030e00b81c1b387ee151a810ca3b40143da227707df2\",\"amount\":1200,\"script\":\"5120c0ff94a1318f0061960a713c927ff175a0d71a791497e94e70601c3baae739b8\",\"label\":null,\"spend_status\":{\"Spent\":\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f\"}},\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f:1\":{\"blockheight\":0,\"tweak\":\"f0ad83734cdc7d73575e5a32651390cf30b92cc7e44cf94ec37da46900ecaf71\",\"amount\":654,\"script\":\"5120230cc1e85829be238e666f469653cbc2f1c0e3675a9bf33e1d1f91115f5dd306\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"},\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:2\":{\"blockheight\":0,\"tweak\":\"b13107995241e7daaf13e89ff62a007dd592173c02284a46c9d40778e9fd8165\",\"amount\":99894746,\"script\":\"5120fc7226dc54ed54144d7f6081726fa1d6b5d0fc6aca09a0cc689cc9552e81db14\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":\"Unspent\"},\"e2c6ff9927c8a5f7a60087117732c07ab7cd82c0c65462e9c780eb5ce9c35292:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":{\"Spent\":\"576c2e53fe924d68deb7262cfc0e4023b5889652dec35671e1e7cf255d61c28f\"}},\"93722ea2fb9b74954210b4cdd1360e280b7ff1bc156d6b75f847e62411c588fb:0\":{\"blockheight\":0,\"tweak\":\"da5e3aa2378e3a257f99eb1e0ae4c672916f6a2f32a8ed9a8e146f2074da981b\",\"amount\":443,\"script\":\"51209eb9e950127b6a7d81668f25b4d5b164b42dafe59ce40b80e6c489ec983540d7\",\"label\":null,\"spend_status\":{\"Spent\":\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d\"}},\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:1\":{\"blockheight\":0,\"tweak\":\"a68aed757eb3aca6bcbd0deb749eb26767963401e07d568b19f05f9945fce9b3\",\"amount\":248,\"script\":\"5120d3a39aed25fccd3338aa8c9d40c015febfb4361cffb6cfdcede3032317dc26ff\",\"label\":null,\"spend_status\":\"Unspent\"},\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d:2\":{\"blockheight\":0,\"tweak\":\"e02bb8059b6c787d22715be95de87ea75c120e0f4e0507233bb3e1547b50d98b\",\"amount\":99895292,\"script\":\"51203207d027bb48df9a7c5798091b8bd4912c436c19ea41f04b48ea5dad31118183\",\"label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"spend_status\":{\"Spent\":\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f\"}},\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:0\":{\"blockheight\":0,\"tweak\":\"ac6c259ddf88509b3663a412f4d40403cafb3a89c8a6922770384ba1806ecda0\",\"amount\":1200,\"script\":\"512010bb317e1ee70b2be456609f5c7aeaa8106b615326220f0e73ad5e78d0322f22\",\"label\":null,\"spend_status\":\"Unspent\"},\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":{\"Spent\":\"23a09cb1af6a2d350f02c38e9e8727f8ec0e75181f19f781ef6985862577792d\"}}}},\"tx_history\":[]},\"current_session_outpoint\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:0\",\"current_session_key\":[92,106,141,254,85,117,14,178,239,50,33,247,83,151,23,25,144,142,183,115,190,26,14,113,238,72,13,18,29,254,37,87],\"current_session_revokation_outpoint\":\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:1\",\"paired_device\":{\"address\":\"sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q\",\"outgoing_pairing_transaction\":[45,121,119,37,134,133,105,239,129,247,25,31,24,117,14,236,248,39,135,158,142,195,2,15,53,45,106,175,177,156,160,35],\"revokation_index\":1,\"incoming_pairing_transaction\":[184,15,3,43,210,105,33,82,25,230,171,60,50,65,148,233,155,169,157,72,81,194,100,136,113,83,51,13,148,124,233,120],\"current_remote_key\":[156,58,113,25,63,127,197,36,130,253,81,106,26,54,244,223,85,246,70,161,95,21,236,196,245,84,151,38,43,6,231,200],\"current_session_outpoint\":\"4b7a78bb8a715fa4875543025182b3f0bb1bc5ca44b852cab57c2929231ddf3f:0\",\"current_session_revokation_outpoint\":\"5e18963dcdd5e94b4b5dfaa147a6e62889a367d9fc1a016973f84c07a192982c:1\"}}";
|
|
|
|
fn helper_switch_device(wallet: String) {
|
|
reset_device().unwrap();
|
|
restore_device_from_sp_wallet(wallet.clone()).unwrap();
|
|
}
|
|
|
|
fn helper_get_alice_address() -> String {
|
|
let wallet: SpWallet = serde_json::from_str(ALICE_START_WALLET).unwrap();
|
|
wallet.get_client().get_receiving_address()
|
|
}
|
|
|
|
fn helper_get_bob_address() -> String {
|
|
let wallet: SpWallet = serde_json::from_str(BOB_START_WALLET).unwrap();
|
|
wallet.get_client().get_receiving_address()
|
|
}
|
|
|
|
fn helper_get_tweak_data(transaction: &str, outpoints: HashMap<OutPoint, OwnedOutput>) -> String {
|
|
let tx = deserialize::<Transaction>(&Vec::from_hex(transaction).unwrap()).unwrap();
|
|
let mut outpoint_data = vec![];
|
|
let mut witnesses = vec![];
|
|
let mut spks = vec![];
|
|
for prevout in tx.input {
|
|
outpoint_data.push((
|
|
prevout.previous_output.txid.to_string(),
|
|
prevout.previous_output.vout,
|
|
));
|
|
witnesses.push(prevout.witness);
|
|
if let Some(output) = outpoints.get(&prevout.previous_output) {
|
|
spks.push(ScriptBuf::from_hex(&output.script).unwrap());
|
|
}
|
|
}
|
|
let mut input_pubkeys = vec![];
|
|
for (spk, witness) in spks.iter().zip(witnesses) {
|
|
let input_pubkey =
|
|
get_pubkey_from_input(&vec![], &witness.to_vec(), spk.as_bytes()).unwrap();
|
|
input_pubkeys.push(input_pubkey.unwrap());
|
|
}
|
|
let ref_pubkeys: Vec<&PublicKey> = input_pubkeys.iter().collect();
|
|
let tweak_data = calculate_tweak_data(&ref_pubkeys, &outpoint_data).unwrap();
|
|
tweak_data.to_string()
|
|
}
|
|
|
|
fn helper_parse_transaction(transaction: &str, tweak_data: &str) -> CachedMessage {
|
|
let new_tx_msg = serde_json::to_string(&NewTxMessage::new(
|
|
transaction.to_owned(),
|
|
Some(tweak_data.to_owned()),
|
|
))
|
|
.unwrap();
|
|
let network_msg = serde_json::to_string(&AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::NewTx,
|
|
&new_tx_msg,
|
|
))
|
|
.unwrap();
|
|
let result = parse_network_msg(network_msg, 1);
|
|
match result {
|
|
Ok(m) => m,
|
|
Err(e) => panic!("Unexpected error: {}", e.message),
|
|
}
|
|
}
|
|
|
|
fn helper_parse_ank_msg(ank_network_msg: String) -> CachedMessage {
|
|
let result = parse_network_msg(ank_network_msg, 1);
|
|
match result {
|
|
Ok(r) => return r,
|
|
Err(e) => panic!("Unexpected error: {}", e.message),
|
|
};
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_pairing() {
|
|
setup();
|
|
debug!("==============================================\nStarting test_pairing\n==============================================");
|
|
|
|
// ========================= Alice
|
|
helper_switch_device(ALICE_LOGIN_WALLET.to_owned());
|
|
|
|
debug!("Alice sends a pairing transaction to Bob");
|
|
let alice_pairing_tx = create_pairing_transaction(helper_get_bob_address(), 1).unwrap();
|
|
|
|
debug!("Alice pairing tx: {}", alice_pairing_tx.txid);
|
|
|
|
// This is sent on 4nk network along with the transaction
|
|
let alice_pairing_cipher = AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::Cipher,
|
|
&alice_pairing_tx.new_network_msg.ciphertext.unwrap(),
|
|
);
|
|
|
|
let get_outputs_result = get_outputs().unwrap();
|
|
|
|
let alice_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
let alice_pairing_tweak_data =
|
|
helper_get_tweak_data(&alice_pairing_tx.transaction, alice_outputs);
|
|
|
|
// Alice parse her own transaction
|
|
let alice_msg_id =
|
|
helper_parse_transaction(&alice_pairing_tx.transaction, &alice_pairing_tweak_data).id;
|
|
|
|
let alice_wallet = dump_wallet().unwrap();
|
|
let alice_cache = dump_message_cache().unwrap();
|
|
|
|
// ======================= Bob
|
|
reset_device().unwrap();
|
|
helper_switch_device(BOB_LOGIN_WALLET.to_owned());
|
|
|
|
// Bob receives Alice pairing transaction
|
|
// if he agrees, he must send another pairing transaction to Alice
|
|
// he can also spend the output that notified him that will become Alice first session key
|
|
debug!("Bob parses Alice pairing transaction");
|
|
helper_parse_transaction(&alice_pairing_tx.transaction, &alice_pairing_tweak_data);
|
|
let alice_pairing_res = helper_parse_ank_msg(alice_pairing_cipher.to_string());
|
|
|
|
assert!(alice_pairing_res.status == CachedMessageStatus::Pairing);
|
|
|
|
// Bob takes the txid of the incoming transaction from Alice, he will need it for pairing
|
|
let incoming_txid = alice_pairing_res.commited_in.unwrap().txid;
|
|
|
|
// At this point, user must validate the pairing proposal received from Alice
|
|
|
|
debug!("Bob sends a pairing transaction back");
|
|
let bob_pairing_tx = create_pairing_transaction(alice_pairing_res.sender.unwrap(), 1).unwrap();
|
|
|
|
let bob_pairing_cipher = AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::Cipher,
|
|
&bob_pairing_tx.new_network_msg.ciphertext.unwrap(),
|
|
);
|
|
|
|
let get_outputs_result = get_outputs().unwrap();
|
|
|
|
let bob_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
let bob_pairing_tweak_data = helper_get_tweak_data(&bob_pairing_tx.transaction, bob_outputs);
|
|
|
|
helper_parse_transaction(&bob_pairing_tx.transaction, &bob_pairing_tweak_data);
|
|
|
|
debug!("Bob pairs device with Alice");
|
|
pair_device(bob_pairing_tx.new_network_msg.id, incoming_txid.to_string()).unwrap();
|
|
|
|
// ======================== Alice
|
|
reset_device().unwrap();
|
|
helper_switch_device(alice_wallet);
|
|
set_message_cache(alice_cache).unwrap();
|
|
|
|
// parse Bob's pairing transaction
|
|
helper_parse_transaction(&bob_pairing_tx.transaction, &bob_pairing_tweak_data);
|
|
let bob_pairing_msg = helper_parse_ank_msg(bob_pairing_cipher.to_string());
|
|
|
|
assert!(bob_pairing_msg.status == CachedMessageStatus::Pairing);
|
|
|
|
debug!("Alice pairs device");
|
|
pair_device(alice_msg_id, bob_pairing_tx.txid).unwrap();
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_first_login() {
|
|
reset_device().unwrap();
|
|
setup();
|
|
debug!("==============================================\nStarting test_first_login\n==============================================");
|
|
|
|
restore_device(BOB_PAIRED_DEVICE.to_owned()).unwrap();
|
|
set_message_cache(
|
|
serde_json::from_str::<Vec<CachedMessage>>(BOB_PAIRING_CACHE)
|
|
.unwrap()
|
|
.into_iter()
|
|
.map(|v| v.to_string())
|
|
.collect(),
|
|
)
|
|
.unwrap();
|
|
|
|
// Bob can now spend the notification output, that will become Alice's first session key
|
|
debug!("Bob first login");
|
|
let bob_first_login_tx = create_login_transaction(1).unwrap();
|
|
let bob_login_cipher = AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::Cipher,
|
|
&bob_first_login_tx.new_network_msg.ciphertext.unwrap(),
|
|
);
|
|
|
|
let get_outputs_result = get_outputs().unwrap();
|
|
|
|
let bob_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
let bob_login_tweak_data = helper_get_tweak_data(&bob_first_login_tx.transaction, bob_outputs);
|
|
|
|
debug!("Bob parses his own login transaction");
|
|
helper_parse_transaction(&bob_first_login_tx.transaction, &bob_login_tweak_data);
|
|
|
|
let bob_device = dump_device().unwrap();
|
|
let bob_cache = dump_message_cache().unwrap();
|
|
|
|
// ======================== Alice
|
|
reset_device().unwrap();
|
|
restore_device(ALICE_PAIRED_DEVICE.to_owned()).unwrap();
|
|
set_message_cache(
|
|
serde_json::from_str::<Vec<CachedMessage>>(ALICE_PAIRING_CACHE)
|
|
.unwrap()
|
|
.into_iter()
|
|
.map(|v| v.to_string())
|
|
.collect(),
|
|
)
|
|
.unwrap();
|
|
|
|
debug!("Alice finds out the login demand from Bob");
|
|
helper_parse_transaction(&bob_first_login_tx.transaction, &bob_login_tweak_data);
|
|
let bob_login_msg = helper_parse_ank_msg(bob_login_cipher.to_string());
|
|
|
|
// At this point Alice can fire up the revokation output if the login demand is illegitimate
|
|
// OR she must answer with a login transaction to Bob
|
|
debug!("Alice first login");
|
|
let alice_first_login_tx = create_login_transaction(1).unwrap();
|
|
let alice_login_cipher = AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::Cipher,
|
|
&alice_first_login_tx.new_network_msg.ciphertext.unwrap(),
|
|
);
|
|
|
|
let get_outputs_result = get_outputs().unwrap();
|
|
|
|
let alice_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
let alice_login_tweak_data =
|
|
helper_get_tweak_data(&alice_first_login_tx.transaction, alice_outputs);
|
|
|
|
helper_parse_transaction(&alice_first_login_tx.transaction, &alice_login_tweak_data);
|
|
|
|
login(bob_login_msg.id, alice_first_login_tx.transaction.clone()).unwrap();
|
|
|
|
// ======================= Bob
|
|
reset_device().unwrap();
|
|
restore_device(bob_device).unwrap();
|
|
set_message_cache(bob_cache).unwrap();
|
|
|
|
helper_parse_transaction(&alice_first_login_tx.transaction, &alice_login_tweak_data);
|
|
let alice_login_msg = helper_parse_ank_msg(alice_login_cipher.to_string());
|
|
|
|
assert!(alice_login_msg.status == CachedMessageStatus::Login);
|
|
|
|
login(alice_login_msg.id, bob_first_login_tx.transaction).unwrap();
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn test_login() {
|
|
reset_device().unwrap();
|
|
setup();
|
|
debug!("==============================================\nStarting test_login\n==============================================");
|
|
|
|
// ======================= Alice
|
|
restore_device(ALICE_LOGGED_DEVICE.to_owned()).unwrap();
|
|
|
|
debug!("Alice sends a login transaction to Bob, which creates a new key for him");
|
|
let alice_login_tx = create_login_transaction(1).unwrap();
|
|
let alice_login_cipher = AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::Cipher,
|
|
&alice_login_tx.new_network_msg.ciphertext.unwrap(),
|
|
);
|
|
|
|
let get_outputs_result = get_outputs().unwrap();
|
|
|
|
let alice_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
let alice_login_tweak_data = helper_get_tweak_data(
|
|
&alice_login_tx.transaction,
|
|
alice_outputs
|
|
);
|
|
|
|
debug!("Parsing Alice login transaction");
|
|
helper_parse_transaction(&alice_login_tx.transaction, &alice_login_tweak_data);
|
|
|
|
let alice_device = dump_device().unwrap();
|
|
let alice_cache = dump_message_cache().unwrap();
|
|
|
|
// ============================== Bob
|
|
reset_device().unwrap();
|
|
restore_device(BOB_LOGGED_DEVICE.to_owned()).unwrap();
|
|
|
|
debug!("Bob finds out the login demand from Alice");
|
|
helper_parse_transaction(&alice_login_tx.transaction, &alice_login_tweak_data);
|
|
let alice_login_msg = helper_parse_ank_msg(alice_login_cipher.to_string());
|
|
|
|
// Bob must confirm that he agrees to log in
|
|
|
|
// Boutons "login" ou "Refuser"
|
|
// At this point Bob can fire up the revokation output if the login demand is illegitimate
|
|
// revoke_paired_device(1).unwrap();
|
|
// OR it must answer with a login transaction to Alice
|
|
let bob_login_tx = create_login_transaction(1).unwrap();
|
|
let bob_login_cipher = AnkNetworkMsg::new(
|
|
sdk_common::network::AnkFlag::Cipher,
|
|
&bob_login_tx.new_network_msg.ciphertext.unwrap(),
|
|
);
|
|
|
|
let get_outputs_result = get_outputs().unwrap();
|
|
|
|
let bob_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
let bob_login_tweak_data = helper_get_tweak_data(&bob_login_tx.transaction, bob_outputs);
|
|
|
|
debug!("Bob parses his own login transaction");
|
|
helper_parse_transaction(&bob_login_tx.transaction, &bob_login_tweak_data);
|
|
|
|
login(alice_login_msg.id, alice_login_tx.transaction.clone()).unwrap();
|
|
|
|
// =================== Alice
|
|
|
|
reset_device().unwrap();
|
|
restore_device(alice_device).unwrap();
|
|
set_message_cache(alice_cache).unwrap();
|
|
|
|
helper_parse_transaction(&bob_login_tx.transaction, &bob_login_tweak_data);
|
|
let bob_login_msg = helper_parse_ank_msg(bob_login_cipher.to_string());
|
|
|
|
assert!(bob_login_msg.status == CachedMessageStatus::Login);
|
|
|
|
login(bob_login_msg.id, alice_login_tx.transaction).unwrap();
|
|
}
|
|
|
|
// #[wasm_bindgen_test]
|
|
// fn test_alice_sends_message_through_trusted_channel() {
|
|
// setup();
|
|
// debug!("==============================================\nStarting test_alice_sends_message_through_trusted_channel\n==============================================");
|
|
|
|
// restore_device(ALICE_PAIRED_DEVICE.to_owned()).unwrap();
|
|
|
|
// set_message_cache(vec![ALICE_FINAL_CACHE.to_owned()]).unwrap();
|
|
// let answered_msg: CachedMessage = serde_json::from_str(ALICE_FINAL_CACHE).unwrap();
|
|
|
|
// debug!("Alice cache: {:?}", answered_msg);
|
|
|
|
// // Bob sends a message to Alice
|
|
// let secret_msg = "Hello Alice";
|
|
// let cipher =
|
|
// encrypt_with_key(secret_msg.to_owned(), answered_msg.shared_secret.unwrap()).unwrap();
|
|
// let bob_msg = AnkNetworkMsg::new(sdk_common::network::AnkFlag::Cipher, &cipher);
|
|
|
|
// // Alice can find the message
|
|
// let mut result = helper_parse_ank_msg(bob_msg.to_string());
|
|
// assert!(result.plaintext.pop() == Some(secret_msg.to_owned()));
|
|
// }
|
|
|
|
// #[wasm_bindgen_test]
|
|
// fn test_alice_notifies_bob() {
|
|
// setup();
|
|
// debug!("==============================================\nStarting test_alice_notifies_bob\n==============================================");
|
|
|
|
// // Alice notifies Bob
|
|
// helper_switch_device(ALICE_START_WALLET.to_owned());
|
|
// helper_link_alice();
|
|
|
|
// let cipher_msg = CipherMessage::new(helper_get_alice_address(), "TEST".to_owned());
|
|
|
|
// debug!("Alice notifies Bob");
|
|
// let notification_tx =
|
|
// create_notification_transaction(helper_get_bob_address(), cipher_msg, 1).unwrap();
|
|
|
|
// let get_outputs_result = get_outputs().unwrap();
|
|
|
|
// let alice_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
// let notification_tweak_data = helper_get_tweak_data(
|
|
// ¬ification_tx.transaction,
|
|
// alice_outputs
|
|
// );
|
|
|
|
// let ank_msg = AnkNetworkMsg::new(
|
|
// sdk_common::network::AnkFlag::Cipher,
|
|
// ¬ification_tx.new_network_msg.ciphertext.unwrap(),
|
|
// );
|
|
|
|
// debug!("Alice parse her own notification transaction");
|
|
// // Alice parse her own transaction to update her utxos
|
|
// helper_parse_transaction(
|
|
// ¬ification_tx.transaction,
|
|
// notification_tweak_data.clone(),
|
|
// );
|
|
|
|
// // debug!("Alice parsed transaction {}", notification_tx.txid);
|
|
// debug!("alice cache: {:?}", dump_message_cache().unwrap());
|
|
|
|
// reset_device().unwrap();
|
|
// helper_switch_device(BOB_START_WALLET.to_owned());
|
|
// helper_link_bob();
|
|
|
|
// debug!(
|
|
// "Bob parses notification transaction {}",
|
|
// notification_tx.txid
|
|
// );
|
|
// // bob parse the transaction and the message
|
|
// helper_parse_transaction(¬ification_tx.transaction, notification_tweak_data);
|
|
// helper_parse_ank_msg(ank_msg.to_string());
|
|
// debug!("bob cache: {:?}", dump_message_cache().unwrap());
|
|
// }
|
|
|
|
// #[wasm_bindgen_test]
|
|
// fn test_bob_challenges_alice() {
|
|
// setup();
|
|
// debug!("==============================================\nStarting test_bob_challenges_alice\n==============================================");
|
|
// helper_switch_device(BOB_CHALLENGE_WALLET.to_owned());
|
|
// helper_link_bob();
|
|
|
|
// set_message_cache(vec![BOB_CHALLENGE_CACHE.to_owned()]).unwrap();
|
|
// let notification_msg: CachedMessage = serde_json::from_str(BOB_CHALLENGE_CACHE).unwrap();
|
|
|
|
// let get_outputs_result = get_outputs().unwrap();
|
|
|
|
// let bob_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
// debug!("Bob sends a challenge transaction back to Alice");
|
|
// let confirmation_tx = create_confirmation_transaction(notification_msg.id, 1).unwrap();
|
|
|
|
// let confirmation_tweak_data = helper_get_tweak_data(
|
|
// &confirmation_tx.transaction,
|
|
// bob_outputs
|
|
// );
|
|
|
|
// debug!("Bob parsing its own confirmation tx");
|
|
// helper_parse_transaction(
|
|
// &confirmation_tx.transaction,
|
|
// confirmation_tweak_data.clone(),
|
|
// );
|
|
|
|
// debug!("bob wallet: {:?}", dump_wallet().unwrap());
|
|
// debug!("bob cache: {:?}", dump_message_cache().unwrap());
|
|
// reset_device().unwrap();
|
|
// helper_switch_device(ALICE_CHALLENGE_WALLET.to_owned());
|
|
// helper_link_alice();
|
|
|
|
// set_message_cache(vec![ALICE_CHALLENGE_CACHE.to_owned()]).unwrap();
|
|
|
|
// debug!("Alice parsing confirmation tx");
|
|
// helper_parse_transaction(&confirmation_tx.transaction, confirmation_tweak_data);
|
|
// debug!("alice wallet: {:?}", dump_wallet().unwrap());
|
|
// debug!("alice cache: {:?}", dump_message_cache().unwrap());
|
|
// }
|
|
|
|
// #[wasm_bindgen_test]
|
|
// fn test_alice_answers_bob() {
|
|
// setup();
|
|
// debug!("==============================================\nStarting test_alice_answers_bob\n==============================================");
|
|
// helper_switch_device(ALICE_ANSWER_WALLET.to_owned());
|
|
// helper_link_alice();
|
|
|
|
// set_message_cache(vec![ALICE_ANSWER_CACHE.to_owned()]).unwrap();
|
|
// let challenge_msg: CachedMessage = serde_json::from_str(ALICE_ANSWER_CACHE).unwrap();
|
|
|
|
// debug!("Alice answers bob's challenge");
|
|
// let answer_tx = answer_confirmation_transaction(challenge_msg.id, 1).unwrap();
|
|
|
|
// // debug!("answer_tx: {:?}", answer_tx.transaction);
|
|
// let get_outputs_result = get_outputs().unwrap();
|
|
|
|
// let alice_outputs: HashMap<OutPoint, OwnedOutput> = get_outputs_result.into_serde().unwrap();
|
|
|
|
// let answer_tweak_data = helper_get_tweak_data(
|
|
// &answer_tx.transaction,
|
|
// alice_outputs,
|
|
// );
|
|
|
|
// debug!("Alice final wallet: {:?}", dump_wallet().unwrap());
|
|
// debug!("Alice cache: {:?}", dump_message_cache().unwrap());
|
|
// reset_device().unwrap();
|
|
// helper_switch_device(BOB_ANSWER_WALLET.to_owned());
|
|
// helper_link_bob();
|
|
|
|
// set_message_cache(vec![BOB_ANSWER_CACHE.to_owned()]).unwrap();
|
|
|
|
// debug!("Bob parses answer transaction {}", answer_tx.txid);
|
|
// let answer_msg = helper_parse_transaction(&answer_tx.transaction, answer_tweak_data);
|
|
// // debug!(
|
|
// // "bob's message: {}",
|
|
// // serde_json::to_string(&answer_msg).unwrap()
|
|
// // );
|
|
// debug!("Bob final wallet: {:?}", dump_wallet().unwrap());
|
|
// debug!("Bob cache: {:?}", dump_message_cache().unwrap());
|
|
// }
|