referrerpolicy=no-referrer-when-downgrade

polkadot_subsystem_bench/
keyring.rs

1// Copyright (C) Parity Technologies (UK) Ltd.
2// This file is part of Polkadot.
3
4// Polkadot is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8
9// Polkadot is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License
15// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.
16
17use polkadot_primitives::ValidatorId;
18use sc_keystore::LocalKeystore;
19use sp_application_crypto::AppCrypto;
20use sp_core::sr25519::Public;
21use sp_keystore::Keystore;
22use std::sync::Arc;
23
24/// Set of test accounts generated and kept safe by a keystore.
25#[derive(Clone)]
26pub struct Keyring {
27	keystore: Arc<LocalKeystore>,
28}
29
30impl Default for Keyring {
31	fn default() -> Self {
32		Self { keystore: Arc::new(LocalKeystore::in_memory()) }
33	}
34}
35
36impl Keyring {
37	pub fn sr25519_new(&self, seed: &str) -> Public {
38		self.keystore
39			.sr25519_generate_new(ValidatorId::ID, Some(seed))
40			.expect("Insert key into keystore")
41	}
42
43	pub fn keystore(&self) -> Arc<dyn Keystore> {
44		self.keystore.clone()
45	}
46
47	pub fn local_keystore(&self) -> Arc<LocalKeystore> {
48		self.keystore.clone()
49	}
50
51	pub fn keystore_ref(&self) -> &LocalKeystore {
52		self.keystore.as_ref()
53	}
54}