diff --git a/src/io/der.rs b/src/io/der.rs index 06b207f89b..29b1348878 100644 --- a/src/io/der.rs +++ b/src/io/der.rs @@ -44,14 +44,21 @@ pub enum Tag { impl From for usize { fn from(tag: Tag) -> Self { - tag as Self + Self::from(Tag::into(tag)) } } impl From for u8 { fn from(tag: Tag) -> Self { - tag as Self - } // XXX: narrowing conversion. + Tag::into(tag) + } +} + +// `impl From for u8` but as a `const fn`. +impl Tag { + pub const fn into(self) -> u8 { + self as u8 + } } pub fn expect_tag_and_get_value<'a>( diff --git a/src/rsa/padding/pkcs1.rs b/src/rsa/padding/pkcs1.rs index 57a3099988..c4f3570141 100644 --- a/src/rsa/padding/pkcs1.rs +++ b/src/rsa/padding/pkcs1.rs @@ -139,11 +139,11 @@ macro_rules! pkcs1_digestinfo_prefix { ( $name:ident, $digest_len:expr, $digest_oid_len:expr, [ $( $digest_oid:expr ),* ] ) => { static $name: [u8; 2 + 8 + $digest_oid_len] = [ - der::Tag::Sequence as u8, 8 + $digest_oid_len + $digest_len, - der::Tag::Sequence as u8, 2 + $digest_oid_len + 2, - der::Tag::OID as u8, $digest_oid_len, $( $digest_oid ),*, - der::Tag::Null as u8, 0, - der::Tag::OctetString as u8, $digest_len, + der::Tag::Sequence.into(), 8 + $digest_oid_len + $digest_len, + der::Tag::Sequence.into(), 2 + $digest_oid_len + 2, + der::Tag::OID.into(), $digest_oid_len, $( $digest_oid ),*, + der::Tag::Null.into(), 0, + der::Tag::OctetString.into(), $digest_len, ]; } }