Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions der/src/asn1/context_specific.rs
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ mod tests {

#[test]
fn context_specific_with_explicit_field() {
let tag_number = TagNumber::new(0);
let tag_number = TagNumber(0);

// Empty message
let mut reader = SliceReader::new(&[]).unwrap();
Expand Down Expand Up @@ -319,7 +319,7 @@ mod tests {
let context_specific_implicit_bytes =
hex!("81210019BF44096984CDFE8541BAC167DC3B96C85086AA30B6B6CB0C5C38AD703166E1");

let tag_number = TagNumber::new(1);
let tag_number = TagNumber(1);

let mut reader = SliceReader::new(&context_specific_implicit_bytes).unwrap();
let field = ContextSpecific::<BitStringRef<'_>>::decode_implicit(&mut reader, tag_number)
Expand All @@ -336,7 +336,7 @@ mod tests {

#[test]
fn context_specific_skipping_unknown_field() {
let tag = TagNumber::new(1);
let tag = TagNumber(1);
let mut reader = SliceReader::new(&hex!("A003020100A103020101")).unwrap();
let field = ContextSpecific::<u8>::decode_explicit(&mut reader, tag)
.unwrap()
Expand All @@ -346,7 +346,7 @@ mod tests {

#[test]
fn context_specific_returns_none_on_greater_tag_number() {
let tag = TagNumber::new(0);
let tag = TagNumber(0);
let mut reader = SliceReader::new(&hex!("A103020101")).unwrap();
assert_eq!(
ContextSpecific::<u8>::decode_explicit(&mut reader, tag).unwrap(),
Expand Down
54 changes: 27 additions & 27 deletions der/src/tag.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,27 +201,27 @@ impl Tag {
/// Get the [`TagNumber`] for this tag.
pub const fn number(self) -> TagNumber {
match self {
Tag::Boolean => TagNumber::new(1),
Tag::Integer => TagNumber::new(2),
Tag::BitString => TagNumber::new(3),
Tag::OctetString => TagNumber::new(4),
Tag::Null => TagNumber::new(5),
Tag::ObjectIdentifier => TagNumber::new(6),
Tag::Real => TagNumber::new(9),
Tag::Enumerated => TagNumber::new(10),
Tag::Utf8String => TagNumber::new(12),
Tag::Sequence => TagNumber::new(16),
Tag::Set => TagNumber::new(17),
Tag::NumericString => TagNumber::new(18),
Tag::PrintableString => TagNumber::new(19),
Tag::TeletexString => TagNumber::new(20),
Tag::VideotexString => TagNumber::new(21),
Tag::Ia5String => TagNumber::new(22),
Tag::UtcTime => TagNumber::new(23),
Tag::GeneralizedTime => TagNumber::new(24),
Tag::VisibleString => TagNumber::new(26),
Tag::GeneralString => TagNumber::new(27),
Tag::BmpString => TagNumber::new(30),
Tag::Boolean => TagNumber(1),
Tag::Integer => TagNumber(2),
Tag::BitString => TagNumber(3),
Tag::OctetString => TagNumber(4),
Tag::Null => TagNumber(5),
Tag::ObjectIdentifier => TagNumber(6),
Tag::Real => TagNumber(9),
Tag::Enumerated => TagNumber(10),
Tag::Utf8String => TagNumber(12),
Tag::Sequence => TagNumber(16),
Tag::Set => TagNumber(17),
Tag::NumericString => TagNumber(18),
Tag::PrintableString => TagNumber(19),
Tag::TeletexString => TagNumber(20),
Tag::VideotexString => TagNumber(21),
Tag::Ia5String => TagNumber(22),
Tag::UtcTime => TagNumber(23),
Tag::GeneralizedTime => TagNumber(24),
Tag::VisibleString => TagNumber(26),
Tag::GeneralString => TagNumber(27),
Tag::BmpString => TagNumber(30),
Tag::Application { number, .. } => number,
Tag::ContextSpecific { number, .. } => number,
Tag::Private { number, .. } => number,
Expand Down Expand Up @@ -353,7 +353,7 @@ fn parse_parts<'a, R: Reader<'a>>(first_byte: u8, reader: &mut R) -> Result<(boo
let first_number_part = first_byte & TagNumber::MASK;

if first_number_part != TagNumber::MASK {
return Ok((constructed, TagNumber::new(first_number_part.into())));
return Ok((constructed, TagNumber(first_number_part.into())));
}

let mut multi_byte_tag_number = 0;
Expand All @@ -367,7 +367,7 @@ fn parse_parts<'a, R: Reader<'a>>(first_byte: u8, reader: &mut R) -> Result<(boo
return Err(ErrorKind::TagNumberInvalid.into());
}

return Ok((constructed, TagNumber::new(multi_byte_tag_number)));
return Ok((constructed, TagNumber(multi_byte_tag_number)));
} else if i == 0 && multi_byte_tag_number == 0 {
// 8.1.2.4.2c says "bits 7 to 1 of the first subsequent octet shall not all be zero"
return Err(ErrorKind::TagNumberInvalid.into());
Expand Down Expand Up @@ -530,7 +530,7 @@ mod tests {

for num in 0..=30 {
for &constructed in &[false, true] {
let number = TagNumber::new(num);
let number = TagNumber(num);

assert_eq!(
Tag::Application {
Expand Down Expand Up @@ -567,21 +567,21 @@ mod tests {
assert_eq!(
Tag::Application {
constructed: false,
number: TagNumber::new(0x4001)
number: TagNumber(0x4001)
},
Tag::from_der(&hex!("5F818001")).expect("bits 7 to 1 are zero")
);
assert_eq!(
Tag::ContextSpecific {
constructed: false,
number: TagNumber::new(0x200001)
number: TagNumber(0x200001)
},
Tag::from_der(&hex!("9F81808001")).expect("bits 7 to 1 are zero two times")
);
assert_eq!(
Tag::Private {
constructed: false,
number: TagNumber::new(u32::MAX)
number: TagNumber(u32::MAX)
},
Tag::from_der(&hex!("DF8FFFFFFF7F")).expect("private tag 2^32-1")
);
Expand Down
8 changes: 6 additions & 2 deletions der/src/tag/number.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@ impl TagNumber {
/// Mask value used to obtain the tag number from a tag octet.
pub(super) const MASK: u8 = 0b11111;

/// Create a new tag number (const-friendly).
/// Create a new tag number.
#[deprecated(
since = "0.8.0",
note = "use TagNumber(value) directly as inner field is now pub"
)]
pub const fn new(value: u32) -> Self {
Self(value)
}
Expand Down Expand Up @@ -69,7 +73,7 @@ impl fmt::Display for TagNumber {
#[cfg(feature = "arbitrary")]
impl<'a> arbitrary::Arbitrary<'a> for TagNumber {
fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result<Self> {
Ok(Self::new(u.int_in_range(0..=30)?))
Ok(Self(u.int_in_range(0..=30)?))
}

fn size_hint(depth: usize) -> (usize, Option<usize>) {
Expand Down
28 changes: 14 additions & 14 deletions pkcs1/src/params.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ impl<'a> RsaPssParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(0),
tag_number: TagNumber(0),
tag_mode: TagMode::Explicit,
value: &self.hash,
})
Expand All @@ -136,7 +136,7 @@ impl<'a> RsaPssParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(1),
tag_number: TagNumber(1),
tag_mode: TagMode::Explicit,
value: &self.mask_gen,
})
Expand All @@ -148,7 +148,7 @@ impl<'a> RsaPssParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(2),
tag_number: TagNumber(2),
tag_mode: TagMode::Explicit,
value: &self.salt_len,
})
Expand All @@ -160,7 +160,7 @@ impl<'a> RsaPssParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(3),
tag_number: TagNumber(3),
tag_mode: TagMode::Explicit,
value: &self.trailer_field,
})
Expand All @@ -186,16 +186,16 @@ impl<'a> DecodeValue<'a> for RsaPssParams<'a> {
reader.read_nested(header.length, |reader| {
Ok(Self {
hash: reader
.context_specific(TagNumber::new(0), TagMode::Explicit)?
.context_specific(TagNumber(0), TagMode::Explicit)?
.unwrap_or(SHA_1_AI),
mask_gen: reader
.context_specific(TagNumber::new(1), TagMode::Explicit)?
.context_specific(TagNumber(1), TagMode::Explicit)?
.unwrap_or_else(default_mgf1_sha1),
salt_len: reader
.context_specific(TagNumber::new(2), TagMode::Explicit)?
.context_specific(TagNumber(2), TagMode::Explicit)?
.unwrap_or(RsaPssParams::SALT_LEN_DEFAULT),
trailer_field: reader
.context_specific(TagNumber::new(3), TagMode::Explicit)?
.context_specific(TagNumber(3), TagMode::Explicit)?
.unwrap_or_default(),
})
})
Expand Down Expand Up @@ -299,7 +299,7 @@ impl<'a> RsaOaepParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(0),
tag_number: TagNumber(0),
tag_mode: TagMode::Explicit,
value: &self.hash,
})
Expand All @@ -313,7 +313,7 @@ impl<'a> RsaOaepParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(1),
tag_number: TagNumber(1),
tag_mode: TagMode::Explicit,
value: &self.mask_gen,
})
Expand All @@ -327,7 +327,7 @@ impl<'a> RsaOaepParams<'a> {
None
} else {
Some(ContextSpecificRef {
tag_number: TagNumber::new(2),
tag_number: TagNumber(2),
tag_mode: TagMode::Explicit,
value: &self.p_source,
})
Expand All @@ -351,13 +351,13 @@ impl<'a> DecodeValue<'a> for RsaOaepParams<'a> {
reader.read_nested(header.length, |reader| {
Ok(Self {
hash: reader
.context_specific(TagNumber::new(0), TagMode::Explicit)?
.context_specific(TagNumber(0), TagMode::Explicit)?
.unwrap_or(SHA_1_AI),
mask_gen: reader
.context_specific(TagNumber::new(1), TagMode::Explicit)?
.context_specific(TagNumber(1), TagMode::Explicit)?
.unwrap_or_else(default_mgf1_sha1),
p_source: reader
.context_specific(TagNumber::new(2), TagMode::Explicit)?
.context_specific(TagNumber(2), TagMode::Explicit)?
.unwrap_or_else(default_pempty_string),
})
})
Expand Down
6 changes: 3 additions & 3 deletions pkcs12/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkcs8/src/private_key_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ use der::pem::PemLabel;
use subtle::{Choice, ConstantTimeEq};

/// Context-specific tag number for the public key.
const PUBLIC_KEY_TAG: TagNumber = TagNumber::new(1);
const PUBLIC_KEY_TAG: TagNumber = TagNumber(1);

/// PKCS#8 `PrivateKeyInfo`.
///
Expand Down
4 changes: 2 additions & 2 deletions sec1/src/private_key.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ use der::pem::PemLabel;
const VERSION: u8 = 1;

/// Context-specific tag number for the elliptic curve parameters.
const EC_PARAMETERS_TAG: TagNumber = TagNumber::new(0);
const EC_PARAMETERS_TAG: TagNumber = TagNumber(0);

/// Context-specific tag number for the public key.
const PUBLIC_KEY_TAG: TagNumber = TagNumber::new(1);
const PUBLIC_KEY_TAG: TagNumber = TagNumber(1);

/// SEC1 elliptic curve private key.
///
Expand Down