Merge pull request #16 from c410-f3r/master

Update dependencies, clean up some random number generation.
This commit was merged in pull request #16.
This commit is contained in:
2020-10-19 10:22:12 -07:00
committed by GitHub
2 changed files with 40 additions and 34 deletions

View File

@@ -9,10 +9,10 @@ license = "ISC"
repository = "https://github.com/acw/simple_asn1" repository = "https://github.com/acw/simple_asn1"
[dependencies] [dependencies]
chrono = "^0.4.0" chrono = { default-features = false, features = ["alloc"], version = "0.4" }
num-bigint = "^0.2.0" num-bigint = { default-features = false, version = "0.3" }
num-traits = "^0.2.0" num-traits = { default-features = false, version = "0.2" }
[dev-dependencies] [dev-dependencies]
quickcheck = "^0.7.1" quickcheck = "0.9"
rand = "0.5.5" rand = "0.7"

View File

@@ -399,13 +399,7 @@ pub enum ASN1EncodeErr {
ObjectIdentVal2TooLarge, ObjectIdentVal2TooLarge,
} }
impl fmt::Display for ASN1EncodeErr { impl ASN1EncodeErr {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(self.description())
}
}
impl Error for ASN1EncodeErr {
fn description(&self) -> &str { fn description(&self) -> &str {
match self { match self {
ASN1EncodeErr::ObjectIdentHasTooFewFields => ASN1EncodeErr::ObjectIdentHasTooFewFields =>
@@ -416,6 +410,18 @@ impl Error for ASN1EncodeErr {
"Second value in ASN1 OID is too big." "Second value in ASN1 OID is too big."
} }
} }
}
impl fmt::Display for ASN1EncodeErr {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(self.description())
}
}
impl Error for ASN1EncodeErr {
fn description(&self) -> &str {
self.description()
}
fn cause(&self) -> Option<&dyn Error> { fn cause(&self) -> Option<&dyn Error> {
None None
@@ -1175,7 +1181,7 @@ mod tests {
use super::*; use super::*;
use chrono::offset::LocalResult; use chrono::offset::LocalResult;
use quickcheck::{Arbitrary, Gen}; use quickcheck::{Arbitrary, Gen};
use rand::{distributions::Standard, Rng}; use rand::{distributions::Standard, prelude::SliceRandom, Rng};
use std::fs::File; use std::fs::File;
use std::io::Read; use std::io::Read;
@@ -1281,7 +1287,7 @@ mod tests {
impl Arbitrary for OID { impl Arbitrary for OID {
fn arbitrary<G: Gen>(g: &mut G) -> OID { fn arbitrary<G: Gen>(g: &mut G) -> OID {
let count = g.gen_range::<usize>(0, 40); let count = g.gen_range::<usize, _, _>(0, 40);
let val1 = g.gen::<u8>() % 3; let val1 = g.gen::<u8>() % 3;
let v2mod = if val1 == 2 { 176 } else { 40 }; let v2mod = if val1 == 2 { 176 } else { 40 };
let val2 = g.gen::<u8>() % v2mod; let val2 = g.gen::<u8>() % v2mod;
@@ -1304,7 +1310,7 @@ mod tests {
} }
fn arb_seq<G: Gen>(g: &mut G, d: usize) -> ASN1Block { fn arb_seq<G: Gen>(g: &mut G, d: usize) -> ASN1Block {
let count = g.gen_range::<usize>(1, 64); let count = g.gen_range::<usize, _, _>(1, 64);
let mut items = Vec::new(); let mut items = Vec::new();
for _ in 0..count { for _ in 0..count {
@@ -1315,7 +1321,7 @@ mod tests {
} }
fn arb_set<G: Gen>(g: &mut G, d: usize) -> ASN1Block { fn arb_set<G: Gen>(g: &mut G, d: usize) -> ASN1Block {
let count = g.gen_range::<usize>(1, 64); let count = g.gen_range::<usize, _, _>(1, 64);
let mut items = Vec::new(); let mut items = Vec::new();
for _ in 0..count { for _ in 0..count {
@@ -1326,11 +1332,11 @@ mod tests {
} }
fn arb_print<G: Gen>(g: &mut G, _d: usize) -> ASN1Block { fn arb_print<G: Gen>(g: &mut G, _d: usize) -> ASN1Block {
let count = g.gen_range::<usize>(0, 384); let count = g.gen_range::<usize, _, _>(0, 384);
let mut items = Vec::new(); let mut items = Vec::new();
for _ in 0..count { for _ in 0..count {
let v = g.choose(PRINTABLE_CHARS.as_bytes()).unwrap(); let v = PRINTABLE_CHARS.as_bytes().choose(g).unwrap();
items.push(*v as char); items.push(*v as char);
} }
@@ -1338,7 +1344,7 @@ mod tests {
} }
fn arb_ia5<G: Gen>(g: &mut G, _d: usize) -> ASN1Block { fn arb_ia5<G: Gen>(g: &mut G, _d: usize) -> ASN1Block {
let count = g.gen_range::<usize>(0, 384); let count = g.gen_range::<usize, _, _>(0, 384);
let mut items = Vec::new(); let mut items = Vec::new();
for _ in 0..count { for _ in 0..count {
@@ -1370,15 +1376,15 @@ mod tests {
fn arb_utc<G: Gen>(g: &mut G, _d: usize) -> ASN1Block { fn arb_utc<G: Gen>(g: &mut G, _d: usize) -> ASN1Block {
loop { loop {
let y = g.gen_range::<i32>(1970, 2069); let y = g.gen_range::<i32, _, _>(1970, 2069);
let m = g.gen_range::<u32>(1, 13); let m = g.gen_range::<u32, _, _>(1, 13);
let d = g.gen_range::<u32>(1, 32); let d = g.gen_range::<u32, _, _>(1, 32);
match Utc.ymd_opt(y, m, d) { match Utc.ymd_opt(y, m, d) {
LocalResult::None => {} LocalResult::None => {}
LocalResult::Single(d) => { LocalResult::Single(d) => {
let h = g.gen_range::<u32>(0, 24); let h = g.gen_range::<u32, _, _>(0, 24);
let m = g.gen_range::<u32>(0, 60); let m = g.gen_range::<u32, _, _>(0, 60);
let s = g.gen_range::<u32>(0, 60); let s = g.gen_range::<u32, _, _>(0, 60);
let t = d.and_hms(h, m, s); let t = d.and_hms(h, m, s);
return ASN1Block::UTCTime(0, t); return ASN1Block::UTCTime(0, t);
} }
@@ -1389,16 +1395,16 @@ mod tests {
fn arb_time<G: Gen>(g: &mut G, _d: usize) -> ASN1Block { fn arb_time<G: Gen>(g: &mut G, _d: usize) -> ASN1Block {
loop { loop {
let y = g.gen_range::<i32>(0, 10000); let y = g.gen_range::<i32, _, _>(0, 10000);
let m = g.gen_range::<u32>(1, 13); let m = g.gen_range::<u32, _, _>(1, 13);
let d = g.gen_range::<u32>(1, 32); let d = g.gen_range::<u32, _, _>(1, 32);
match Utc.ymd_opt(y, m, d) { match Utc.ymd_opt(y, m, d) {
LocalResult::None => {} LocalResult::None => {}
LocalResult::Single(d) => { LocalResult::Single(d) => {
let h = g.gen_range::<u32>(0, 24); let h = g.gen_range::<u32, _, _>(0, 24);
let m = g.gen_range::<u32>(0, 60); let m = g.gen_range::<u32, _, _>(0, 60);
let s = g.gen_range::<u32>(0, 60); let s = g.gen_range::<u32, _, _>(0, 60);
let n = g.gen_range::<u32>(0, 1000000000); let n = g.gen_range::<u32, _, _>(0, 1000000000);
let t = d.and_hms_nano(h, m, s, n); let t = d.and_hms_nano(h, m, s, n);
return ASN1Block::GeneralizedTime(0, t); return ASN1Block::GeneralizedTime(0, t);
} }
@@ -1422,7 +1428,7 @@ mod tests {
fn arb_unknown<G: Gen>(g: &mut G, _d: usize) -> ASN1Block { fn arb_unknown<G: Gen>(g: &mut G, _d: usize) -> ASN1Block {
let class = ASN1Class::arbitrary(g); let class = ASN1Class::arbitrary(g);
let tag = RandomUint::arbitrary(g); let tag = RandomUint::arbitrary(g);
let size = g.gen_range::<usize>(0, 128); let size = g.gen_range::<usize, _, _>(0, 128);
let items = g.sample_iter::<u8, _>(&Standard).take(size).collect(); let items = g.sample_iter::<u8, _>(&Standard).take(size).collect();
ASN1Block::Unknown(class, false, 0, tag.x, items) ASN1Block::Unknown(class, false, 0, tag.x, items)
@@ -1453,7 +1459,7 @@ mod tests {
possibles.push(arb_explicit); possibles.push(arb_explicit);
} }
match g.choose(&possibles[..]) { match possibles[..].choose(g) {
Some(f) => f(g, d), Some(f) => f(g, d),
None => panic!("Couldn't generate arbitrary value."), None => panic!("Couldn't generate arbitrary value."),
} }