@@ -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
120129fn 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
167163fn 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