sasl/Cargo.toml 🔗
@@ -20,6 +20,7 @@ scram = ["openssl"]
[dependencies]
base64 = "0.10"
+rand_os = "0.1"
sha-1 = "0.8"
sha2 = "0.8"
hmac = "0.7"
Emmanuel Gil Peyrot created
sasl/Cargo.toml | 1 +
sasl/src/common/scram.rs | 13 ++++++++-----
sasl/src/error.rs | 12 ++++++------
3 files changed, 15 insertions(+), 11 deletions(-)
@@ -20,6 +20,7 @@ scram = ["openssl"]
[dependencies]
base64 = "0.10"
+rand_os = "0.1"
sha-1 = "0.8"
sha2 = "0.8"
hmac = "0.7"
@@ -1,8 +1,10 @@
use hmac::{Hmac, Mac};
-use openssl::error::ErrorStack;
use openssl::hash::MessageDigest;
use openssl::pkcs5::pbkdf2_hmac;
-use openssl::rand::rand_bytes;
+use rand_os::{
+ rand_core::{Error as RngError, RngCore},
+ OsRng,
+};
use sha1::{Digest, Sha1 as Sha1_hash};
use sha2::Sha256 as Sha256_hash;
@@ -13,9 +15,10 @@ use crate::secret;
use base64;
/// Generate a nonce for SCRAM authentication.
-pub fn generate_nonce() -> Result<String, ErrorStack> {
- let mut data = vec![0; 32];
- rand_bytes(&mut data)?;
+pub fn generate_nonce() -> Result<String, RngError> {
+ let mut data = [0u8; 32];
+ let mut rng = OsRng::new()?;
+ rng.fill_bytes(&mut data);
Ok(base64::encode(&data))
}
@@ -1,19 +1,19 @@
#[cfg(feature = "scram")]
-use openssl::error::ErrorStack;
+use rand_os::rand_core::Error as RngError;
/// A wrapper enum for things that could go wrong in this crate.
#[derive(Debug)]
pub enum Error {
#[cfg(feature = "scram")]
- /// An error in OpenSSL.
- OpenSslErrorStack(ErrorStack),
+ /// An error while initializing the Rng.
+ RngError(RngError),
/// An error in a SASL mechanism.
SaslError(String),
}
#[cfg(feature = "scram")]
-impl From<ErrorStack> for Error {
- fn from(err: ErrorStack) -> Error {
- Error::OpenSslErrorStack(err)
+impl From<RngError> for Error {
+ fn from(err: RngError) -> Error {
+ Error::RngError(err)
}
}