Skip to content

Commit 02499fb

Browse files
authored
Merge pull request #10 from pkgxdev/more-DRY
factor out repetition
2 parents efcc2b7 + e48856c commit 02499fb

File tree

1 file changed

+14
-24
lines changed

1 file changed

+14
-24
lines changed

bpb/src/main.rs

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

108-
fn print_public_key() -> Result<(), Error> {
108+
// Does most of the initial setup
109+
// used for quite a few of the subcommands
110+
//
111+
// - Loads the config
112+
// - Gets the keypair from the keychain
113+
fn get_keypair() -> Result<KeyData, Error> {
109114
let config = Config::load()?;
110115
let service = config.service();
111116
let account = config.user_id();
112117
let secret_str = get_keychain_item(service, account)?;
113118
let secret = to_32_bytes(&secret_str)?;
114119

115-
let keypair = KeyData::load(&config, secret)?;
120+
KeyData::load(&config, secret)
121+
}
122+
123+
fn print_public_key() -> Result<(), Error> {
124+
let keypair = get_keypair()?;
116125
println!("{}", keypair.public());
117126
Ok(())
118127
}
119128

120129
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)?;
130+
let keypair = get_keypair()?;
128131
Ok(keypair.fingerprint())
129132
}
130133

@@ -147,14 +150,7 @@ fn verify_commit() -> Result<(), Error> {
147150
let mut stdin = std::io::stdin();
148151
stdin.read_to_string(&mut commit)?;
149152

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)?;
153+
let keypair = get_keypair()?;
158154

159155
let sig = keypair.sign(commit.as_bytes())?;
160156

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

166162
// Signs a hex string and prints the signature
167163
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)?;
164+
let keypair = get_keypair()?;
175165
// remove any leading 0x prefix
176166
let hex = hex.trim().to_lowercase();
177167
let hex = hex.trim_start_matches("0x");

0 commit comments

Comments
 (0)