1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
// This file was generated by gir (https://github.com/gtk-rs/gir @ fe7a6ff+) // from gir-files (https://github.com/gtk-rs/gir-files @ b215ee8) // DO NOT EDIT use DecryptFlags; use DecryptResult; use Error; use Multipart; use Object; use ffi; use glib::object::IsA; use glib::translate::*; use glib_ffi; use gobject_ffi; use std::mem; use std::ptr; glib_wrapper! { /// A multipart/encrypted MIME part. /// /// # Implements /// /// [`MultipartEncryptedExt`](trait.MultipartEncryptedExt.html), [`MultipartExt`](trait.MultipartExt.html), [`ObjectExt`](trait.ObjectExt.html) pub struct MultipartEncrypted(Object<ffi::GMimeMultipartEncrypted, ffi::GMimeMultipartEncryptedClass>): Multipart, Object; match fn { get_type => || ffi::g_mime_multipart_encrypted_get_type(), } } impl MultipartEncrypted { /// Creates a new MIME multipart/encrypted object. /// /// # Returns /// /// an empty MIME multipart/encrypted object. pub fn new() -> MultipartEncrypted { unsafe { from_glib_full(ffi::g_mime_multipart_encrypted_new()) } } //pub fn encrypt<'a, P: IsA<CryptoContext>, Q: IsA<Object>, R: Into<Option<&'a str>>>(ctx: &P, entity: &Q, sign: bool, userid: R, flags: EncryptFlags, recipients: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }) -> Result<Option<MultipartEncrypted>, Error> { // unsafe { TODO: call ffi::g_mime_multipart_encrypted_encrypt() } //} } impl Default for MultipartEncrypted { fn default() -> Self { Self::new() } } /// Trait containing all `MultipartEncrypted` methods. /// /// # Implementors /// /// [`MultipartEncrypted`](struct.MultipartEncrypted.html) pub trait MultipartEncryptedExt { /// Attempts to decrypt the encrypted MIME part contained within the /// multipart/encrypted object `self`. /// /// When non-`None`, `session_key` should be a `None`-terminated string, /// such as the one returned by `DecryptResultExt::get_session_key` /// from a previous decryption. If the `session_key` is not valid, decryption /// will fail. /// /// If `result` is non-`None`, then on a successful decrypt operation, it will be /// updated to point to a newly-allocated `DecryptResult` with signature /// status information as well as a list of recipients that the part was /// encrypted to. /// ## `flags` /// a `DecryptFlags` /// ## `session_key` /// session key to use or `None` /// ## `result` /// a `DecryptResult` /// /// # Returns /// /// the decrypted MIME part on success or /// `None` on fail. If the decryption fails, an exception will be set on /// `err` to provide information as to why the failure occurred. fn decrypt(&self, flags: DecryptFlags, session_key: &str) -> Result<(Option<Object>, DecryptResult), Error>; } impl<O: IsA<MultipartEncrypted>> MultipartEncryptedExt for O { fn decrypt(&self, flags: DecryptFlags, session_key: &str) -> Result<(Option<Object>, DecryptResult), Error> { unsafe { let mut result = ptr::null_mut(); let mut error = ptr::null_mut(); let ret = ffi::g_mime_multipart_encrypted_decrypt(self.to_glib_none().0, flags.to_glib(), session_key.to_glib_none().0, &mut result, &mut error); if error.is_null() { Ok((from_glib_full(ret), from_glib_full(result))) } else { Err(from_glib_full(error)) } } } }