diff --git a/der/src/asn1/context_specific.rs b/der/src/asn1/context_specific.rs index af4e3fb0e..1cfe95b97 100644 --- a/der/src/asn1/context_specific.rs +++ b/der/src/asn1/context_specific.rs @@ -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(); @@ -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::>::decode_implicit(&mut reader, tag_number) @@ -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::::decode_explicit(&mut reader, tag) .unwrap() @@ -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::::decode_explicit(&mut reader, tag).unwrap(), diff --git a/der/src/tag.rs b/der/src/tag.rs index bc85e85a9..da2260d6c 100644 --- a/der/src/tag.rs +++ b/der/src/tag.rs @@ -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, @@ -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; @@ -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()); @@ -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 { @@ -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") ); diff --git a/der/src/tag/number.rs b/der/src/tag/number.rs index 3b2f6525b..ae5b5cb18 100644 --- a/der/src/tag/number.rs +++ b/der/src/tag/number.rs @@ -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) } @@ -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 { - Ok(Self::new(u.int_in_range(0..=30)?)) + Ok(Self(u.int_in_range(0..=30)?)) } fn size_hint(depth: usize) -> (usize, Option) { diff --git a/pkcs1/src/params.rs b/pkcs1/src/params.rs index d23a3bbe4..20e8f019c 100644 --- a/pkcs1/src/params.rs +++ b/pkcs1/src/params.rs @@ -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, }) @@ -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, }) @@ -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, }) @@ -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, }) @@ -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(), }) }) @@ -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, }) @@ -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, }) @@ -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, }) @@ -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), }) }) diff --git a/pkcs12/Cargo.lock b/pkcs12/Cargo.lock index a692f5172..eac27e689 100644 --- a/pkcs12/Cargo.lock +++ b/pkcs12/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aead" @@ -224,9 +224,9 @@ dependencies = [ [[package]] name = "hex-literal" -version = "0.4.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" [[package]] name = "hmac" diff --git a/pkcs8/src/private_key_info.rs b/pkcs8/src/private_key_info.rs index a9681c3a5..e7aabccc5 100644 --- a/pkcs8/src/private_key_info.rs +++ b/pkcs8/src/private_key_info.rs @@ -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`. /// diff --git a/sec1/src/private_key.rs b/sec1/src/private_key.rs index bb864d89e..5156ee52f 100644 --- a/sec1/src/private_key.rs +++ b/sec1/src/private_key.rs @@ -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. ///