1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use ::{ Asn1DerError, types::{ FromDerObject, IntoDerObject }, der::{ DerObject, DerTag} }; impl FromDerObject for bool { fn from_der_object(der_object: DerObject) -> Result<Self, Asn1DerError> { if der_object.tag != DerTag::Boolean { return Err(Asn1DerError::InvalidTag) } match der_object.value.data.as_slice() { &[0x00u8] => Ok(false), &[0xffu8] => Ok(true), _ => return Err(Asn1DerError::InvalidEncoding) } } } impl IntoDerObject for bool { fn into_der_object(self) -> DerObject { DerObject::new(DerTag::Boolean, match self { true => vec![0xffu8], false => vec![0x00u8] }.into()) } fn serialized_len(&self) -> usize { DerObject::compute_serialized_len(1) } }