1#[derive(Clone, Copy, PartialEq, Eq, Debug)]
2pub enum TagStructure {
3 Primitive = 0,
4 Constructed = 1,
5}
6
7impl TagStructure {
8 pub fn from_u8(n: u8) -> Option<TagStructure> {
9 match n {
10 0 => Some(TagStructure::Primitive),
11 1 => Some(TagStructure::Constructed),
12 _ => None,
13 }
14 }
15}
16
17#[derive(Clone, Copy, PartialEq, Eq, Debug)]
19pub enum TagClass {
20 Universal = 0,
21 Application = 1,
22 Context = 2,
23 Private = 3,
24}
25
26#[cfg(feature = "serde")]
27extern crate serde;
28
29#[cfg(feature = "serde")]
30impl self::serde::Serialize for TagClass {
31 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
32 where
33 S: self::serde::Serializer,
34 {
35 serializer.serialize_u8(*self as u8)
36 }
37}
38
39impl TagClass {
40 pub fn from_u8(n: u8) -> Option<TagClass> {
41 match n {
42 0 => Some(TagClass::Universal),
43 1 => Some(TagClass::Application),
44 2 => Some(TagClass::Context),
45 3 => Some(TagClass::Private),
46 _ => None,
47 }
48 }
49}