From d971c1adad52f3c0f3bb95d3186e5142c73404e9 Mon Sep 17 00:00:00 2001 From: Shanin Roman <40040452+Erigara@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:39:16 +0300 Subject: [PATCH] feat!: remove public key from ed25519 private key (#4856) Signed-off-by: Shanin Roman --- client/src/config.rs | 2 +- client/tests/integration/upgrade.rs | 3 +- config/iroha_test_config.toml | 2 +- config/tests/fixtures/base.toml | 2 +- config/tests/fixtures/full.env | 2 +- config/tests/fixtures/full.toml | 2 +- .../tests/fixtures/minimal_file_and_env.toml | 2 +- configs/swarm/client.toml | 2 +- configs/swarm/docker-compose.local.yml | 10 ++-- configs/swarm/docker-compose.single.yml | 4 +- configs/swarm/docker-compose.yml | 10 ++-- configs/swarm/executor.wasm | Bin 486162 -> 486804 bytes crypto/src/lib.rs | 54 +++++++++++------- crypto/src/multihash.rs | 8 +-- crypto/src/signature/ed25519.rs | 10 ++-- test_samples/src/lib.rs | 40 +++++++++++-- tools/swarm/src/lib.rs | 32 +++++------ 17 files changed, 114 insertions(+), 71 deletions(-) diff --git a/client/src/config.rs b/client/src/config.rs index 227cb3b0660..b66a97f742e 100644 --- a/client/src/config.rs +++ b/client/src/config.rs @@ -121,7 +121,7 @@ mod tests { [account] domain = "wonderland" public_key = "ed0120CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03" - private_key = "802640CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03" + private_key = "802620CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53" [transaction] time_to_live_ms = 100_000 diff --git a/client/tests/integration/upgrade.rs b/client/tests/integration/upgrade.rs index 6baf7396168..2ce4f3e85fa 100644 --- a/client/tests/integration/upgrade.rs +++ b/client/tests/integration/upgrade.rs @@ -18,7 +18,8 @@ use test_samples::{ALICE_ID, BOB_ID}; const ADMIN_PUBLIC_KEY_MULTIHASH: &str = "ed012076E5CA9698296AF9BE2CA45F525CB3BCFDEB7EE068BA56F973E9DD90564EF4FC"; -const ADMIN_PRIVATE_KEY_MULTIHASH: &str = "802640A4DE33BCA99A254ED6265D1F0FB69DFE42B77F89F6C2E478498E1831BF6D81F276E5CA9698296AF9BE2CA45F525CB3BCFDEB7EE068BA56F973E9DD90564EF4FC"; +const ADMIN_PRIVATE_KEY_MULTIHASH: &str = + "802620A4DE33BCA99A254ED6265D1F0FB69DFE42B77F89F6C2E478498E1831BF6D81F2"; #[test] fn executor_upgrade_should_work() -> Result<()> { diff --git a/config/iroha_test_config.toml b/config/iroha_test_config.toml index ca8c00567b7..ac65c79a9c3 100644 --- a/config/iroha_test_config.toml +++ b/config/iroha_test_config.toml @@ -1,6 +1,6 @@ chain = "00000000-0000-0000-0000-000000000000" public_key = "ed01201C61FAF8FE94E253B93114240394F79A607B7FA55F9E5A41EBEC74B88055768B" -private_key = "802640282ED9F3CF92811C3818DBC4AE594ED59DC1A2F78E4241E31924E101D6B1FB831C61FAF8FE94E253B93114240394F79A607B7FA55F9E5A41EBEC74B88055768B" +private_key = "802620282ED9F3CF92811C3818DBC4AE594ED59DC1A2F78E4241E31924E101D6B1FB83" [network] address = "127.0.0.1:1337" diff --git a/config/tests/fixtures/base.toml b/config/tests/fixtures/base.toml index f69d6111a7a..c0d1355a1f6 100644 --- a/config/tests/fixtures/base.toml +++ b/config/tests/fixtures/base.toml @@ -1,6 +1,6 @@ chain = "0" public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" -private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" +private_key = "8026208F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F" [network] address = "127.0.0.1:1337" diff --git a/config/tests/fixtures/full.env b/config/tests/fixtures/full.env index 201154ab7dd..05f248b4ec9 100644 --- a/config/tests/fixtures/full.env +++ b/config/tests/fixtures/full.env @@ -1,6 +1,6 @@ CHAIN=0-0 PUBLIC_KEY=ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB -PRIVATE_KEY=8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB +PRIVATE_KEY=8026208F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F P2P_ADDRESS=127.0.0.1:5432 GENESIS_PUBLIC_KEY=ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB GENESIS=./genesis.signed.scale diff --git a/config/tests/fixtures/full.toml b/config/tests/fixtures/full.toml index 595f87d1d33..8560c0299e8 100644 --- a/config/tests/fixtures/full.toml +++ b/config/tests/fixtures/full.toml @@ -2,7 +2,7 @@ chain = "0" public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" -private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" +private_key = "8026208F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F" [genesis] public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" diff --git a/config/tests/fixtures/minimal_file_and_env.toml b/config/tests/fixtures/minimal_file_and_env.toml index a8ea3ca9510..10e7d77dac3 100644 --- a/config/tests/fixtures/minimal_file_and_env.toml +++ b/config/tests/fixtures/minimal_file_and_env.toml @@ -2,7 +2,7 @@ extends = "base_trusted_peers.toml" chain = "0" public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" -private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB" +private_key = "8026208F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F" [network] address = "127.0.0.1:1337" diff --git a/configs/swarm/client.toml b/configs/swarm/client.toml index 7a62f9e6c37..a374938ef2e 100644 --- a/configs/swarm/client.toml +++ b/configs/swarm/client.toml @@ -8,4 +8,4 @@ password = "ilovetea" [account] domain = "wonderland" public_key = "ed0120CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03" -private_key = "802640CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03" +private_key = "802620CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53" diff --git a/configs/swarm/docker-compose.local.yml b/configs/swarm/docker-compose.local.yml index 7f41d8122e1..d053f4aec28 100644 --- a/configs/swarm/docker-compose.local.yml +++ b/configs/swarm/docker-compose.local.yml @@ -10,12 +10,12 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D - PRIVATE_KEY: 802640A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D + PRIVATE_KEY: 802620A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692 P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 TRUSTED_PEERS: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]' - GENESIS_PRIVATE_KEY: 80264082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD4164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 + GENESIS_PRIVATE_KEY: 80262082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]' ports: @@ -54,7 +54,7 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D - PRIVATE_KEY: 8026403ECA64ADC23DC106C9D703233375EA6AC345AD7299FF3AD45F355DE6CD1B55109897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D + PRIVATE_KEY: 8026203ECA64ADC23DC106C9D703233375EA6AC345AD7299FF3AD45F355DE6CD1B5510 P2P_ADDRESS: 0.0.0.0:1338 API_ADDRESS: 0.0.0.0:8081 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 @@ -79,7 +79,7 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10 - PRIVATE_KEY: 8026407B1C78F733EDAFD6AF9BAC3A0D6C5A494557DD031609A4FDD9796EEF471D928C4EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10 + PRIVATE_KEY: 8026207B1C78F733EDAFD6AF9BAC3A0D6C5A494557DD031609A4FDD9796EEF471D928C P2P_ADDRESS: 0.0.0.0:1339 API_ADDRESS: 0.0.0.0:8082 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 @@ -104,7 +104,7 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE - PRIVATE_KEY: 8026406C7FF4CA09D395C7B7332C654099406E929C6238942E3CE85155CC1A5E2CF519CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE + PRIVATE_KEY: 8026206C7FF4CA09D395C7B7332C654099406E929C6238942E3CE85155CC1A5E2CF519 P2P_ADDRESS: 0.0.0.0:1340 API_ADDRESS: 0.0.0.0:8083 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 diff --git a/configs/swarm/docker-compose.single.yml b/configs/swarm/docker-compose.single.yml index 1073bf69f31..1f6598eee7f 100644 --- a/configs/swarm/docker-compose.single.yml +++ b/configs/swarm/docker-compose.single.yml @@ -10,11 +10,11 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D - PRIVATE_KEY: 802640A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D + PRIVATE_KEY: 802620A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692 P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 - GENESIS_PRIVATE_KEY: 80264082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD4164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 + GENESIS_PRIVATE_KEY: 80262082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"}]' ports: diff --git a/configs/swarm/docker-compose.yml b/configs/swarm/docker-compose.yml index 37ad885df05..4b3b3a94c05 100644 --- a/configs/swarm/docker-compose.yml +++ b/configs/swarm/docker-compose.yml @@ -8,12 +8,12 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D - PRIVATE_KEY: 802640A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D + PRIVATE_KEY: 802620A4DFC16789FBF9A588525E4AC7F791AC51B12AEE8919EACC03EB2FC31D32C692 P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 TRUSTED_PEERS: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]' - GENESIS_PRIVATE_KEY: 80264082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD4164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 + GENESIS_PRIVATE_KEY: 80262082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad2:1339","public_key":"ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10"},{"address":"irohad1:1338","public_key":"ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D"},{"address":"irohad0:1337","public_key":"ed0120A98BAFB0663CE08D75EBD506FEC38A84E576A7C9B0897693ED4B04FD9EF2D18D"},{"address":"irohad3:1340","public_key":"ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE"}]' ports: @@ -49,7 +49,7 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed01209897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D - PRIVATE_KEY: 8026403ECA64ADC23DC106C9D703233375EA6AC345AD7299FF3AD45F355DE6CD1B55109897952D14BDFAEA780087C38FF3EB800CB20B882748FC95A575ADB9CD2CB21D + PRIVATE_KEY: 8026203ECA64ADC23DC106C9D703233375EA6AC345AD7299FF3AD45F355DE6CD1B5510 P2P_ADDRESS: 0.0.0.0:1338 API_ADDRESS: 0.0.0.0:8081 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 @@ -71,7 +71,7 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed01204EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10 - PRIVATE_KEY: 8026407B1C78F733EDAFD6AF9BAC3A0D6C5A494557DD031609A4FDD9796EEF471D928C4EE2FCD53E1730AF142D1E23951198678295047F9314B4006B0CB61850B1DB10 + PRIVATE_KEY: 8026207B1C78F733EDAFD6AF9BAC3A0D6C5A494557DD031609A4FDD9796EEF471D928C P2P_ADDRESS: 0.0.0.0:1339 API_ADDRESS: 0.0.0.0:8082 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 @@ -93,7 +93,7 @@ services: environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed0120CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE - PRIVATE_KEY: 8026406C7FF4CA09D395C7B7332C654099406E929C6238942E3CE85155CC1A5E2CF519CACF3A84B8DC8710CE9D6B968EE95EC7EE4C93C85858F026F3B4417F569592CE + PRIVATE_KEY: 8026206C7FF4CA09D395C7B7332C654099406E929C6238942E3CE85155CC1A5E2CF519 P2P_ADDRESS: 0.0.0.0:1340 API_ADDRESS: 0.0.0.0:8083 GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4 diff --git a/configs/swarm/executor.wasm b/configs/swarm/executor.wasm index 1cc29162a859aa591baab49ee96b9eb15b7a5b06..7bff907546dc02ce0ce0bbc275f51825e3b4c6d5 100644 GIT binary patch delta 78799 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%0DPrAtHQ?UwRb1rcX;(Gh>Cun#Up>0_gMwR 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 diff --git a/crypto/src/lib.rs b/crypto/src/lib.rs index dfe5fa32471..3f2b2c16c2a 100755 --- a/crypto/src/lib.rs +++ b/crypto/src/lib.rs @@ -670,7 +670,7 @@ impl PrivateKey { fn payload(&self) -> Vec { use crate::secrecy::ExposeSecret; match self.0.expose_secret() { - PrivateKeyInner::Ed25519(key) => key.to_keypair_bytes().to_vec(), + PrivateKeyInner::Ed25519(key) => key.to_bytes().to_vec(), PrivateKeyInner::Secp256k1(key) => key.to_bytes().to_vec(), PrivateKeyInner::BlsNormal(key) => key.to_bytes(), PrivateKeyInner::BlsSmall(key) => key.to_bytes(), @@ -1009,13 +1009,17 @@ mod tests { #[test] fn key_pair_match() { - KeyPair::new("ed012059C8A4DA1EBB5380F74ABA51F502714652FDCCE9611FAFB9904E4A3C4D382774" - .parse() - .expect("Public key not in mulithash format"), - PrivateKey::from_hex( - Algorithm::Ed25519, - "93CA389FC2979F3F7D2A7F8B76C70DE6D5EAF5FA58D4F93CB8B0FB298D398ACC59C8A4DA1EBB5380F74ABA51F502714652FDCCE9611FAFB9904E4A3C4D382774" - ).expect("Private key not hex encoded")).unwrap(); + KeyPair::new( + "ed012059C8A4DA1EBB5380F74ABA51F502714652FDCCE9611FAFB9904E4A3C4D382774" + .parse() + .expect("Public key not in mulithash format"), + PrivateKey::from_hex( + Algorithm::Ed25519, + "93CA389FC2979F3F7D2A7F8B76C70DE6D5EAF5FA58D4F93CB8B0FB298D398ACC", + ) + .expect("Private key not hex encoded"), + ) + .unwrap(); KeyPair::new("ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2" .parse() @@ -1066,13 +1070,17 @@ mod tests { #[test] fn key_pair_mismatch() { - KeyPair::new("ed012059C8A4DA1EBB5380F74ABA51F502714652FDCCE9611FAFB9904E4A3C4D382774" - .parse() - .expect("Public key not in mulithash format"), - PrivateKey::from_hex( - Algorithm::Ed25519, - "3A7991AF1ABB77F3FD27CC148404A6AE4439D095A63591B77C788D53F708A02A1509A611AD6D97B01D871E58ED00C8FD7C3917B6CA61A8C2833A19E000AAC2E4" - ).expect("Private key not valid")).unwrap_err(); + KeyPair::new( + "ed012059C8A4DA1EBB5380F74ABA51F502714652FDCCE9611FAFB9904E4A3C4D382774" + .parse() + .expect("Public key not in mulithash format"), + PrivateKey::from_hex( + Algorithm::Ed25519, + "3A7991AF1ABB77F3FD27CC148404A6AE4439D095A63591B77C788D53F708A02A", + ) + .expect("Private key not valid"), + ) + .unwrap_err(); KeyPair::new("ea01309060D021340617E9554CCBC2CF3CC3DB922A9BA323ABDF7C271FCC6EF69BE7A8DEBCA7D9E96C0F0089ABA22CDAADE4A2" .parse() @@ -1155,17 +1163,21 @@ mod tests { assert_test_json_serde!( json!({ "public_key": "ed01201509A611AD6D97B01D871E58ED00C8FD7C3917B6CA61A8C2833A19E000AAC2E4", - "private_key": "8026403A7991AF1ABB77F3FD27CC148404A6AE4439D095A63591B77C788D53F708A02A1509A611AD6D97B01D871E58ED00C8FD7C3917B6CA61A8C2833A19E000AAC2E4" + "private_key": "8026203A7991AF1ABB77F3FD27CC148404A6AE4439D095A63591B77C788D53F708A02A" }), TestJson { public_key: PublicKey::from_hex( Algorithm::Ed25519, "1509A611AD6D97B01D871E58ED00C8FD7C3917B6CA61A8C2833A19E000AAC2E4" - ).unwrap(), - private_key: ExposedPrivateKey(PrivateKey::from_hex( - Algorithm::Ed25519, - "3a7991af1abb77f3fd27cc148404a6ae4439d095a63591b77c788d53f708a02a1509a611ad6d97b01d871e58ed00c8fd7c3917b6ca61a8c2833a19e000aac2e4", - ).unwrap()) + ) + .unwrap(), + private_key: ExposedPrivateKey( + PrivateKey::from_hex( + Algorithm::Ed25519, + "3a7991af1abb77f3fd27cc148404a6ae4439d095a63591b77c788d53f708a02a", + ) + .unwrap() + ) } ); } diff --git a/crypto/src/multihash.rs b/crypto/src/multihash.rs index 747fd1b5c98..d3f9cd269ba 100644 --- a/crypto/src/multihash.rs +++ b/crypto/src/multihash.rs @@ -214,9 +214,9 @@ mod tests { fn test_encode_private_key() { let algorithm = Algorithm::Ed25519; let payload = - hex_decode("8F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB").unwrap(); + hex_decode("8F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F").unwrap(); let multihash = - hex_decode("8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB") + hex_decode("8026208F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F") .unwrap(); assert_eq!(encode_private_key(algorithm, &payload).unwrap(), multihash); } @@ -225,9 +225,9 @@ mod tests { fn test_decode_private_key() { let algorithm = Algorithm::Ed25519; let payload = - hex_decode("8F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB").unwrap(); + hex_decode("8F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F").unwrap(); let multihash = - hex_decode("8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB") + hex_decode("8026208F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F") .unwrap(); assert_eq!( decode_private_key(&multihash).unwrap(), diff --git a/crypto/src/signature/ed25519.rs b/crypto/src/signature/ed25519.rs index 770d6b30615..8608fd90397 100644 --- a/crypto/src/signature/ed25519.rs +++ b/crypto/src/signature/ed25519.rs @@ -1,4 +1,4 @@ -use core::convert::TryFrom; +use core::convert::{Infallible, TryFrom}; use ed25519_dalek::Signature; #[cfg(feature = "rand")] @@ -51,7 +51,9 @@ impl Ed25519Sha512 { } pub fn parse_private_key(payload: &[u8]) -> Result { - parse_fixed_size(payload, PrivateKey::from_keypair_bytes) + parse_fixed_size(payload, |bytes| { + Ok::<_, Infallible>(PrivateKey::from_bytes(bytes)) + }) } pub fn sign(message: &[u8], sk: &PrivateKey) -> Vec { @@ -78,7 +80,7 @@ mod test { const MESSAGE_1: &[u8] = b"This is a dummy message for use with tests"; const SIGNATURE_1: &str = "451b5b8e8725321541954997781de51f4142e4a56bab68d24f6a6b92615de5eefb74134138315859a32c7cf5fe5a488bc545e2e08e5eedfd1fb10188d532d808"; - const PRIVATE_KEY: &str = "1c1179a560d092b90458fe6ab8291215a427fcd6b3927cb240701778ef55201927c96646f2d4632d4fc241f84cbc427fbc3ecaa95becba55088d6c7b81fc5bbf"; + const PRIVATE_KEY: &str = "1c1179a560d092b90458fe6ab8291215a427fcd6b3927cb240701778ef552019"; const PUBLIC_KEY: &str = "27c96646f2d4632d4fc241f84cbc427fbc3ecaa95becba55088d6c7b81fc5bbf"; fn key_pair_factory() -> (ed25519::PublicKey, ed25519::PrivateKey) { @@ -168,7 +170,7 @@ mod test { let err = Ed25519Sha512::parse_private_key(&[1, 2, 3]).unwrap_err(); assert_eq!( err, - ParseError("the payload size is incorrect: expected 64, but got 3".to_string()) + ParseError("the payload size is incorrect: expected 32, but got 3".to_string()) ); } } diff --git a/test_samples/src/lib.rs b/test_samples/src/lib.rs index 1227e120e0e..d0c362b46be 100644 --- a/test_samples/src/lib.rs +++ b/test_samples/src/lib.rs @@ -28,7 +28,7 @@ macro_rules! declare_keypair { .expect(r#"public_key should be valid multihash e.g. "ed0120...""#), $private_key .parse() - .expect(r#"private_key should be valid multihash e.g. "802640...""#), + .expect(r#"private_key should be valid multihash e.g. "802620...""#), ) .expect("public_key and private_key should be valid as a pair") }); @@ -48,10 +48,38 @@ macro_rules! declare_account_with_keypair { }; } -declare_keypair!(PEER_KEYPAIR, "ed01207233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0", "8026409AC47ABF59B356E0BD7DCBBBB4DEC080E302156A48CA907E47CB6AEA1D32719E7233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0"); +declare_keypair!( + PEER_KEYPAIR, + "ed01207233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0", + "8026209AC47ABF59B356E0BD7DCBBBB4DEC080E302156A48CA907E47CB6AEA1D32719E" +); -declare_account_with_keypair!(ALICE_ID, "wonderland", ALICE_KEYPAIR, "ed0120CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03", "802640CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03"); -declare_account_with_keypair!(BOB_ID, "wonderland", BOB_KEYPAIR, "ed012004FF5B81046DDCCF19E2E451C45DFB6F53759D4EB30FA2EFA807284D1CC33016", "802640AF3F96DEEF44348FEB516C057558972CEC4C75C4DB9C5B3AAC843668854BF82804FF5B81046DDCCF19E2E451C45DFB6F53759D4EB30FA2EFA807284D1CC33016"); -declare_account_with_keypair!(CARPENTER_ID, "garden_of_live_flowers", CARPENTER_KEYPAIR, "ed0120E9F632D3034BAB6BB26D92AC8FD93EF878D9C5E69E01B61B4C47101884EE2F99", "802640B5DD003D106B273F3628A29E6087C31CE12C9F32223BE26DD1ADB85CEBB48E1DE9F632D3034BAB6BB26D92AC8FD93EF878D9C5E69E01B61B4C47101884EE2F99"); +declare_account_with_keypair!( + ALICE_ID, + "wonderland", + ALICE_KEYPAIR, + "ed0120CE7FA46C9DCE7EA4B125E2E36BDB63EA33073E7590AC92816AE1E861B7048B03", + "802620CCF31D85E3B32A4BEA59987CE0C78E3B8E2DB93881468AB2435FE45D5C9DCD53" +); +declare_account_with_keypair!( + BOB_ID, + "wonderland", + BOB_KEYPAIR, + "ed012004FF5B81046DDCCF19E2E451C45DFB6F53759D4EB30FA2EFA807284D1CC33016", + "802620AF3F96DEEF44348FEB516C057558972CEC4C75C4DB9C5B3AAC843668854BF828" +); +declare_account_with_keypair!( + CARPENTER_ID, + "garden_of_live_flowers", + CARPENTER_KEYPAIR, + "ed0120E9F632D3034BAB6BB26D92AC8FD93EF878D9C5E69E01B61B4C47101884EE2F99", + "802620B5DD003D106B273F3628A29E6087C31CE12C9F32223BE26DD1ADB85CEBB48E1D" +); // kagami crypto --seed "Irohagenesis" -declare_account_with_keypair!(SAMPLE_GENESIS_ACCOUNT_ID, "genesis", SAMPLE_GENESIS_ACCOUNT_KEYPAIR, "ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4", "80264082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD4164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4"); +declare_account_with_keypair!( + SAMPLE_GENESIS_ACCOUNT_ID, + "genesis", + SAMPLE_GENESIS_ACCOUNT_KEYPAIR, + "ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4", + "80262082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD" +); diff --git a/tools/swarm/src/lib.rs b/tools/swarm/src/lib.rs index 0cb68c2c016..45abe6a68c7 100644 --- a/tools/swarm/src/lib.rs +++ b/tools/swarm/src/lib.rs @@ -185,11 +185,11 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA - PRIVATE_KEY: 802640F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB87FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA + PRIVATE_KEY: 802620F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E - GENESIS_PRIVATE_KEY: 802640FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E + GENESIS_PRIVATE_KEY: 802620FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0 GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad0:1337","public_key":"ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA"}]' ports: @@ -237,11 +237,11 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA - PRIVATE_KEY: 802640F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB87FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA + PRIVATE_KEY: 802620F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E - GENESIS_PRIVATE_KEY: 802640FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E + GENESIS_PRIVATE_KEY: 802620FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0 GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad0:1337","public_key":"ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA"}]' ports: @@ -288,12 +288,12 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA - PRIVATE_KEY: 802640F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB87FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA + PRIVATE_KEY: 802620F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E TRUSTED_PEERS: '[{"address":"irohad3:1340","public_key":"ed012063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26"},{"address":"irohad1:1338","public_key":"ed012064BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2"},{"address":"irohad2:1339","public_key":"ed01208EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300"}]' - GENESIS_PRIVATE_KEY: 802640FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E + GENESIS_PRIVATE_KEY: 802620FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0 GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad3:1340","public_key":"ed012063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26"},{"address":"irohad1:1338","public_key":"ed012064BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2"},{"address":"irohad0:1337","public_key":"ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA"},{"address":"irohad2:1339","public_key":"ed01208EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300"}]' ports: @@ -326,7 +326,7 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012064BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2 - PRIVATE_KEY: 802640FD8E2F03755AA130464ABF57A75E207BE870636B57F614D7A7B94E42318F9CA964BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2 + PRIVATE_KEY: 802620FD8E2F03755AA130464ABF57A75E207BE870636B57F614D7A7B94E42318F9CA9 P2P_ADDRESS: 0.0.0.0:1338 API_ADDRESS: 0.0.0.0:8081 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E @@ -345,7 +345,7 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed01208EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300 - PRIVATE_KEY: 8026403A18FAC2654F1C8A331A84F4B142396EEC900022B38842D88D55E0DE144C8DF28EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300 + PRIVATE_KEY: 8026203A18FAC2654F1C8A331A84F4B142396EEC900022B38842D88D55E0DE144C8DF2 P2P_ADDRESS: 0.0.0.0:1339 API_ADDRESS: 0.0.0.0:8082 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E @@ -364,7 +364,7 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26 - PRIVATE_KEY: 8026409464445DBA9030D6AC4F83161D3219144F886068027F6708AF9686F85DF6C4F063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26 + PRIVATE_KEY: 8026209464445DBA9030D6AC4F83161D3219144F886068027F6708AF9686F85DF6C4F0 P2P_ADDRESS: 0.0.0.0:1340 API_ADDRESS: 0.0.0.0:8083 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E @@ -393,11 +393,11 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA - PRIVATE_KEY: 802640F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB87FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA + PRIVATE_KEY: 802620F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E - GENESIS_PRIVATE_KEY: 802640FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E + GENESIS_PRIVATE_KEY: 802620FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0 GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad0:1337","public_key":"ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA"}]' ports: @@ -447,12 +447,12 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA - PRIVATE_KEY: 802640F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB87FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA + PRIVATE_KEY: 802620F173D8C4913E2244715B9BF810AC0A4DBE1C9E08F595C8D9510E3E335EF964BB P2P_ADDRESS: 0.0.0.0:1337 API_ADDRESS: 0.0.0.0:8080 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E TRUSTED_PEERS: '[{"address":"irohad3:1340","public_key":"ed012063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26"},{"address":"irohad1:1338","public_key":"ed012064BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2"},{"address":"irohad2:1339","public_key":"ed01208EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300"}]' - GENESIS_PRIVATE_KEY: 802640FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E + GENESIS_PRIVATE_KEY: 802620FB8B867188E4952F1E83534B9B2E0A12D5122BD6F417CBC79D50D8A8C9C917B0 GENESIS: /tmp/genesis.signed.scale TOPOLOGY: '[{"address":"irohad3:1340","public_key":"ed012063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26"},{"address":"irohad1:1338","public_key":"ed012064BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2"},{"address":"irohad0:1337","public_key":"ed012087FDCACF58B891947600B0C37795CADB5A2AE6DE612338FDA9489AB21CE427BA"},{"address":"irohad2:1339","public_key":"ed01208EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300"}]' ports: @@ -489,7 +489,7 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012064BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2 - PRIVATE_KEY: 802640FD8E2F03755AA130464ABF57A75E207BE870636B57F614D7A7B94E42318F9CA964BD9B25BF8477144D03B26FC8CF5D8A354B2F780DA310EE69933DC1E86FBCE2 + PRIVATE_KEY: 802620FD8E2F03755AA130464ABF57A75E207BE870636B57F614D7A7B94E42318F9CA9 P2P_ADDRESS: 0.0.0.0:1338 API_ADDRESS: 0.0.0.0:8081 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E @@ -512,7 +512,7 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed01208EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300 - PRIVATE_KEY: 8026403A18FAC2654F1C8A331A84F4B142396EEC900022B38842D88D55E0DE144C8DF28EA177921AF051CD12FC07E3416419320908883A1104B31401B650EEB820A300 + PRIVATE_KEY: 8026203A18FAC2654F1C8A331A84F4B142396EEC900022B38842D88D55E0DE144C8DF2 P2P_ADDRESS: 0.0.0.0:1339 API_ADDRESS: 0.0.0.0:8082 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E @@ -535,7 +535,7 @@ mod tests { environment: CHAIN: 00000000-0000-0000-0000-000000000000 PUBLIC_KEY: ed012063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26 - PRIVATE_KEY: 8026409464445DBA9030D6AC4F83161D3219144F886068027F6708AF9686F85DF6C4F063ED3DFEDEBD8A86B4941CC4379D2EF0B74BDFE61F033FC0C89867D57C882A26 + PRIVATE_KEY: 8026209464445DBA9030D6AC4F83161D3219144F886068027F6708AF9686F85DF6C4F0 P2P_ADDRESS: 0.0.0.0:1340 API_ADDRESS: 0.0.0.0:8083 GENESIS_PUBLIC_KEY: ed0120F9F92758E815121F637C9704DFDA54842BA937AA721C0603018E208D6E25787E