forked from packages/digest_auth_rs
Merge branch 'update-crypto'
This commit is contained in:
+4
-2
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "digest_auth"
|
||||
version = "0.2.1"
|
||||
version = "0.2.2"
|
||||
authors = ["Ondřej Hruška <ondra@ondrovo.com>"]
|
||||
edition = "2018"
|
||||
description = "Implementation of the Digest Auth algorithm as defined in IETF RFC 2069, 2617, and 7616, intended for HTTP clients"
|
||||
@@ -15,6 +15,8 @@ categories = [
|
||||
license = "MIT"
|
||||
|
||||
[dependencies]
|
||||
rust-crypto = "0.2"
|
||||
rand = "0.6"
|
||||
hex = "0.3.2"
|
||||
sha2 = "0.8.0"
|
||||
md-5 = "0.8.0"
|
||||
digest = "0.8.1"
|
||||
|
||||
+4
-4
@@ -32,7 +32,7 @@ impl QuoteForDigest for String {
|
||||
}
|
||||
|
||||
/// Join a Vec of Display items using a separator
|
||||
fn join_vec<T: ToString>(vec: &Vec<T>, sep: &str) -> String {
|
||||
fn join_vec<T: ToString>(vec: &[T], sep: &str) -> String {
|
||||
vec.iter()
|
||||
.map(ToString::to_string)
|
||||
.collect::<Vec<_>>()
|
||||
@@ -507,8 +507,8 @@ impl AuthorizationHeader {
|
||||
None => {
|
||||
let mut rng = rand::thread_rng();
|
||||
let nonce_bytes: [u8; 16] = rng.gen();
|
||||
let cnonce = hex::encode(nonce_bytes);
|
||||
cnonce
|
||||
|
||||
hex::encode(nonce_bytes)
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -654,7 +654,7 @@ impl AuthorizationHeader {
|
||||
};
|
||||
|
||||
if auth.qop.is_some() {
|
||||
if !auth.cnonce.is_some() {
|
||||
if auth.cnonce.is_none() {
|
||||
return Err(MissingRequired("cnonce", input.into()));
|
||||
}
|
||||
} else {
|
||||
|
||||
+8
-5
@@ -1,9 +1,12 @@
|
||||
use crate::{Error, Error::*, Result};
|
||||
use crypto::{digest::Digest, md5::Md5, sha2::Sha256, sha2::Sha512Trunc256};
|
||||
use std::fmt;
|
||||
use std::fmt::{Display, Formatter};
|
||||
use std::str::FromStr;
|
||||
|
||||
use digest::{Digest, DynDigest};
|
||||
use md5::Md5;
|
||||
use sha2::{Sha256, Sha512Trunc256};
|
||||
|
||||
/// Algorithm type
|
||||
#[derive(Debug, PartialEq, Clone, Copy)]
|
||||
#[allow(non_camel_case_types)]
|
||||
@@ -27,19 +30,19 @@ impl Algorithm {
|
||||
}
|
||||
|
||||
/// Calculate a hash of bytes using the selected algorithm
|
||||
pub fn hash(&self, bytes: &[u8]) -> String {
|
||||
let mut hash: Box<dyn Digest> = match self.algo {
|
||||
pub fn hash(self, bytes: &[u8]) -> String {
|
||||
let mut hash: Box<dyn DynDigest> = match self.algo {
|
||||
AlgorithmType::MD5 => Box::new(Md5::new()),
|
||||
AlgorithmType::SHA2_256 => Box::new(Sha256::new()),
|
||||
AlgorithmType::SHA2_512_256 => Box::new(Sha512Trunc256::new()),
|
||||
};
|
||||
|
||||
hash.input(bytes);
|
||||
hash.result_str()
|
||||
hex::encode(hash.result())
|
||||
}
|
||||
|
||||
/// Calculate a hash of string's bytes using the selected algorithm
|
||||
pub fn hash_str(&self, bytes: &str) -> String {
|
||||
pub fn hash_str(self, bytes: &str) -> String {
|
||||
self.hash(bytes.as_bytes())
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -101,5 +101,5 @@ Digest username="Mufasa",
|
||||
|
||||
#[test]
|
||||
fn test_cast_error() {
|
||||
let _m : Box<dyn std::error::Error> = Error::UnknownAlgorithm("Uhhh".into()).into();
|
||||
let _m: Box<dyn std::error::Error> = Error::UnknownAlgorithm("Uhhh".into()).into();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user