diff --git a/openssl-sys/src/pkcs7.rs b/openssl-sys/src/pkcs7.rs index 454a04dfcfb03055bb88a243a12879ee229a1991..5aa55ff8b5a75458e81031a380be70ac44846591 100644 --- a/openssl-sys/src/pkcs7.rs +++ b/openssl-sys/src/pkcs7.rs @@ -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, diff --git a/openssl/src/pkcs7.rs b/openssl/src/pkcs7.rs index a4d93cf958984f9c6634b7ff82e37c2796e4b83a..7820739c0cb03f0a99a36dad71cc76e690deb1f1 100644 --- a/openssl/src/pkcs7.rs +++ b/openssl/src/pkcs7.rs @@ -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