Update dependencies #16
10
Cargo.toml
10
Cargo.toml
@@ -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"
|
||||||
|
|||||||
64
src/lib.rs
64
src/lib.rs
@@ -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."),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user