Document

Struct Document 

Source
pub struct Document { /* private fields */ }
Available on crate feature alloc only.
Expand description

ASN.1 DER-encoded document.

This type wraps an encoded ASN.1 DER message. The document checked to ensure it contains a valid DER-encoded SEQUENCE.

It implements common functionality related to encoding/decoding such documents, such as PEM encapsulation as well as reading/writing documents from/to the filesystem.

The SecretDocument provides a wrapper for this type with additional hardening applied.

Implementations§

Source§

impl Document

Source

pub fn as_bytes(&self) -> &[u8]

Get the ASN.1 DER-encoded bytes of this document.

Source

pub fn into_secret(self) -> SecretDocument

Convert to a SecretDocument.

Source

pub fn into_vec(self) -> Vec<u8>

Convert to an ASN.1 DER-encoded byte vector.

Source

pub fn to_vec(&self) -> Vec<u8>

Return an ASN.1 DER-encoded byte vector.

Source

pub fn len(&self) -> Length

Get the length of the encoded ASN.1 DER in bytes.

Source

pub fn decode_msg<'a, T>(&'a self) -> Result<T, Error>
where T: Decode<'a>,

Try to decode the inner ASN.1 DER message contained in this Document as the given type.

Source

pub fn encode_msg<T>(msg: &T) -> Result<Document, Error>
where T: Encode,

Encode the provided type as ASN.1 DER, storing the resulting encoded DER as a Document.

Source

pub fn from_pem(pem: &str) -> Result<(&str, Document), Error>

Decode ASN.1 DER document from PEM.

Returns the PEM label and decoded Document on success.

Source

pub fn to_pem( &self, label: &'static str, line_ending: LineEnding, ) -> Result<String, Error>

Encode ASN.1 DER document as a PEM string with encapsulation boundaries containing the provided PEM type label (e.g. CERTIFICATE).

Source

pub fn read_der_file(path: impl AsRef<Path>) -> Result<Document, Error>

Read ASN.1 DER document from a file.

Source

pub fn write_der_file(&self, path: impl AsRef<Path>) -> Result<(), Error>

Write ASN.1 DER document to a file.

Source

pub fn read_pem_file( path: impl AsRef<Path>, ) -> Result<(String, Document), Error>

Read PEM-encoded ASN.1 DER document from a file.

Source

pub fn write_pem_file( &self, path: impl AsRef<Path>, label: &'static str, line_ending: LineEnding, ) -> Result<(), Error>

Write PEM-encoded ASN.1 DER document to a file.

Trait Implementations§

Source§

impl AsRef<[u8]> for Document

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for Document

Source§

fn clone(&self) -> Document

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Document

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'a> Decode<'a> for Document

Source§

fn decode<R>(reader: &mut R) -> Result<Document, Error>
where R: Reader<'a>,

Attempt to decode this message using the provided decoder.
Source§

fn from_der(bytes: &'a [u8]) -> Result<Self, Error>

Parse Self from the provided DER-encoded byte slice.
Source§

impl Encode for Document

Source§

fn encoded_len(&self) -> Result<Length, Error>

Compute the length of this value in bytes when encoded as ASN.1 DER.
Source§

fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>

Encode this value as ASN.1 DER using the provided Writer.
Source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>

Encode this value to the provided byte slice, returning a sub-slice containing the encoded message.
Source§

fn encode_to_vec(&self, buf: &mut Vec<u8>) -> Result<Length, Error>

Encode this message as ASN.1 DER, appending it to the provided byte vector.
Source§

fn to_der(&self) -> Result<Vec<u8>, Error>

Encode this type as DER, returning a byte vector.
Source§

impl FixedTag for Document

Source§

const TAG: Tag = Tag::Sequence

ASN.1 tag
Source§

impl From<Document> for SecretDocument

Source§

fn from(doc: Document) -> SecretDocument

Converts to this type from the input type.
Source§

impl PartialEq for Document

Source§

fn eq(&self, other: &Document) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<&[u8]> for Document

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(der_bytes: &[u8]) -> Result<Document, Error>

Performs the conversion.
Source§

impl<'a, 'k, Params, Key> TryFrom<&SubjectPublicKeyInfo<Params, Key>> for Document
where 'a: 'k, Key: 'k + Decode<'a> + Encode + FixedTag, Params: Choice<'a> + Encode, BitStringRef<'a>: From<&'k Key>,

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(spki: &SubjectPublicKeyInfo<Params, Key>) -> Result<Document, Error>

Performs the conversion.
Source§

impl<'a, 'k, Params, Key> TryFrom<SubjectPublicKeyInfo<Params, Key>> for Document
where 'a: 'k, Key: 'k + Decode<'a> + Encode + FixedTag, Params: Choice<'a> + Encode, BitStringRef<'a>: From<&'k Key>,

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(spki: SubjectPublicKeyInfo<Params, Key>) -> Result<Document, Error>

Performs the conversion.
Source§

impl TryFrom<Vec<u8>> for Document

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(der_bytes: Vec<u8>) -> Result<Document, Error>

Performs the conversion.
Source§

impl Eq for Document

Source§

impl StructuralPartialEq for Document

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<'a, T> Choice<'a> for T
where T: Decode<'a> + FixedTag,

Source§

fn can_decode(tag: Tag) -> bool

Is the provided Tag decodable as a variant of this CHOICE?
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DecodePublicKey for T
where T: for<'a> TryFrom<SubjectPublicKeyInfo<AnyRef<'a>, BitStringRef<'a>>, Error = Error>,

Source§

fn from_public_key_der(bytes: &[u8]) -> Result<T, Error>

Deserialize object from ASN.1 DER-encoded [SubjectPublicKeyInfo] (binary format).
Source§

fn from_public_key_pem(s: &str) -> Result<Self, Error>

Deserialize PEM-encoded [SubjectPublicKeyInfo]. Read more
Source§

fn read_public_key_der_file(path: impl AsRef<Path>) -> Result<Self, Error>

Load public key object from an ASN.1 DER-encoded file on the local filesystem (binary format).
Source§

fn read_public_key_pem_file(path: impl AsRef<Path>) -> Result<Self, Error>

Load public key object from a PEM-encoded file on the local filesystem.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Tagged for T
where T: FixedTag,

Source§

fn tag(&self) -> Tag

Get the ASN.1 tag that this type is encoded with.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DecodeOwned for T
where T: for<'a> Decode<'a>,

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 32 bytes