Skip to content

Commit 0b3a0b2

Browse files
authored
der: remove TagNumber::N0..N30 consts (#1724)
1 parent a82f668 commit 0b3a0b2

File tree

9 files changed

+50
-184
lines changed

9 files changed

+50
-184
lines changed

der/src/tag.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ impl Tag {
189189
}
190190

191191
/// Get the [`Class`] that corresponds to this [`Tag`].
192-
pub fn class(self) -> Class {
192+
pub const fn class(self) -> Class {
193193
match self {
194194
Tag::Application { .. } => Class::Application,
195195
Tag::ContextSpecific { .. } => Class::ContextSpecific,
@@ -199,29 +199,29 @@ impl Tag {
199199
}
200200

201201
/// Get the [`TagNumber`] for this tag.
202-
pub fn number(self) -> TagNumber {
202+
pub const fn number(self) -> TagNumber {
203203
match self {
204-
Tag::Boolean => TagNumber::N1,
205-
Tag::Integer => TagNumber::N2,
206-
Tag::BitString => TagNumber::N3,
207-
Tag::OctetString => TagNumber::N4,
208-
Tag::Null => TagNumber::N5,
209-
Tag::ObjectIdentifier => TagNumber::N6,
210-
Tag::Real => TagNumber::N9,
211-
Tag::Enumerated => TagNumber::N10,
212-
Tag::Utf8String => TagNumber::N12,
213-
Tag::Sequence => TagNumber::N16,
214-
Tag::Set => TagNumber::N17,
215-
Tag::NumericString => TagNumber::N18,
216-
Tag::PrintableString => TagNumber::N19,
217-
Tag::TeletexString => TagNumber::N20,
218-
Tag::VideotexString => TagNumber::N21,
219-
Tag::Ia5String => TagNumber::N22,
220-
Tag::UtcTime => TagNumber::N23,
221-
Tag::GeneralizedTime => TagNumber::N24,
222-
Tag::VisibleString => TagNumber::N26,
223-
Tag::GeneralString => TagNumber::N27,
224-
Tag::BmpString => TagNumber::N30,
204+
Tag::Boolean => TagNumber::new(1),
205+
Tag::Integer => TagNumber::new(2),
206+
Tag::BitString => TagNumber::new(3),
207+
Tag::OctetString => TagNumber::new(4),
208+
Tag::Null => TagNumber::new(5),
209+
Tag::ObjectIdentifier => TagNumber::new(6),
210+
Tag::Real => TagNumber::new(9),
211+
Tag::Enumerated => TagNumber::new(10),
212+
Tag::Utf8String => TagNumber::new(12),
213+
Tag::Sequence => TagNumber::new(16),
214+
Tag::Set => TagNumber::new(17),
215+
Tag::NumericString => TagNumber::new(18),
216+
Tag::PrintableString => TagNumber::new(19),
217+
Tag::TeletexString => TagNumber::new(20),
218+
Tag::VideotexString => TagNumber::new(21),
219+
Tag::Ia5String => TagNumber::new(22),
220+
Tag::UtcTime => TagNumber::new(23),
221+
Tag::GeneralizedTime => TagNumber::new(24),
222+
Tag::VisibleString => TagNumber::new(26),
223+
Tag::GeneralString => TagNumber::new(27),
224+
Tag::BmpString => TagNumber::new(30),
225225
Tag::Application { number, .. } => number,
226226
Tag::ContextSpecific { number, .. } => number,
227227
Tag::Private { number, .. } => number,

der/src/tag/number.rs

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -20,99 +20,6 @@ use core::fmt;
2020
pub struct TagNumber(pub u32);
2121

2222
impl TagNumber {
23-
/// Tag number `0`
24-
pub const N0: Self = Self(0);
25-
26-
/// Tag number `1`
27-
pub const N1: Self = Self(1);
28-
29-
/// Tag number `2`
30-
pub const N2: Self = Self(2);
31-
32-
/// Tag number `3`
33-
pub const N3: Self = Self(3);
34-
35-
/// Tag number `4`
36-
pub const N4: Self = Self(4);
37-
38-
/// Tag number `5`
39-
pub const N5: Self = Self(5);
40-
41-
/// Tag number `6`
42-
pub const N6: Self = Self(6);
43-
44-
/// Tag number `7`
45-
pub const N7: Self = Self(7);
46-
47-
/// Tag number `8`
48-
pub const N8: Self = Self(8);
49-
50-
/// Tag number `9`
51-
pub const N9: Self = Self(9);
52-
53-
/// Tag number `10`
54-
pub const N10: Self = Self(10);
55-
56-
/// Tag number `11`
57-
pub const N11: Self = Self(11);
58-
59-
/// Tag number `12`
60-
pub const N12: Self = Self(12);
61-
62-
/// Tag number `13`
63-
pub const N13: Self = Self(13);
64-
65-
/// Tag number `14`
66-
pub const N14: Self = Self(14);
67-
68-
/// Tag number `15`
69-
pub const N15: Self = Self(15);
70-
71-
/// Tag number `16`
72-
pub const N16: Self = Self(16);
73-
74-
/// Tag number `17`
75-
pub const N17: Self = Self(17);
76-
77-
/// Tag number `18`
78-
pub const N18: Self = Self(18);
79-
80-
/// Tag number `19`
81-
pub const N19: Self = Self(19);
82-
83-
/// Tag number `20`
84-
pub const N20: Self = Self(20);
85-
86-
/// Tag number `21`
87-
pub const N21: Self = Self(21);
88-
89-
/// Tag number `22`
90-
pub const N22: Self = Self(22);
91-
92-
/// Tag number `23`
93-
pub const N23: Self = Self(23);
94-
95-
/// Tag number `24`
96-
pub const N24: Self = Self(24);
97-
98-
/// Tag number `25`
99-
pub const N25: Self = Self(25);
100-
101-
/// Tag number `26`
102-
pub const N26: Self = Self(26);
103-
104-
/// Tag number `27`
105-
pub const N27: Self = Self(27);
106-
107-
/// Tag number `28`
108-
pub const N28: Self = Self(28);
109-
110-
/// Tag number `29`
111-
pub const N29: Self = Self(29);
112-
113-
/// Tag number `30`
114-
pub const N30: Self = Self(30);
115-
11623
/// Mask value used to obtain the tag number from a tag octet.
11724
pub(super) const MASK: u8 = 0b11111;
11825

der_derive/src/sequence/field.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,11 @@ mod tests {
348348
quote! {
349349
let implicit_field = ::der::asn1::ContextSpecific::<>::decode_implicit(
350350
reader,
351-
::der::TagNumber::N0
351+
::der::TagNumber(0u32)
352352
)?
353353
.ok_or_else(|| {
354354
der::Tag::ContextSpecific {
355-
number: ::der::TagNumber::N0,
355+
number: ::der::TagNumber(0u32),
356356
constructed: false
357357
}
358358
.value_error()
@@ -366,7 +366,7 @@ mod tests {
366366
field.to_encode_tokens().to_string(),
367367
quote! {
368368
::der::asn1::ContextSpecificRef {
369-
tag_number: ::der::TagNumber::N0,
369+
tag_number: ::der::TagNumber(0u32),
370370
tag_mode: ::der::TagMode::Implicit,
371371
value: &self.implicit_field,
372372
}

der_derive/src/tag.rs

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -117,62 +117,21 @@ impl Display for TagMode {
117117

118118
/// ASN.1 tag numbers (i.e. lower 5 bits of a [`Tag`]).
119119
#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
120-
pub(crate) struct TagNumber(pub u8);
120+
pub(crate) struct TagNumber(pub u32);
121121

122122
impl TagNumber {
123-
/// Maximum tag number supported (inclusive).
124-
pub const MAX: u8 = 30;
125-
126123
/// Get tokens describing this tag.
127124
pub fn to_tokens(self) -> TokenStream {
128-
match self.0 {
129-
0 => quote!(::der::TagNumber::N0),
130-
1 => quote!(::der::TagNumber::N1),
131-
2 => quote!(::der::TagNumber::N2),
132-
3 => quote!(::der::TagNumber::N3),
133-
4 => quote!(::der::TagNumber::N4),
134-
5 => quote!(::der::TagNumber::N5),
135-
6 => quote!(::der::TagNumber::N6),
136-
7 => quote!(::der::TagNumber::N7),
137-
8 => quote!(::der::TagNumber::N8),
138-
9 => quote!(::der::TagNumber::N9),
139-
10 => quote!(::der::TagNumber::N10),
140-
11 => quote!(::der::TagNumber::N11),
141-
12 => quote!(::der::TagNumber::N12),
142-
13 => quote!(::der::TagNumber::N13),
143-
14 => quote!(::der::TagNumber::N14),
144-
15 => quote!(::der::TagNumber::N15),
145-
16 => quote!(::der::TagNumber::N16),
146-
17 => quote!(::der::TagNumber::N17),
147-
18 => quote!(::der::TagNumber::N18),
148-
19 => quote!(::der::TagNumber::N19),
149-
20 => quote!(::der::TagNumber::N20),
150-
21 => quote!(::der::TagNumber::N21),
151-
22 => quote!(::der::TagNumber::N22),
152-
23 => quote!(::der::TagNumber::N23),
153-
24 => quote!(::der::TagNumber::N24),
154-
25 => quote!(::der::TagNumber::N25),
155-
26 => quote!(::der::TagNumber::N26),
156-
27 => quote!(::der::TagNumber::N27),
157-
28 => quote!(::der::TagNumber::N28),
158-
29 => quote!(::der::TagNumber::N29),
159-
30 => quote!(::der::TagNumber::N30),
160-
_ => unreachable!("tag number out of range: {}", self),
161-
}
125+
let num = self.0;
126+
quote!(::der::TagNumber(#num))
162127
}
163128
}
164129

165130
impl FromStr for TagNumber {
166131
type Err = ParseError;
167132

168133
fn from_str(s: &str) -> Result<Self, ParseError> {
169-
let n = s.parse::<u8>().map_err(|_| ParseError)?;
170-
171-
if n <= Self::MAX {
172-
Ok(Self(n))
173-
} else {
174-
Err(ParseError)
175-
}
134+
s.parse::<u32>().map(Self).map_err(|_| ParseError)
176135
}
177136
}
178137

gss-api/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ mod tests {
140140
AnyRef::new(
141141
Tag::ContextSpecific {
142142
constructed: true,
143-
number: TagNumber::N0
143+
number: TagNumber::new(0)
144144
},
145145
&inner_bytes
146146
)
@@ -153,7 +153,7 @@ mod tests {
153153
inner_context_token: AnyRef::new(
154154
Tag::ContextSpecific {
155155
constructed: true,
156-
number: TagNumber::N0,
156+
number: TagNumber::new(0),
157157
},
158158
&inner_bytes,
159159
)

pkcs1/src/params.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ impl<'a> RsaPssParams<'a> {
122122
None
123123
} else {
124124
Some(ContextSpecificRef {
125-
tag_number: TagNumber::N0,
125+
tag_number: TagNumber::new(0),
126126
tag_mode: TagMode::Explicit,
127127
value: &self.hash,
128128
})
@@ -136,7 +136,7 @@ impl<'a> RsaPssParams<'a> {
136136
None
137137
} else {
138138
Some(ContextSpecificRef {
139-
tag_number: TagNumber::N1,
139+
tag_number: TagNumber::new(1),
140140
tag_mode: TagMode::Explicit,
141141
value: &self.mask_gen,
142142
})
@@ -148,7 +148,7 @@ impl<'a> RsaPssParams<'a> {
148148
None
149149
} else {
150150
Some(ContextSpecificRef {
151-
tag_number: TagNumber::N2,
151+
tag_number: TagNumber::new(2),
152152
tag_mode: TagMode::Explicit,
153153
value: &self.salt_len,
154154
})
@@ -160,7 +160,7 @@ impl<'a> RsaPssParams<'a> {
160160
None
161161
} else {
162162
Some(ContextSpecificRef {
163-
tag_number: TagNumber::N3,
163+
tag_number: TagNumber::new(3),
164164
tag_mode: TagMode::Explicit,
165165
value: &self.trailer_field,
166166
})
@@ -186,16 +186,16 @@ impl<'a> DecodeValue<'a> for RsaPssParams<'a> {
186186
reader.read_nested(header.length, |reader| {
187187
Ok(Self {
188188
hash: reader
189-
.context_specific(TagNumber::N0, TagMode::Explicit)?
189+
.context_specific(TagNumber::new(0), TagMode::Explicit)?
190190
.unwrap_or(SHA_1_AI),
191191
mask_gen: reader
192-
.context_specific(TagNumber::N1, TagMode::Explicit)?
192+
.context_specific(TagNumber::new(1), TagMode::Explicit)?
193193
.unwrap_or_else(default_mgf1_sha1),
194194
salt_len: reader
195-
.context_specific(TagNumber::N2, TagMode::Explicit)?
195+
.context_specific(TagNumber::new(2), TagMode::Explicit)?
196196
.unwrap_or(RsaPssParams::SALT_LEN_DEFAULT),
197197
trailer_field: reader
198-
.context_specific(TagNumber::N3, TagMode::Explicit)?
198+
.context_specific(TagNumber::new(3), TagMode::Explicit)?
199199
.unwrap_or_default(),
200200
})
201201
})
@@ -299,7 +299,7 @@ impl<'a> RsaOaepParams<'a> {
299299
None
300300
} else {
301301
Some(ContextSpecificRef {
302-
tag_number: TagNumber::N0,
302+
tag_number: TagNumber::new(0),
303303
tag_mode: TagMode::Explicit,
304304
value: &self.hash,
305305
})
@@ -313,7 +313,7 @@ impl<'a> RsaOaepParams<'a> {
313313
None
314314
} else {
315315
Some(ContextSpecificRef {
316-
tag_number: TagNumber::N1,
316+
tag_number: TagNumber::new(1),
317317
tag_mode: TagMode::Explicit,
318318
value: &self.mask_gen,
319319
})
@@ -327,7 +327,7 @@ impl<'a> RsaOaepParams<'a> {
327327
None
328328
} else {
329329
Some(ContextSpecificRef {
330-
tag_number: TagNumber::N2,
330+
tag_number: TagNumber::new(2),
331331
tag_mode: TagMode::Explicit,
332332
value: &self.p_source,
333333
})
@@ -351,13 +351,13 @@ impl<'a> DecodeValue<'a> for RsaOaepParams<'a> {
351351
reader.read_nested(header.length, |reader| {
352352
Ok(Self {
353353
hash: reader
354-
.context_specific(TagNumber::N0, TagMode::Explicit)?
354+
.context_specific(TagNumber::new(0), TagMode::Explicit)?
355355
.unwrap_or(SHA_1_AI),
356356
mask_gen: reader
357-
.context_specific(TagNumber::N1, TagMode::Explicit)?
357+
.context_specific(TagNumber::new(1), TagMode::Explicit)?
358358
.unwrap_or_else(default_mgf1_sha1),
359359
p_source: reader
360-
.context_specific(TagNumber::N2, TagMode::Explicit)?
360+
.context_specific(TagNumber::new(2), TagMode::Explicit)?
361361
.unwrap_or_else(default_pempty_string),
362362
})
363363
})

pkcs12/src/safe_bag.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl ::der::EncodeValue for SafeBag {
6565
[
6666
self.bag_id.encoded_len()?,
6767
::der::asn1::ContextSpecificRef {
68-
tag_number: ::der::TagNumber::N0,
68+
tag_number: ::der::TagNumber::new(0),
6969
tag_mode: ::der::TagMode::Explicit,
7070
value: &content,
7171
}
@@ -80,7 +80,7 @@ impl ::der::EncodeValue for SafeBag {
8080
self.bag_id.encode(writer)?;
8181
let content = AnyRef::from_der(&self.bag_value)?;
8282
::der::asn1::ContextSpecificRef {
83-
tag_number: ::der::TagNumber::N0,
83+
tag_number: ::der::TagNumber::new(0),
8484
tag_mode: ::der::TagMode::Explicit,
8585
value: &content,
8686
}

pkcs8/src/private_key_info.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use der::pem::PemLabel;
2727
use subtle::{Choice, ConstantTimeEq};
2828

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

3232
/// PKCS#8 `PrivateKeyInfo`.
3333
///

0 commit comments

Comments
 (0)