Unverified Commit 5161e3f8 authored by Steven Fackler's avatar Steven Fackler Committed by GitHub
Browse files

Merge pull request #1335 from m-seker/pkcs7_der

Add from_der and to_der to PKCS7
parents 16a0e6f6 96575db1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -29,6 +29,10 @@ pub const PKCS7_REUSE_DIGEST: c_int = 0x8000;
pub const PKCS7_NO_DUAL_CONTENT: c_int = 0x10000;

extern "C" {
    pub fn d2i_PKCS7(a: *mut *mut PKCS7, pp: *mut *const c_uchar, length: c_long) -> *mut PKCS7;

    pub fn i2d_PKCS7(a: *mut PKCS7, buf: *mut *mut u8) -> c_int;

    pub fn PKCS7_encrypt(
        certs: *mut stack_st_X509,
        b: *mut BIO,
+21 −0
Original line number Diff line number Diff line
@@ -61,6 +61,17 @@ impl Pkcs7 {
        ffi::PEM_read_bio_PKCS7
    }

    from_der! {
        /// Deserializes a DER-encoded PKCS#7 signature
        ///
        /// This corresponds to [`d2i_PKCS7`].
        ///
        /// [`d2i_PKCS7`]: https://www.openssl.org/docs/man1.1.0/man3/d2i_PKCS7.html
        from_der,
        Pkcs7,
        ffi::d2i_PKCS7
    }

    /// Parses a message in S/MIME format.
    ///
    /// Returns the loaded signature, along with the cleartext message (if
@@ -181,6 +192,16 @@ impl Pkcs7Ref {
        ffi::PEM_write_bio_PKCS7
    }

    to_der! {
        /// Serializes the data into a DER-encoded PKCS#7 structure.
        ///
        /// This corresponds to [`i2d_PKCS7`].
        ///
        /// [`i2d_PKCS7`]: https://www.openssl.org/docs/man1.1.0/man3/i2d_PKCS7.html
        to_der,
        ffi::i2d_PKCS7
    }

    /// Decrypts data using the provided private key.
    ///
    /// `pkey` is the recipient's private key, and `cert` is the recipient's