sasl/Cargo.toml 🔗
@@ -20,6 +20,8 @@ scram = ["openssl"]
[dependencies]
base64 = "0.10"
+sha-1 = "0.8"
+sha2 = "0.8"
[dependencies.openssl]
version = "0.10.7"
Emmanuel Gil Peyrot created
sasl/Cargo.toml | 2 ++
sasl/src/common/scram.rs | 13 ++++++++++---
2 files changed, 12 insertions(+), 3 deletions(-)
@@ -20,6 +20,8 @@ scram = ["openssl"]
[dependencies]
base64 = "0.10"
+sha-1 = "0.8"
+sha2 = "0.8"
[dependencies.openssl]
version = "0.10.7"
@@ -1,10 +1,11 @@
use openssl::error::ErrorStack;
-use openssl::hash::hash;
use openssl::hash::MessageDigest;
use openssl::pkcs5::pbkdf2_hmac;
use openssl::pkey::PKey;
use openssl::rand::rand_bytes;
use openssl::sign::Signer;
+use sha1::{Digest, Sha1 as Sha1_hash};
+use sha2::Sha256 as Sha256_hash;
use crate::common::Password;
@@ -49,7 +50,10 @@ impl ScramProvider for Sha1 {
}
fn hash(data: &[u8]) -> Vec<u8> {
- hash(MessageDigest::sha1(), data).unwrap().to_vec()
+ let hash = Sha1_hash::digest(data);
+ let mut vec = Vec::with_capacity(Sha1_hash::output_size());
+ vec.extend_from_slice(hash.as_slice());
+ vec
}
fn hmac(data: &[u8], key: &[u8]) -> Vec<u8> {
@@ -112,7 +116,10 @@ impl ScramProvider for Sha256 {
}
fn hash(data: &[u8]) -> Vec<u8> {
- hash(MessageDigest::sha256(), data).unwrap().to_vec()
+ let hash = Sha256_hash::digest(data);
+ let mut vec = Vec::with_capacity(Sha256_hash::output_size());
+ vec.extend_from_slice(hash.as_slice());
+ vec
}
fn hmac(data: &[u8], key: &[u8]) -> Vec<u8> {