Skip to main content

lber_serde/
common.rs

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/// Possible classes for a tag.
18#[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}