diff --git a/src/application/user.rs b/src/application/user.rs index b98d7f0dfd8445c0309ff3bb76cea6dabff26ee6..34c00f0c1c7581136ba491467d1e7d492e1d8689 100644 --- a/src/application/user.rs +++ b/src/application/user.rs @@ -209,7 +209,7 @@ where } async fn validate_user(&self, code: &str) -> Result { - match self.get_access_token(&code).await { + match self.get_access_token(code).await { Ok(token_response) => { let id: User = User::new(self.get_user_info(&token_response.access_token).await?.email)?; return self.user_repository.create(id).await diff --git a/src/client/cmd/add.rs b/src/client/cmd/add.rs index 6a874d0294a28a3872c27181d97e84b8f775335a..47b3f501ed28a6f9c73c7d2cd4f6cdf2dd576ac3 100644 --- a/src/client/cmd/add.rs +++ b/src/client/cmd/add.rs @@ -129,7 +129,7 @@ impl CommandAddHandler { fn file_candidates(&self, extension: &str) -> Result { let collections = FILE_EXTENSION.get( - &self.file_type).ok_or( + &self.file_type).ok_or_else(|| error::Error::FileNotSupportError(format!("{}", self.file_type)))?; if collections.contains(&extension) { return Ok(true) diff --git a/src/client/file_handler/kernel_module.rs b/src/client/file_handler/kernel_module.rs index 51b00c64ec1912bdbdf7efe98fc89f661d81587b..fa277f3ad904fd83b584cdf79bb30987b0d4282b 100644 --- a/src/client/file_handler/kernel_module.rs +++ b/src/client/file_handler/kernel_module.rs @@ -104,15 +104,15 @@ impl KernelModuleFileHandler { return Ok(raw_content) } //identify magic string and end of the file - file.seek(io::SeekFrom::End((MAGIC_NUMBER_SIZE as i64) * -1))?; + file.seek(io::SeekFrom::End(-(MAGIC_NUMBER_SIZE as i64)))?; let mut signature_ending: [u8; MAGIC_NUMBER_SIZE] = [0; MAGIC_NUMBER_SIZE]; - file.read(&mut signature_ending)?; - return match str::from_utf8(&signature_ending.to_vec()) { + let _ = file.read(&mut signature_ending)?; + return match str::from_utf8(signature_ending.as_ref()) { Ok(ending) => { return if ending == MAGIC_NUMBER { - file.seek(io::SeekFrom::End((SIGNATURE_SIZE) as i64 * -1))?; + file.seek(io::SeekFrom::End(-(SIGNATURE_SIZE as i64)))?; let mut signature_meta: [u8; SIGNATURE_SIZE - MAGIC_NUMBER_SIZE] = [0; SIGNATURE_SIZE - MAGIC_NUMBER_SIZE]; - file.read(&mut signature_meta)?; + let _ = file.read(&mut signature_meta)?; //decode kernel module signature struct let signature: ModuleSignature = bincode::decode_from_slice( &signature_meta, diff --git a/src/client_entrypoint.rs b/src/client_entrypoint.rs index e6c8f6c3f6b43ed446d6dfc180efeb8a40bdddaa..1db36963b83f3e1bc9dd0dc33232f1bed6bfdb12 100644 --- a/src/client_entrypoint.rs +++ b/src/client_entrypoint.rs @@ -72,7 +72,7 @@ fn main() -> Result<()> { //construct handler let command = match app.command { Some(Commands::Add(add_command)) => { - Some(add::CommandAddHandler::new(signal.clone(), Arc::new(RwLock::new(client)), add_command)?) + Some(add::CommandAddHandler::new(signal, Arc::new(RwLock::new(client)), add_command)?) } None => {None} }; diff --git a/src/infra/database/model/datakey/repository.rs b/src/infra/database/model/datakey/repository.rs index 50e486bc6ca59028bc1f74f84c1c3db3d0383b3d..d9480404b121801bc288e1784aa738fdcf9a647d 100644 --- a/src/infra/database/model/datakey/repository.rs +++ b/src/infra/database/model/datakey/repository.rs @@ -42,7 +42,7 @@ impl Repository for DataKeyRepository { let record : u64 = sqlx::query("INSERT INTO data_key(name, description, user, email, attributes, key_type, fingerprint, private_key, public_key, certificate, create_at, expire_at, key_state, soft_delete) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") .bind(&dto.name) .bind(&dto.description) - .bind(&dto.user) + .bind(dto.user) .bind(dto.email) .bind(dto.attributes) .bind(dto.key_type) diff --git a/src/infra/database/model/token/repository.rs b/src/infra/database/model/token/repository.rs index 5d87c86bc6dbaadf2dfc50f6a145930ea8a9a9b5..4677be7e3f2ed9efe015fe398955e8beb0909f20 100644 --- a/src/infra/database/model/token/repository.rs +++ b/src/infra/database/model/token/repository.rs @@ -44,11 +44,11 @@ impl Repository for TokenRepository { async fn create(&self, token: Token) -> Result { let dto = TokenDTO::from(token); let record : u64 = sqlx::query("INSERT INTO token(user_id, description, token, create_at, expire_at) VALUES (?, ?, ?, ?, ?)") - .bind(&dto.user_id) + .bind(dto.user_id) .bind(&dto.description) .bind(&dto.token) - .bind(&dto.create_at) - .bind(&dto.expire_at) + .bind(dto.create_at) + .bind(dto.expire_at) .execute(&self.db_pool) .await?.last_insert_id(); self.get_token_by_id(record as i32).await diff --git a/src/infra/sign_plugin/openpgp.rs b/src/infra/sign_plugin/openpgp.rs index 3eb7cfd468fdcd5918538c7ba376125a43b0dcae..6b4e92384c4c35bd6fac0069687452d8022339f6 100644 --- a/src/infra/sign_plugin/openpgp.rs +++ b/src/infra/sign_plugin/openpgp.rs @@ -81,7 +81,7 @@ impl PgpKeyGenerationParameter { } pub fn get_digest_algorithm(hash_digest: &str) -> Result { - return match hash_digest { + match hash_digest { "none" => Ok(HashAlgorithm::None), "md5" => Ok(HashAlgorithm::MD5), "sha1" => Ok(HashAlgorithm::SHA1), @@ -94,7 +94,7 @@ pub fn get_digest_algorithm(hash_digest: &str) -> Result { _ => Err(Error::ParameterError( "invalid digest algorithm for openpgp".to_string(), )), - }; + } } fn validate_key_type(key_type: &str) -> std::result::Result<(), ValidationError> { @@ -138,27 +138,24 @@ impl OpenPGPPlugin { impl SignPlugins for OpenPGPPlugin { fn new(db: SecDataKey) -> Result { - let private = from_utf8(&db.private_key.unsecure()).map_err(|e| Error::KeyParseError(e.to_string()))?; + let private = from_utf8(db.private_key.unsecure()).map_err(|e| Error::KeyParseError(e.to_string()))?; let (secret_key, _) = SignedSecretKey::from_string(private).map_err(|e| Error::KeyParseError(e.to_string()))?; - let public = from_utf8(&db.public_key.unsecure()).map_err(|e| Error::KeyParseError(e.to_string()))?; + let public = from_utf8(db.public_key.unsecure()).map_err(|e| Error::KeyParseError(e.to_string()))?; let (public_key, _) = SignedPublicKey::from_string(public).map_err(|e| Error::KeyParseError(e.to_string()))?; Ok(Self { secret_key, public_key, identity: db.identity.clone(), - attributes: db.attributes.clone(), + attributes: db.attributes, }) } fn validate_and_update(key: &mut DataKey) -> Result<()> where Self: Sized { //validate the digest - match key.attributes.get("digest_algorithm") { - Some(digest_str) => { - let _ = get_digest_algorithm(digest_str)?; - } - _ => {} + if let Some(digest_str) = key.attributes.get("digest_algorithm") { + let _ = get_digest_algorithm(digest_str)?; } //validate keys let private = from_utf8(&key.private_key).map_err(|e| Error::KeyParseError(e.to_string()))?; @@ -206,7 +203,7 @@ impl SignPlugins for OpenPGPPlugin { .expiration(Some(duration)); let secret_key_params = key_params.build()?; let secret_key = secret_key_params.generate()?; - let passwd_fn= || return match parameter.passphrase { + let passwd_fn= || match parameter.passphrase { None => { String::new() } @@ -227,11 +224,8 @@ impl SignPlugins for OpenPGPPlugin { fn sign(&self, content: Vec, options: HashMap) -> Result> { let mut digest = HashAlgorithm::SHA2_256; - match options.get("digest_algorithm") { - Some(digest_str) => { + if let Some(digest_str) = options.get("digest_algorithm") { digest = get_digest_algorithm(digest_str)? - } - _ => {} } let passwd_fn = || return match options.get("passphrase") { None => { diff --git a/src/infra/sign_plugin/util.rs b/src/infra/sign_plugin/util.rs index bbe8fc1a802adf2a865ef1f5219769bcf8708bcf..e0b041469d717843c4e10927c4b9dfdfb242ba16 100644 --- a/src/infra/sign_plugin/util.rs +++ b/src/infra/sign_plugin/util.rs @@ -35,7 +35,7 @@ pub fn validate_utc_time(expire: &str) -> Result<(), ValidationError> { Ok(()) }, Err(_) => { - return Err(ValidationError::new("failed to parse time string to utc")); + Err(ValidationError::new("failed to parse time string to utc")) } } } \ No newline at end of file diff --git a/src/infra/sign_plugin/x509.rs b/src/infra/sign_plugin/x509.rs index ebde0cfd031cf64958a6bcf24ccee6a0ca593529..7130e8ffae657d0e95e21bf3db4885a9c3965aa0 100644 --- a/src/infra/sign_plugin/x509.rs +++ b/src/infra/sign_plugin/x509.rs @@ -152,7 +152,7 @@ impl SignPlugins for X509Plugin { public_key: db.public_key.clone(), certificate: db.certificate.clone(), identity: db.identity.clone(), - attributes: db.attributes.clone() + attributes: db.attributes }) } @@ -166,7 +166,7 @@ impl SignPlugins for X509Plugin { let expire = SystemTime::UNIX_EPOCH + Duration::from_secs(unix_time.days as u64 * 86400 + unix_time.secs as u64); key.expire_at = expire.into(); key.fingerprint = encode_u8_to_hex_string( - certificate.digest(MessageDigest::from_name("sha1").ok_or(Error::GeneratingKeyError("unable to generate digester".to_string()))?)?.as_ref()); + certificate.digest(MessageDigest::from_name("sha1").ok_or_else(|| Error::GeneratingKeyError("unable to generate digester".to_string()))?)?.as_ref()); Ok(()) } diff --git a/src/presentation/handler/control/model/datakey/dto.rs b/src/presentation/handler/control/model/datakey/dto.rs index c9302f51dc0b349c03b84ed98056d9fd4729af16..2473dcdd6535641ee0ba612cd932eee75a258813 100644 --- a/src/presentation/handler/control/model/datakey/dto.rs +++ b/src/presentation/handler/control/model/datakey/dto.rs @@ -106,7 +106,7 @@ fn validate_utc_time(expire: &str) -> std::result::Result<(), ValidationError> { } fn validate_key_type(key_type: &str) -> std::result::Result<(), ValidationError> { - return match KeyType::from_str(key_type) { + match KeyType::from_str(key_type) { Ok(_) => { Ok(()) } @@ -134,7 +134,7 @@ impl DataKey { private_key: dto.private_key.into_bytes(), public_key: dto.public_key.into_bytes(), certificate: dto.certificate.into_bytes(), - create_at: now.clone(), + create_at: now, expire_at: now, soft_delete: false, key_state: KeyState::default() diff --git a/src/presentation/handler/control/model/user/dto.rs b/src/presentation/handler/control/model/user/dto.rs index 2398b1e64ec0528aac58a7f4b0f851e2f2c63c1c..e96f7ef65c19884720758d1583d50e17e1ead009 100644 --- a/src/presentation/handler/control/model/user/dto.rs +++ b/src/presentation/handler/control/model/user/dto.rs @@ -36,8 +36,8 @@ impl FromRequest for UserIdentity { match login { //fetch valid token None => { - if let Some(value) = req.clone().headers().get("Authorization") { - if let Some(user_service) = req.clone().app_data::>() { + if let Some(value) = req.headers().get("Authorization") { + if let Some(user_service) = req.app_data::>() { if let Ok(token) = user_service.get_ref().get_valid_token(value.to_str().unwrap()).await { if let Ok(user) = user_service.get_ref().get_user_by_id(token.user_id).await { return Ok(UserIdentity::from(user)); diff --git a/src/presentation/server/control_server.rs b/src/presentation/server/control_server.rs index 44a47a8498a9e5897194c60a659d5f8cd24b2871..03d7162088d3cfcc5cfbcbf75375ecf05c08f789 100644 --- a/src/presentation/server/control_server.rs +++ b/src/presentation/server/control_server.rs @@ -116,7 +116,7 @@ impl ControlServer { //initialize the service let user_service = Arc::new( DBUserService::new( - user_repo.clone(), token_repo, + user_repo, token_repo, server_config.clone())?) as Arc; let key_service = Arc::new( DBKeyService::new( @@ -157,10 +157,10 @@ impl ControlServer { let limiter = web::Data::new( Limiter::builder(&redis_connection) .key_by(|req: &ServiceRequest| { - if let Some(cookie) = req.cookie(&"Signatrust") { + if let Some(cookie) = req.cookie("Signatrust") { return Some(cookie.to_string()); } - if let Some(value) = req.clone().headers().get("Authorization") { + if let Some(value) = req.headers().get("Authorization") { return Some(value.to_str().unwrap().to_string()); } None diff --git a/src/util/key.rs b/src/util/key.rs index 88369f31137efbcd579ac9fd88433916010d9988..a46e2ef619f7f3d64212324bf8bc420b045c17eb 100644 --- a/src/util/key.rs +++ b/src/util/key.rs @@ -40,11 +40,11 @@ pub fn get_token_hash(real_token: &str) -> String { let mut hasher = Sha256::default(); hasher.update(real_token); let digest = hasher.finalize(); - return hex::encode(digest) + hex::encode(digest) } pub fn sorted_map(value: &HashMap, serializer: S) -> Result { let mut items: Vec<(_, _)> = value.iter().collect(); - items.sort_by(|a, b| a.0.cmp(&b.0)); + items.sort_by(|a, b| a.0.cmp(b.0)); BTreeMap::from_iter(items).serialize(serializer) } \ No newline at end of file