openssl::cms

Struct CmsContentInfo

source
pub struct CmsContentInfo(/* private fields */);
Expand description

High level CMS wrapper

CMS supports nesting various types of data, including signatures, certificates, encrypted data, smime messages (encrypted email), and data digest. The ContentInfo content type is the encapsulation of all those content types. RFC 5652 describes CMS and OpenSSL follows this RFC’s implementation.

Implementations§

source§

impl CmsContentInfo

source

pub fn smime_read_cms(smime: &[u8]) -> Result<CmsContentInfo, ErrorStack>

Parses a smime formatted vec of bytes into a CmsContentInfo.

This corresponds to SMIME_read_CMS.

source

pub fn from_der(der: &[u8]) -> Result<CmsContentInfo, ErrorStack>

Deserializes a DER-encoded ContentInfo structure.

This corresponds to d2i_CMS_ContentInfo.

source

pub fn from_pem(pem: &[u8]) -> Result<CmsContentInfo, ErrorStack>

Deserializes a PEM-encoded ContentInfo structure.

This corresponds to PEM_read_bio_CMS.

source

pub fn sign<T>( signcert: Option<&X509Ref>, pkey: Option<&PKeyRef<T>>, certs: Option<&StackRef<X509>>, data: Option<&[u8]>, flags: CMSOptions, ) -> Result<CmsContentInfo, ErrorStack>
where T: HasPrivate,

Given a signing cert signcert, private key pkey, a certificate stack certs, data data and flags flags, create a CmsContentInfo struct.

All arguments are optional.

This corresponds to CMS_sign.

source

pub fn encrypt( certs: &StackRef<X509>, data: &[u8], cipher: Cipher, flags: CMSOptions, ) -> Result<CmsContentInfo, ErrorStack>

Given a certificate stack certs, data data, cipher cipher and flags flags, create a CmsContentInfo struct.

OpenSSL documentation at CMS_encrypt

This corresponds to CMS_encrypt.

source

pub fn verify( &mut self, certs: Option<&StackRef<X509>>, store: Option<&X509StoreRef>, detached_data: Option<&[u8]>, output_data: Option<&mut Vec<u8>>, flags: CMSOptions, ) -> Result<(), ErrorStack>

Verify this CmsContentInfo’s signature, This will search the ‘certs’ list for the signing certificate.
Additional certificates, needed for building the certificate chain, may be given in ‘store’ as well as additional CRLs. A detached signature may be passed in detached_data. The signed content without signature, will be copied into output_data if it is present.

This corresponds to CMS_verify.

Methods from Deref<Target = CmsContentInfoRef>§

source

pub fn decrypt<T>( &self, pkey: &PKeyRef<T>, cert: &X509, ) -> Result<Vec<u8>, ErrorStack>
where T: HasPrivate,

Given the sender’s private key, pkey and the recipient’s certificate, cert, decrypt the data in self.

This corresponds to CMS_decrypt.

source

pub fn decrypt_without_cert_check<T>( &self, pkey: &PKeyRef<T>, ) -> Result<Vec<u8>, ErrorStack>
where T: HasPrivate,

Given the sender’s private key, pkey, decrypt the data in self without validating the recipient certificate.

Warning: Not checking the recipient certificate may leave you vulnerable to Bleichenbacher’s attack on PKCS#1 v1.5 RSA padding.

This corresponds to CMS_decrypt.

source

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

Serializes this CmsContentInfo using DER.

This corresponds to i2d_CMS_ContentInfo.

source

pub fn to_pem(&self) -> Result<Vec<u8>, ErrorStack>

Serializes this CmsContentInfo using DER.

This corresponds to PEM_write_bio_CMS.

Trait Implementations§

source§

impl AsRef<CmsContentInfoRef> for CmsContentInfo

source§

fn as_ref(&self) -> &CmsContentInfoRef

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

impl Borrow<CmsContentInfoRef> for CmsContentInfo

source§

fn borrow(&self) -> &CmsContentInfoRef

Immutably borrows from an owned value. Read more
source§

impl Deref for CmsContentInfo

source§

type Target = CmsContentInfoRef

The resulting type after dereferencing.
source§

fn deref(&self) -> &CmsContentInfoRef

Dereferences the value.
source§

impl DerefMut for CmsContentInfo

source§

fn deref_mut(&mut self) -> &mut CmsContentInfoRef

Mutably dereferences the value.
source§

impl Drop for CmsContentInfo

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl ForeignType for CmsContentInfo

source§

type CType = CMS_ContentInfo

The raw C type.
source§

type Ref = CmsContentInfoRef

The type representing a reference to this type.
source§

unsafe fn from_ptr(ptr: *mut CMS_ContentInfo) -> CmsContentInfo

Constructs an instance of this type from its raw type.
source§

fn as_ptr(&self) -> *mut CMS_ContentInfo

Returns a raw pointer to the wrapped value.
source§

impl Send for CmsContentInfo

source§

impl Sync for CmsContentInfo

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<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, 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.