Skip to content

Commit b057d83

Browse files
committed
factor out repetition
more DRY
1 parent a31ed40 commit b057d83

File tree

1 file changed

+9
-24
lines changed

1 file changed

+9
-24
lines changed

bpb/src/main.rs

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -105,26 +105,24 @@ fn generate_keypair(userid: String) -> Result<(), Error> {
105105
Ok(())
106106
}
107107

108-
fn print_public_key() -> Result<(), Error> {
108+
fn get_keypair() -> Result<KeyData, Error> {
109109
let config = Config::load()?;
110110
let service = config.service();
111111
let account = config.user_id();
112112
let secret_str = get_keychain_item(service, account)?;
113113
let secret = to_32_bytes(&secret_str)?;
114114

115-
let keypair = KeyData::load(&config, secret)?;
115+
KeyData::load(&config, secret)
116+
}
117+
118+
fn print_public_key() -> Result<(), Error> {
119+
let keypair = get_keypair()?;
116120
println!("{}", keypair.public());
117121
Ok(())
118122
}
119123

120124
fn get_fingerprint() -> Result<pbp::Fingerprint, Error> {
121-
let config = Config::load()?;
122-
let service = config.service();
123-
let account = config.user_id();
124-
let secret_str = get_keychain_item(service, account)?;
125-
let secret = to_32_bytes(&secret_str)?;
126-
127-
let keypair = KeyData::load(&config, secret)?;
125+
let keypair = get_keypair()?;
128126
Ok(keypair.fingerprint())
129127
}
130128

@@ -147,14 +145,7 @@ fn verify_commit() -> Result<(), Error> {
147145
let mut stdin = std::io::stdin();
148146
stdin.read_to_string(&mut commit)?;
149147

150-
let config = Config::load()?;
151-
let service = config.service();
152-
let account = config.user_id();
153-
let secret_str = get_keychain_item(service, account)?;
154-
let secret = to_32_bytes(&secret_str)?;
155-
156-
let config = Config::load()?;
157-
let keypair = KeyData::load(&config, secret)?;
148+
let keypair = get_keypair()?;
158149

159150
let sig = keypair.sign(commit.as_bytes())?;
160151

@@ -165,13 +156,7 @@ fn verify_commit() -> Result<(), Error> {
165156

166157
// Signs a hex string and prints the signature
167158
fn sign_from_hex(hex: String) -> Result<(), Error> {
168-
let config = Config::load()?;
169-
let service = config.service();
170-
let account = config.user_id();
171-
let secret_str = get_keychain_item(service, account)?;
172-
let secret = to_32_bytes(&secret_str)?;
173-
174-
let keypair = KeyData::load(&config, secret)?;
159+
let keypair = get_keypair()?;
175160
// remove any leading 0x prefix
176161
let hex = hex.trim_start_matches("0x").trim_end_matches(' ');
177162
let data = hex::decode(hex)?;

0 commit comments

Comments
 (0)