Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
981eb80
start on key splitter
Zacholme7 Feb 13, 2025
423df87
wip
Zacholme7 Feb 14, 2025
ed9a7da
merge
Zacholme7 Feb 14, 2025
f50c223
read in keystore file
Zacholme7 Feb 14, 2025
d7e788e
wip
Zacholme7 Feb 14, 2025
89c7dca
Merge branch 'unstable' into keysplitter
Zacholme7 Feb 17, 2025
a02ceb0
Merge branch 'unstable' into keysplitter
Zacholme7 Feb 17, 2025
e2d419a
crypto
Zacholme7 Feb 17, 2025
43fbf31
wip
Zacholme7 Feb 17, 2025
3d013a2
cleanup
Zacholme7 Feb 17, 2025
7ed622e
impl error
Zacholme7 Feb 18, 2025
dd88456
bubblegum impl
Zacholme7 Feb 18, 2025
4e4af57
wip
Zacholme7 Feb 18, 2025
d7a52c2
dirty working version
Zacholme7 Feb 18, 2025
e1c8ab0
cleanup
Zacholme7 Feb 18, 2025
045b7af
cleanup
Zacholme7 Feb 18, 2025
eca2089
Merge branch 'unstable' into keysplitter
Zacholme7 Feb 18, 2025
9fcf59a
fmt and sort
Zacholme7 Feb 18, 2025
47c8fc4
remove unused dep
Zacholme7 Feb 18, 2025
bac0144
merge
Zacholme7 Feb 19, 2025
33e90ce
revert sync for now
Zacholme7 Feb 19, 2025
62211a3
nits
Zacholme7 Feb 19, 2025
709cc2d
fmt
Zacholme7 Feb 19, 2025
3333e2d
spelling
Zacholme7 Feb 19, 2025
c5b60ee
Merge branch 'unstable' into keysplitter
Zacholme7 Feb 19, 2025
63cd485
rought draft for onchain sync
Zacholme7 Feb 19, 2025
5edb56e
rough draft onchain
Zacholme7 Feb 19, 2025
bf43d71
working onchain sync!
Zacholme7 Feb 19, 2025
982f860
nits
Zacholme7 Feb 19, 2025
8c06f40
ci
Zacholme7 Feb 19, 2025
7ba6930
keygen to keysplit
Zacholme7 Feb 19, 2025
aef494d
better errors
Zacholme7 Feb 19, 2025
120d698
merge
Zacholme7 Feb 20, 2025
6d66b5a
verify and small nits
Zacholme7 Feb 20, 2025
27fe175
fix error
Zacholme7 Feb 20, 2025
ff071e8
fix db path
Zacholme7 Feb 20, 2025
e655fcd
testing
Zacholme7 Feb 20, 2025
58efbc0
initial
Zacholme7 Feb 21, 2025
9ca6e00
keygen
Zacholme7 Feb 21, 2025
aaec9b3
sort
Zacholme7 Feb 21, 2025
f11a7d5
writing to file
Zacholme7 Feb 21, 2025
a19f39f
json output
Zacholme7 Feb 21, 2025
ec900c6
support pbkdf2
Zacholme7 Feb 26, 2025
9f46e35
unused dep
Zacholme7 Feb 26, 2025
ba00d9c
Merge branch 'unstable' into onchain-split
Zacholme7 Feb 27, 2025
2fd87d2
Merge branch 'unstable' into rsa-keygen
Zacholme7 Feb 27, 2025
8c7d503
fix pr commentsg
Zacholme7 Feb 27, 2025
25615e7
initial
Zacholme7 Feb 21, 2025
8515461
keygen
Zacholme7 Feb 21, 2025
b9ee7eb
sort
Zacholme7 Feb 21, 2025
56b34be
writing to file
Zacholme7 Feb 21, 2025
417679a
json output
Zacholme7 Feb 21, 2025
8093c29
Merge branch 'rsa-keygen' of github.com:Zacholme7/anchor into rsa-keygen
Zacholme7 Feb 27, 2025
cb8c571
fix merge
Zacholme7 Feb 28, 2025
bd570bb
move from anchor to node
Zacholme7 Feb 28, 2025
ea83455
hex encoding keys before encryption
Zacholme7 Feb 28, 2025
a2cd71b
keygen with new headers
Zacholme7 Mar 3, 2025
b23c8e5
fmt
Zacholme7 Mar 3, 2025
5975bb2
merge
Zacholme7 Mar 3, 2025
f535b4d
fix comment
Zacholme7 Mar 3, 2025
0c986db
fix merge
Zacholme7 Mar 4, 2025
c9f3cc7
also write pem file
Zacholme7 Mar 4, 2025
783520b
Merge branch 'unstable' into onchain-split
Zacholme7 Mar 5, 2025
7e744a3
merge
Zacholme7 Mar 5, 2025
4d7dcae
fix compile
Zacholme7 Mar 5, 2025
d58c798
Merge branch 'onchain-split' into rsa-keygen
Zacholme7 Mar 5, 2025
febf950
fix unwrap
Zacholme7 Mar 5, 2025
c9da4b3
Merge branch 'unstable' into onchain-split
Zacholme7 Mar 6, 2025
7e03ef7
Merge branch 'unstable' into rsa-keygen
Zacholme7 Mar 6, 2025
fe56858
convert header
Zacholme7 Mar 6, 2025
29772cf
Merge branch 'unstable' into onchain-split
Zacholme7 Mar 10, 2025
74132df
Merge branch 'onchain-split' into rsa-keygen
Zacholme7 Mar 10, 2025
1a68ec2
Merge branch 'unstable' into onchain-split
Zacholme7 Mar 11, 2025
a7f8e08
Merge branch 'onchain-split' into rsa-keygen
Zacholme7 Mar 11, 2025
b787234
merge
Zacholme7 Mar 12, 2025
30e09d3
format
Zacholme7 Mar 12, 2025
ca097f5
Merge branch 'unstable' into rsa-keygen
jking-aus Mar 13, 2025
9dbbc3e
suggestions
ThreeHrSleep Mar 13, 2025
73d22ea
return error if files already exist
ThreeHrSleep Mar 14, 2025
d6d90a9
force file overwrite
Zacholme7 Mar 14, 2025
b6c0072
zeroize
Zacholme7 Mar 17, 2025
f314de4
change error handling
Zacholme7 Mar 17, 2025
2e2a3bb
sort
Zacholme7 Mar 17, 2025
9567bca
todo comments for encryption
jking-aus Mar 18, 2025
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.

1 change: 1 addition & 0 deletions anchor/client/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ fdlimit = "0.3"
http_api = { workspace = true }
http_metrics = { workspace = true }
hyper = { workspace = true }
keygen = { workspace = true }
message_receiver = { workspace = true }
message_sender = { workspace = true }
message_validator = { workspace = true }
Expand Down
15 changes: 5 additions & 10 deletions anchor/client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ use config::Config;
use database::{NetworkDatabase, WatchableNetworkState};
use eth2::reqwest::{Certificate, ClientBuilder};
use eth2::{BeaconNodeHttpClient, Timeouts};
use keygen::{run_keygen, Keygen};
use message_receiver::ManagerMessageReceiver;
use message_sender::NetworkMessageSender;
use message_validator::Validator;
Expand All @@ -27,7 +28,7 @@ use slashing_protection::SlashingDatabase;
use slot_clock::{SlotClock, SystemTimeSlotClock};
use ssv_types::OperatorId;
use std::fs::File;
use std::io::{ErrorKind, Read, Write};
use std::io::{ErrorKind, Read};
use std::net::SocketAddr;
use std::path::Path;
use std::sync::Arc;
Expand Down Expand Up @@ -759,15 +760,9 @@ fn read_or_generate_private_key(path: &Path) -> Result<Rsa<Private>, String> {

info!(path = %path.as_os_str().to_string_lossy(), "Creating private key");

let mut file = File::create(path)
.map_err(|e| format!("Unable create private key file at {path:?}: {e:?}"))?;

let key = Rsa::generate(2048).map_err(|e| format!("Unable to generate key: {e:?}"))?;

file.write_all(&Zeroizing::new(
key.private_key_to_pem()
.map_err(|e| format!("Unable serialize private key: {e:?}"))?,
))
let key = run_keygen(Keygen {
output_path: Some(path.to_string_lossy().to_string()),
})
.map_err(|e| format!("Unable to write private key: {e:?}"))?;

Ok(key)
Expand Down
37 changes: 22 additions & 15 deletions anchor/keygen/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use base64::prelude::*;
use clap::Parser;
use openssl::rsa::Rsa;
use openssl::{pkey::Private, rsa::Rsa};
use serde::Serialize;
use std::{fs, path::PathBuf};
use tracing::info;
use tracing::{info, warn};

#[derive(Debug)]
pub enum KeygenError {
Expand All @@ -27,7 +27,7 @@ struct PrettyOutput {
}

// Run RSA keygeneration
pub fn run_keygen(keygen: Keygen) -> Result<(), KeygenError> {
pub fn run_keygen(keygen: Keygen) -> Result<Rsa<Private>, KeygenError> {
// Generate the new rsa private key
let private_key = Rsa::generate(2048)
.map_err(|e| KeygenError::Generate(format!("Failed to generate new private key: {e}")))?;
Expand Down Expand Up @@ -65,13 +65,6 @@ pub fn run_keygen(keygen: Keygen) -> Result<(), KeygenError> {
let pem_file = output_dir.join("key.pem");
let json_file = output_dir.join("keys.json");

// Write the PEM file
fs::write(&pem_file, &private_pem).map_err(|e| {
KeygenError::Output(format!("Failed to write private key to PEM file: {e}"))
})?;

info!("Private key written to: {}", pem_file.display());

// Create JSON data structure
let data = PrettyOutput {
public: public_pem_encoded,
Expand All @@ -83,11 +76,25 @@ pub fn run_keygen(keygen: Keygen) -> Result<(), KeygenError> {
KeygenError::Output(format!("Failed to convert output data to JSON string: {e}"))
})?;

// Write the JSON file
fs::write(&json_file, pretty_json)
.map_err(|e| KeygenError::Output(format!("Failed to write keys to JSON file: {e}")))?;
if !pem_file.exists() && !json_file.exists() {
// Write the PEM file
fs::write(&pem_file, &private_pem).map_err(|e| {
KeygenError::Output(format!("Failed to write private key to PEM file: {e}"))
})?;

info!("JSON keys written to: {}", json_file.display());
info!("Private key written to: {}", pem_file.display());

// Write the JSON file
fs::write(&json_file, pretty_json)
.map_err(|e| KeygenError::Output(format!("Failed to write keys to JSON file: {e}")))?;

info!("JSON keys written to: {}", json_file.display());
} else {
warn!(
"PEM file or JSON file already exist in {:?}, skipping write",
output_dir
);
}

Ok(())
Ok(private_key)
}