Struct SingleResponse

Source
pub struct SingleResponse {
    pub cert_id: CertId,
    pub cert_status: CertStatus,
    pub this_update: OcspGeneralizedTime,
    pub next_update: Option<OcspGeneralizedTime>,
    pub single_extensions: Option<Extensions>,
}
Expand description

SingleResponse structure as defined in RFC 6960 Section 4.2.1.

SingleResponse ::= SEQUENCE {
   certID                  CertID,
   certStatus              CertStatus,
   thisUpdate              GeneralizedTime,
   nextUpdate              [0] EXPLICIT GeneralizedTime OPTIONAL,
   singleExtensions        [1] EXPLICIT Extensions OPTIONAL }

Fields§

§cert_id: CertId§cert_status: CertStatus§this_update: OcspGeneralizedTime§next_update: Option<OcspGeneralizedTime>§single_extensions: Option<Extensions>

Implementations§

Source§

impl SingleResponse

Source

pub fn new( cert_id: CertId, cert_status: CertStatus, this_update: OcspGeneralizedTime, ) -> Self

Available on crate feature builder only.

Returns a SingleResponse given the CertID, CertStatus, and This Update. Next Update is set to None.

Source

pub fn with_this_update(self, this_update: OcspGeneralizedTime) -> Self

Available on crate feature builder only.

Sets thisUpdate in the singleResponse as defined in RFC 6960 Section 4.2.1.

Source

pub fn with_next_update(self, next_update: OcspGeneralizedTime) -> Self

Available on crate feature builder only.

Sets nextUpdate in the singleResponse as defined in RFC 6960 Section 4.2.1.

Source

pub fn with_extension(self, ext: impl AsExtension) -> Result<Self, Error>

Available on crate feature builder only.

Adds a single response extension as specified in RFC 6960 Section 4.4. Errors when the extension encoding fails.

Source

pub fn from_crl<D>( issuer: &Certificate, crl: &CertificateList, serial_number: SerialNumber, ) -> Result<Self, Error>
where D: Digest + AssociatedOid,

Available on crate feature builder only.

Returns a SingleResponse by searching through the CRL to see if serial is revoked. If not, the CertStatus is set to good. The CertID is built from the issuer and serial number. This method does not ensure the CRL is issued by the issuer and only asserts the serial is not revoked in the provided CRL.

thisUpdate and nextUpdate will be pulled from the CRL.

NOTE: this method complies with RFC 2560 Section 2.2 and not RFC 6960 Section 2.2. RFC 6960 limits the good status to only issued certificates. RFC 2560 only asserts the serial was not revoked and makes no assertion the serial was ever issued.

Trait Implementations§

Source§

impl Clone for SingleResponse

Source§

fn clone(&self) -> SingleResponse

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 SingleResponse

Source§

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

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

impl<'__der_lifetime> DecodeValue<'__der_lifetime> for SingleResponse

Source§

fn decode_value<R: Reader<'__der_lifetime>>( reader: &mut R, header: Header, ) -> Result<Self>

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

impl<'__der_lifetime> EncodeValue for SingleResponse

Source§

fn value_len(&self) -> Result<Length>

Compute the length of this value (sans [Tag]+Length header) when encoded as ASN.1 DER.
Source§

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

Encode value (sans [Tag]+Length header) as ASN.1 DER using the provided Writer.
Source§

fn header(&self) -> Result<Header, Error>
where Self: Tagged,

Get the Header used to encode this value.
Source§

impl PartialEq for SingleResponse

Source§

fn eq(&self, other: &SingleResponse) -> 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 Eq for SingleResponse

Source§

impl<'__der_lifetime> Sequence<'__der_lifetime> for SingleResponse

Source§

impl StructuralPartialEq for SingleResponse

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<'a, T> Decode<'a> for T
where T: DecodeValue<'a> + FixedTag,

Source§

fn decode<R>(reader: &mut R) -> Result<T, 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<T> Encode for T
where T: EncodeValue + Tagged,

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<'a, S> FixedTag for S
where S: Sequence<'a>,

Source§

const TAG: Tag = Tag::Sequence

ASN.1 tag
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> Same for T

Source§

type Output = T

Should always be Self
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>,