From cc4efbdf621c32a3bbb327c8da1a488450125810 Mon Sep 17 00:00:00 2001 From: Todd Kennedy <95242064+tkennedy1-godaddy@users.noreply.github.com> Date: Thu, 16 May 2024 10:46:13 -0700 Subject: [PATCH] Bump base32 Fix the imported name to conform to the new export in base32 --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- src/config.rs | 10 +--------- src/lib.rs | 4 ++-- src/otpcli/main.rs | 2 +- src/totp.rs | 9 +++++---- 6 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32223f4..0918352 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,9 +68,9 @@ checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "base32" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa" +checksum = "d1ce0365f4d5fb6646220bb52fe547afd51796d90f914d4063cb0b032ebee088" [[package]] name = "base64" @@ -788,9 +788,9 @@ dependencies = [ [[package]] name = "rustc-serialize" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" +checksum = "fe834bc780604f4674073badbad26d7219cadfb4a2275802db12cbae17498401" [[package]] name = "ryu" diff --git a/Cargo.toml b/Cargo.toml index 6eb360f..aa9a4c3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ rsa_stoken = ["stoken"] [dependencies] rust-crypto = "^0" byteorder = "^1.4" -base32 = "^0" +base32 = "^0.5" toml = "^0" serde = { version = "^1.0", features = ["derive"] } structopt = "^0" diff --git a/src/config.rs b/src/config.rs index ceac808..5c1c918 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,7 +7,7 @@ use crate::totp::TokenAlgorithm; use crate::{TotpConfigError, TotpResult}; use serde::{self, Deserialize, Serialize}; -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, Default)] pub struct Config { totp: HashMap, } @@ -73,14 +73,6 @@ impl TotpOptions { } } -impl Default for Config { - fn default() -> Self { - Config { - totp: HashMap::new(), - } - } -} - impl Config { pub fn lookup(&self, name: &str) -> TotpResult<&TotpOptions> { Ok(self diff --git a/src/lib.rs b/src/lib.rs index 89e69ed..b1cbf58 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -72,7 +72,7 @@ pub fn add_totp_secret>( name: &str, secret: String, ) -> TotpResult<()> { - base32::decode(base32::Alphabet::RFC4648 { padding: false }, &secret) + base32::decode(base32::Alphabet::Rfc4648 { padding: false }, &secret) .expect("Invalid base32 OTP secret"); add_secret(&config, config_dir, name, secret, TokenAlgorithm::TotpSha1).map(|_| ()) @@ -107,7 +107,7 @@ pub fn add_secret>( secret: String, algorithm: TokenAlgorithm, ) -> TotpResult { - let totp_options = secrets::store_secret(&name, &secret, algorithm)?; + let totp_options = secrets::store_secret(name, &secret, algorithm)?; let mut config: Config = config.clone(); config.insert(name.to_string(), totp_options); let string = toml::to_string(&config)?; diff --git a/src/otpcli/main.rs b/src/otpcli/main.rs index d766a89..9fb6f1d 100644 --- a/src/otpcli/main.rs +++ b/src/otpcli/main.rs @@ -30,7 +30,7 @@ fn main() -> Result<(), Box> { Ok(()) } Command::AddSecret { name, secret } => { - otp::add_totp_secret(config, config_dir, &name, secret.replace(" ", ""))?; + otp::add_totp_secret(config, config_dir, &name, secret.replace(' ', ""))?; Ok(()) } #[cfg(feature = "ras_stoken")] diff --git a/src/totp.rs b/src/totp.rs index ebb3c0a..d8d23e2 100644 --- a/src/totp.rs +++ b/src/totp.rs @@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize}; use super::secrets; -static ALPHABET: base32::Alphabet = base32::Alphabet::RFC4648 { padding: false }; +static ALPHABET: base32::Alphabet = base32::Alphabet::Rfc4648 { padding: false }; /// [RFC6238-timestep]: https://tools.ietf.org/html/rfc6238#section-5.2 /// [RFC6238 recommended][RFC6238-timestep] time step duration of 30 seconds. @@ -29,6 +29,7 @@ pub enum TokenAlgorithm { impl Copy for TokenAlgorithm {} +#[allow(dead_code)] trait AsDigest { fn as_digest(&self) -> Box; } @@ -63,13 +64,13 @@ impl AsDigest for TokenAlgorithm { /// /// ``` pub fn standard_totp(name: &str, options: &TotpOptions) -> TotpResult { - let secret = secrets::get_secret(name, &options)?; + let secret = secrets::get_secret(name, options)?; generate_sha1_code(secret) } /// Cleans a base32 secret by removing spaces and making sure it's upper-cased. pub fn clean_secret(secret: &str) -> String { - secret.replace(" ", "").to_uppercase() + secret.replace(' ', "").to_uppercase() } /// Generate a SHA1 TOTP code @@ -91,7 +92,7 @@ pub fn generate_sha1_code(secret: String) -> TotpResult { .duration_since(SystemTime::UNIX_EPOCH) .expect("Can't get time since UNIX_EPOCH?"); - let clean_secret = secret.replace(" ", "").to_uppercase(); + let clean_secret = secret.replace(' ', "").to_uppercase(); let secret = base32::decode(ALPHABET, &clean_secret) .ok_or(TotpError("Failed to decode secret from base32"))?;