Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

SecretStore: administrative sessions prototypes #6605

Merged
merged 74 commits into from
Oct 2, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
b5bcb61
generate random channel encryption key on restart
svyatonik Sep 5, 2017
1639785
session-level nonces
svyatonik Sep 5, 2017
8fa75c2
fixed warning after rebase
svyatonik Sep 6, 2017
0fbcdac
session_nonce -> nonce
svyatonik Sep 7, 2017
43182db
full_generation_math_session_with_refreshing_shares && full_generatio…
svyatonik Sep 7, 2017
d6e03d5
add serveral secret shares at once
svyatonik Sep 7, 2017
34524c9
Merge branch 'secretstore_addnode_poc' into secretstore_change_server…
svyatonik Sep 12, 2017
04fa83f
SecretStore: initial ShareAdd session prototype
svyatonik Sep 13, 2017
404a992
SecretStore: ServersSetChange jobs
svyatonik Sep 14, 2017
40f2051
SecretStore: servers set change session continued
svyatonik Sep 14, 2017
1061c3c
SecretStore: servers set change session continued
svyatonik Sep 14, 2017
2add88e
SecretStore: servers set change session continued
svyatonik Sep 14, 2017
1abc035
SecretStore: known_sessions iterator
svyatonik Sep 14, 2017
2c98678
SecretStore: implemented SessionsQueue
svyatonik Sep 14, 2017
7163a3f
SecretStore: UnknownSessionsJobTransport
svyatonik Sep 14, 2017
177ccc2
SecretStore: node_added_using_servers_set_change almost done
svyatonik Sep 18, 2017
fe56517
SecretStore: continue adding tests
svyatonik Sep 19, 2017
5788cf9
SecretStore: node_added_using_servers_set_change + node_added_using_s…
svyatonik Sep 19, 2017
320d661
SecretStore: node_added_using_server_set_change_from_this_node
svyatonik Sep 19, 2017
d2cec70
SecretStore: node_moved_using_share_move
svyatonik Sep 20, 2017
16e282e
SecretStore: node_moved_using_servers_set_change
svyatonik Sep 20, 2017
3b95536
SecretStore: node_removed_using_share_remove
svyatonik Sep 20, 2017
20aa6af
SecretStore: node_removed_using_servers_set_change
svyatonik Sep 20, 2017
734b059
SecretStore: different folders for client && admin sessions
svyatonik Sep 20, 2017
ef38dd1
SecretStore: started adding share change consensus (flush)
svyatonik Sep 21, 2017
df000f8
SecretStore: fixed spurious tests failures
svyatonik Sep 21, 2017
7f5802b
enum JobPartialRequestAction
svyatonik Sep 21, 2017
854df5b
SecretStore: started adding consensus layer to ShareAdd session
svyatonik Sep 21, 2017
ad0f2f8
SecretStore: starting external consensus for ShareAdd
svyatonik Sep 22, 2017
45a1bb9
SecretStore: started restoring node_added_using_servers_set_change
svyatonik Sep 25, 2017
7349d1e
SecretStore: node_added_using_servers_set_change works with external …
svyatonik Sep 25, 2017
f006262
SecretStore: node_added_using_server_set_change_from_this_node works …
svyatonik Sep 25, 2017
d25f920
removed debug comments/printlns
svyatonik Sep 25, 2017
0349d29
SecretStore: share move session supports consensus
svyatonik Sep 25, 2017
d87bac0
SecretStore: share remove with external consensus
svyatonik Sep 26, 2017
b0f524a
SecretStore: started adding basic ShareAdd tests
svyatonik Sep 26, 2017
d02f675
SecretStore: added ShareAdd tests
svyatonik Sep 26, 2017
ea15c9c
SecretStore: added ShareAdd session to cluster
svyatonik Sep 26, 2017
7d80d16
SecretStore: added share move && remove sessions to cluster
svyatonik Sep 26, 2017
c8cb715
SecretStore: ShareMove session tests cleanup
svyatonik Sep 26, 2017
a522f47
SecretStore: ShareRemove session tests cleanup
svyatonik Sep 26, 2017
bfcb544
SecretStore: added check_secret_is_preserved check
svyatonik Sep 26, 2017
b56beaf
SecretStore: added servers set change to cluster
svyatonik Sep 27, 2017
fa3a035
SecretStore: cleaned up ServersSetChange session tests
svyatonik Sep 27, 2017
b83795a
SecretStore: cleaning + added tests for ShareRemove
svyatonik Sep 27, 2017
4129a3f
SecretStore: cleaning up
svyatonik Sep 27, 2017
aa460b6
SecretStore: propagated admin_public
svyatonik Sep 27, 2017
895db2d
SecretStore: fixed persistent_key_storage test
svyatonik Sep 27, 2017
baa9350
SecretStore: upgrade_db_from_1
svyatonik Sep 27, 2017
b82ac4f
SecretStore: fixed ServersSetChange session completion
svyatonik Sep 27, 2017
947024f
SecretStore: check polynom1 in ShareAdd sessions (error for pre-v2 sh…
svyatonik Sep 27, 2017
4bf4599
SecretStore: fixing TODOs
svyatonik Sep 27, 2017
0ec87d9
SecretStore: fixing TODOs
svyatonik Sep 28, 2017
7a26086
SecretStore: check share change plan on 'old' slave nodes
svyatonik Sep 28, 2017
fd5b8c1
SecretStore: fixing TODOs
svyatonik Sep 28, 2017
760d246
SecretStore: store all admin sessions in single container to avoid ov…
svyatonik Sep 28, 2017
33fc4f7
SecretStore: do not update nodes set during admin sessions
svyatonik Sep 28, 2017
c61581c
SecretStore: moved TODOs to appropriate methods
svyatonik Sep 28, 2017
c7eafda
SecretStore: TODOs
svyatonik Sep 28, 2017
b8403c1
SecretStore: added admin_public arg && fixed warnigs
svyatonik Sep 28, 2017
dd9ec16
Merge branch 'master' into secretstore_change_server_set
svyatonik Sep 28, 2017
55d8d8b
Merge commit '61daa5f3e7c86a3a5a8b259598334fb0240da076' into secretst…
svyatonik Sep 28, 2017
a89b301
SecretStore: added shares_to_move_reversed to ShareMove session
svyatonik Sep 28, 2017
1f5edc8
SecretStore: additional checks during consensus establishing
svyatonik Sep 28, 2017
cd3be57
license
svyatonik Sep 28, 2017
77c1d90
SecretStore: added TODO about starting ServersSetChange session
svyatonik Sep 28, 2017
693b67a
SecretStore: redundant clones + docs + lsot unimplemented-s
svyatonik Sep 29, 2017
3f1d233
SecretStore: generation_session_completion_signalled_if_failed_on_master
svyatonik Sep 29, 2017
b27bf52
SecretStore: updated obsolete comment
svyatonik Sep 29, 2017
42158be
SecretStore: added type alias for current DocumentKeyShare serializat…
svyatonik Sep 29, 2017
0542cec
SecretStore: fixed typo
svyatonik Sep 29, 2017
90e0484
Merge branch 'master' into secretstore_change_server_set
svyatonik Oct 2, 2017
8e541d7
SecretStore; fixed warnings for futures 0.1.15
svyatonik Sep 28, 2017
9deb579
fixed warning
svyatonik Oct 2, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions parity/cli/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,10 @@ usage! {
"--secretstore-secret=[SECRET]",
"Hex-encoded secret key of this node.",

ARG arg_secretstore_admin_public: (Option<String>) = None, or |c: &Config| otry!(c.secretstore).admin_public.clone(),
"--secretstore-admin-public=[PUBLIC]",
"Hex-encoded public key of secret store administrator.",

["Sealing/Mining options"]
FLAG flag_force_sealing: (bool) = false, or |c: &Config| otry!(c.mining).force_sealing.clone(),
"--force-sealing",
Expand Down Expand Up @@ -1089,6 +1093,7 @@ struct SecretStore {
disable_http: Option<bool>,
disable_acl_check: Option<bool>,
self_secret: Option<String>,
admin_public: Option<String>,
nodes: Option<Vec<String>>,
interface: Option<String>,
port: Option<u16>,
Expand Down Expand Up @@ -1445,6 +1450,7 @@ mod tests {
flag_no_secretstore_http: false,
flag_no_secretstore_acl_check: false,
arg_secretstore_secret: None,
arg_secretstore_admin_public: None,
arg_secretstore_nodes: "".into(),
arg_secretstore_interface: "local".into(),
arg_secretstore_port: 8083u16,
Expand Down Expand Up @@ -1684,6 +1690,7 @@ mod tests {
disable_http: None,
disable_acl_check: None,
self_secret: None,
admin_public: None,
nodes: None,
interface: None,
port: Some(8083),
Expand Down
8 changes: 8 additions & 0 deletions parity/configuration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,7 @@ impl Configuration {
http_interface: self.secretstore_http_interface(),
http_port: self.args.arg_ports_shift + self.args.arg_secretstore_http_port,
data_path: self.directories().secretstore,
admin_public: self.secretstore_admin_public()?,
})
}

Expand Down Expand Up @@ -1037,6 +1038,13 @@ impl Configuration {
}
}

fn secretstore_admin_public(&self) -> Result<Option<Public>, String> {
match self.args.arg_secretstore_admin_public.as_ref() {
Some(admin_public) => Ok(Some(admin_public.parse().map_err(|e| format!("Invalid secret store admin public: {}", e))?)),
None => Ok(None),
}
}

fn secretstore_nodes(&self) -> Result<BTreeMap<Public, (String, u16)>, String> {
let mut nodes = BTreeMap::new();
for node in self.args.arg_secretstore_nodes.split(',').filter(|n| n != &"") {
Expand Down
4 changes: 4 additions & 0 deletions parity/secretstore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ pub struct Configuration {
pub http_port: u16,
/// Data directory path for secret store
pub data_path: String,
/// Administrator public key.
pub admin_public: Option<Public>,
}

/// Secret store dependencies
Expand Down Expand Up @@ -145,6 +147,7 @@ mod server {
port: port,
})).collect(),
allow_connecting_to_higher_nodes: true,
admin_public: conf.admin_public,
},
};

Expand All @@ -170,6 +173,7 @@ impl Default for Configuration {
http_enabled: true,
acl_check_enabled: true,
self_secret: None,
admin_public: None,
nodes: BTreeMap::new(),
interface: "127.0.0.1".to_owned(),
port: 8083,
Expand Down
1 change: 1 addition & 0 deletions secret_store/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ serde_derive = "1.0"
futures = "0.1"
futures-cpupool = "0.1"
rustc-hex = "1.0"
tiny-keccak = "1.3"
tokio-core = "0.1.6"
tokio-io = "0.1.0"
tokio-service = "0.1"
Expand Down
2 changes: 2 additions & 0 deletions secret_store/src/key_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ impl KeyServerCore {
allow_connecting_to_higher_nodes: config.allow_connecting_to_higher_nodes,
acl_storage: acl_storage,
key_storage: key_storage,
admin_public: None,
};

let (stop, stopped) = futures::oneshot();
Expand Down Expand Up @@ -255,6 +256,7 @@ pub mod tests {
port: start_port + (j as u16),
})).collect(),
allow_connecting_to_higher_nodes: false,
admin_public: None,
}).collect();
let key_servers_set: BTreeMap<Public, SocketAddr> = configs[0].nodes.iter()
.map(|(k, a)| (k.clone(), format!("{}:{}", a.address, a.port).parse().unwrap()))
Expand Down
48 changes: 48 additions & 0 deletions secret_store/src/key_server_cluster/admin_sessions/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.

// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.

pub mod servers_set_change_session;
pub mod share_add_session;
pub mod share_change_session;
pub mod share_move_session;
pub mod share_remove_session;

mod sessions_queue;

use key_server_cluster::{SessionId, NodeId, SessionMeta};

/// Share change session metadata.
#[derive(Debug, Clone)]
pub struct ShareChangeSessionMeta {
/// Key id.
pub id: SessionId,
/// Id of node, which has started this session.
pub master_node_id: NodeId,
/// Id of node, on which this session is running.
pub self_node_id: NodeId,
}

impl ShareChangeSessionMeta {
/// Convert to consensus session meta. `all_nodes_set` is the union of `old_nodes_set` && `new_nodes_set`.
pub fn into_consensus_meta(self, all_nodes_set_len: usize) -> SessionMeta {
SessionMeta {
id: self.id,
master_node_id: self.master_node_id,
self_node_id: self.self_node_id,
threshold: all_nodes_set_len - 1,
}
}
}
Loading