oasis_runtime_sdk/testing/
keys.rs

1//! Module that contains known test keys.
2
3/// Define an ed25519 test key.
4macro_rules! test_key_ed25519 {
5    ($doc:expr, $name:ident, $seed:expr) => {
6        #[doc = " Test key "]
7        #[doc=$doc]
8        #[doc = "."]
9        pub mod $name {
10            use crate::{
11                core::common::crypto::hash::Hash,
12                crypto::signature::{ed25519, PublicKey, Signer},
13                types::address::{Address, SignatureAddressSpec},
14            };
15
16            #[doc = " Test Ed25519 signer "]
17            #[doc=$doc]
18            #[doc = "."]
19            pub fn signer() -> ed25519::MemorySigner {
20                let seed = Hash::digest_bytes($seed.as_bytes());
21                ed25519::MemorySigner::new_from_seed(seed.as_ref()).unwrap()
22            }
23
24            #[doc = " Test public key "]
25            #[doc=$doc]
26            #[doc = "."]
27            pub fn pk() -> PublicKey {
28                signer().public_key()
29            }
30
31            #[doc = " Test Ed25519 public key "]
32            #[doc=$doc]
33            #[doc = "."]
34            pub fn pk_ed25519() -> ed25519::PublicKey {
35                if let PublicKey::Ed25519(pk) = pk() {
36                    pk
37                } else {
38                    unreachable!()
39                }
40            }
41
42            #[doc = " Test address derivation information "]
43            #[doc=$doc]
44            #[doc = "."]
45            pub fn sigspec() -> SignatureAddressSpec {
46                SignatureAddressSpec::Ed25519(pk_ed25519())
47            }
48
49            #[doc = " Test address "]
50            #[doc=$doc]
51            #[doc = "."]
52            pub fn address() -> Address {
53                Address::from_sigspec(&sigspec())
54            }
55        }
56    };
57}
58
59/// Define a secp256k1 test key.
60macro_rules! test_key_secp256k1 {
61    ($doc:expr, $name:ident, $seed:expr) => {
62        #[doc = " Test key "]
63        #[doc=$doc]
64        #[doc = "."]
65        pub mod $name {
66            use crate::{
67                core::common::crypto::hash::Hash,
68                crypto::signature::{secp256k1, PublicKey, Signer},
69                types::address::{Address, SignatureAddressSpec},
70            };
71
72            #[doc = " Test Secp256k1 signer "]
73            #[doc=$doc]
74            #[doc = "."]
75            pub fn signer() -> secp256k1::MemorySigner {
76                let seed = Hash::digest_bytes($seed.as_bytes());
77                secp256k1::MemorySigner::new_from_seed(seed.as_ref()).unwrap()
78            }
79
80            #[doc = " Test public key "]
81            #[doc=$doc]
82            #[doc = "."]
83            pub fn pk() -> PublicKey {
84                signer().public_key()
85            }
86
87            #[doc = " Test Secp256k1 public key "]
88            #[doc=$doc]
89            #[doc = "."]
90            pub fn pk_secp256k1() -> secp256k1::PublicKey {
91                if let PublicKey::Secp256k1(pk) = pk() {
92                    pk
93                } else {
94                    unreachable!()
95                }
96            }
97
98            #[doc = " Test address derivation information "]
99            #[doc=$doc]
100            #[doc = "."]
101            pub fn sigspec() -> SignatureAddressSpec {
102                SignatureAddressSpec::Secp256k1Eth(pk_secp256k1())
103            }
104
105            #[doc = " Test address "]
106            #[doc=$doc]
107            #[doc = "."]
108            pub fn address() -> Address {
109                Address::from_sigspec(&sigspec())
110            }
111        }
112    };
113}
114
115/// Define an sr25519 test key.
116macro_rules! test_key_sr25519 {
117    ($doc:expr, $name:ident, $seed:expr) => {
118        #[doc = " Test key "]
119        #[doc=$doc]
120        #[doc = "."]
121        pub mod $name {
122            use crate::{
123                core::common::crypto::hash::Hash,
124                crypto::signature::{sr25519, PublicKey, Signer},
125                types::address::{Address, SignatureAddressSpec},
126            };
127
128            #[doc = " Test Sr25519 signer "]
129            #[doc=$doc]
130            #[doc = "."]
131            pub fn signer() -> sr25519::MemorySigner {
132                let seed = Hash::digest_bytes($seed.as_bytes());
133                sr25519::MemorySigner::new_from_seed(seed.as_ref()).unwrap()
134            }
135
136            #[doc = " Test public key "]
137            #[doc=$doc]
138            #[doc = "."]
139            pub fn pk() -> PublicKey {
140                signer().public_key()
141            }
142
143            #[doc = " Test Sr25519 public key "]
144            #[doc=$doc]
145            #[doc = "."]
146            pub fn pk_sr25519() -> sr25519::PublicKey {
147                if let PublicKey::Sr25519(pk) = pk() {
148                    pk
149                } else {
150                    unreachable!()
151                }
152            }
153
154            #[doc = " Test address derivation information "]
155            #[doc=$doc]
156            #[doc = "."]
157            pub fn sigspec() -> SignatureAddressSpec {
158                SignatureAddressSpec::Sr25519(pk_sr25519())
159            }
160
161            #[doc = " Test address "]
162            #[doc=$doc]
163            #[doc = "."]
164            pub fn address() -> Address {
165                Address::from_sigspec(&sigspec())
166            }
167        }
168    };
169}
170
171test_key_ed25519!("A", alice, "oasis-runtime-sdk/test-keys: alice");
172test_key_ed25519!("B", bob, "oasis-runtime-sdk/test-keys: bob");
173test_key_ed25519!("C", charlie, "oasis-runtime-sdk/test-keys: charlie");
174test_key_secp256k1!("D", dave, "oasis-runtime-sdk/test-keys: dave");
175test_key_secp256k1!("E", erin, "oasis-runtime-sdk/test-keys: erin");
176test_key_sr25519!("F", frank, "oasis-runtime-sdk/test-keys: frank");
177test_key_sr25519!("G", grace, "oasis-runtime-sdk/test-keys: grace");