From dc578999ea706417f4fd1a877ecc06840e58d5b0 Mon Sep 17 00:00:00 2001 From: Igor Matuszewski Date: Wed, 18 Dec 2019 21:23:45 +0100 Subject: net: Use openpgp crypto API for SHA1 hash --- net/Cargo.toml | 1 - net/src/lib.rs | 1 - net/src/wkd.rs | 21 +++++++++------------ 3 files changed, 9 insertions(+), 14 deletions(-) (limited to 'net') diff --git a/net/Cargo.toml b/net/Cargo.toml index 73400201..eed53733 100644 --- a/net/Cargo.toml +++ b/net/Cargo.toml @@ -31,7 +31,6 @@ hyper = "0.12" hyper-tls = "0.3" libc = "0.2.33" native-tls = "0.2.0" -nettle = "5.0" percent-encoding = "2.1" tempfile = "3.1" tokio-core = "0.1" diff --git a/net/src/lib.rs b/net/src/lib.rs index 8f91ce18..f7add939 100644 --- a/net/src/lib.rs +++ b/net/src/lib.rs @@ -45,7 +45,6 @@ extern crate http; extern crate hyper; extern crate hyper_tls; extern crate native_tls; -extern crate nettle; extern crate tokio_core; extern crate tokio_io; extern crate percent_encoding; diff --git a/net/src/wkd.rs b/net/src/wkd.rs index 286b8562..a4134110 100644 --- a/net/src/wkd.rs +++ b/net/src/wkd.rs @@ -26,12 +26,6 @@ use failure::ResultExt; use futures::{future, Future, Stream}; use hyper::{Uri, Client}; use hyper_tls::HttpsConnector; -// Hash implements the traits for Sha1 -// Sha1 is used to obtain a 20 bytes digest that after zbase32 encoding can -// be used as file name -use nettle::{ - Hash, hash::insecure_do_not_use::Sha1, -}; use url; use crate::openpgp::{ @@ -40,6 +34,7 @@ use crate::openpgp::{ }; use crate::openpgp::parse::Parse; use crate::openpgp::serialize::Serialize; +use crate::openpgp::types::HashAlgorithm; use crate::openpgp::cert::CertParser; use super::{Result, Error}; @@ -204,13 +199,15 @@ impl Url { /// described in [RFC6189], section 5.1.6. The resulting string has a /// fixed length of 32 octets. fn encode_local_part>(local_part: S) -> String { - let mut hasher = Sha1::default(); - hasher.update(local_part.as_ref().as_bytes()); - // Declare and assign a 20 bytes length vector to use in hasher.result - let mut local_hash = vec![0; 20]; - hasher.digest(&mut local_hash); + let local_part = local_part.as_ref(); + + let mut digest = vec![0; 20]; + let mut ctx = HashAlgorithm::SHA1.context().expect("must be implemented"); + ctx.update(local_part.as_bytes()); + ctx.digest(&mut digest); + // After z-base-32 encoding 20 bytes, it will be 32 bytes long. - zbase32::encode_full_bytes(&local_hash[..]) + zbase32::encode_full_bytes(&digest[..]) } -- cgit v1.2.3