Types
GMimeCipherAlgo = enum cipherAlgoDefault = 0, cipherAlgoIDEA = 1, cipherAlgo3DES = 2, cipherAlgoCAST5 = 3, cipherAlgoBlowfish = 4, cipherAlgoAES = 7, cipherAlgoAES192 = 8, cipherAlgoAES256 = 9, cipherAlgoTwofish = 10, cipherAlgoCamellia128 = 11, cipherAlgoCamellia192 = 12, cipherAlgoCamellia256 = 13
GMimeCryptoContext = object parentObject*: pointer requestPasswd*: GMimePasswordRequestFunc
GMimeCryptoContextClass = object parentClass*: pointer digestId*: proc (ctx: ptr GMimeCryptoContext; name: cstring): GMimeDigestAlgo {. cdecl.} digestName*: proc (ctx: ptr GMimeCryptoContext; digest: GMimeDigestAlgo): cstring {. cdecl.} getSignatureProtocol*: proc (ctx: ptr GMimeCryptoContext): cstring {.cdecl.} getEncryptionProtocol*: proc (ctx: ptr GMimeCryptoContext): cstring {.cdecl.} getKeyExchangeProtocol*: proc (ctx: ptr GMimeCryptoContext): cstring {.cdecl.} sign*: proc (ctx: ptr GMimeCryptoContext; detach: gboolean; userid: cstring; istream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): cint {.cdecl.} verify*: proc (ctx: ptr GMimeCryptoContext; flags: GMimeVerifyFlags; istream: ptr GMimeStream; sigstream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): ptr GMimeSignatureList {. cdecl.} encrypt*: proc (ctx: ptr GMimeCryptoContext; sign: gboolean; userid: cstring; flags: GMimeEncryptFlags; recipients: pointer; istream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): cint {.cdecl.} decrypt*: proc (ctx: ptr GMimeCryptoContext; flags: GMimeDecryptFlags; sessionKey: cstring; istream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): ptr GMimeDecryptResult {. cdecl.} importKeys*: proc (ctx: ptr GMimeCryptoContext; istream: ptr GMimeStream; err: ptr pointer): cint {.cdecl.} exportKeys*: proc (ctx: ptr GMimeCryptoContext; keys: ptr cstring; ostream: ptr GMimeStream; err: ptr pointer): cint {.cdecl.}
GMimeCryptoContextNewFunc = proc (): ptr GMimeCryptoContext {.cdecl.}
GMimeDecryptFlags = enum decryptNone = 0, decryptExportSessionKey = 1, decryptNoVerify = 2, decryptEnableKeyserverLookups = 16384, decryptEnableOnlineCertificateChecks = 32768
GMimeDecryptResult = object parentObject*: pointer recipients*: ptr GMimeCertificateList signatures*: ptr GMimeSignatureList cipher*: GMimeCipherAlgo mdc*: GMimeDigestAlgo sessionKey*: cstring
GMimeDecryptResultClass = object parentClass*: pointer
GMimeEncryptFlags = enum encryptNone = 0, encryptAlwaysTrust = 1, encryptNoCompress = 16, encryptSymmetric = 32, encryptThrowKeyids = 64
GMimePasswordRequestFunc = proc (ctx: ptr GMimeCryptoContext; userId: cstring; prompt: cstring; reprompt: gboolean; response: ptr GMimeStream; err: ptr pointer): gboolean {. cdecl.}
GMimeVerifyFlags = enum verifyNone = 0, verifyEnableKeyserverLookups = 16384, verifyEnableOnlineCertificateChecks = 32768
Procs
proc g_mime_crypto_context_decrypt(ctx: ptr GMimeCryptoContext; flags: GMimeDecryptFlags; sessionKey: cstring; istream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): ptr GMimeDecryptResult {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_digest_id(ctx: ptr GMimeCryptoContext; name: cstring): GMimeDigestAlgo {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_digest_name(ctx: ptr GMimeCryptoContext; digest: GMimeDigestAlgo): cstring {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_encrypt(ctx: ptr GMimeCryptoContext; sign: gboolean; userid: cstring; flags: GMimeEncryptFlags; recipients: pointer; istream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): cint {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_export_keys(ctx: ptr GMimeCryptoContext; keys: ptr cstring; ostream: ptr GMimeStream; err: ptr pointer): cint {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_get_encryption_protocol(ctx: ptr GMimeCryptoContext): cstring {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_get_key_exchange_protocol(ctx: ptr GMimeCryptoContext): cstring {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_get_signature_protocol(ctx: ptr GMimeCryptoContext): cstring {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_get_type(): GType {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_import_keys(ctx: ptr GMimeCryptoContext; istream: ptr GMimeStream; err: ptr pointer): cint {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_new(protocol: cstring): ptr GMimeCryptoContext {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_register(protocol: cstring; callback: GMimeCryptoContextNewFunc) {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_set_request_password(ctx: ptr GMimeCryptoContext; requestPasswd: GMimePasswordRequestFunc) {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_sign(ctx: ptr GMimeCryptoContext; detach: gboolean; userid: cstring; istream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): cint {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_crypto_context_verify(ctx: ptr GMimeCryptoContext; flags: GMimeVerifyFlags; istream: ptr GMimeStream; sigstream: ptr GMimeStream; ostream: ptr GMimeStream; err: ptr pointer): ptr GMimeSignatureList {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_get_cipher(result: ptr GMimeDecryptResult): GMimeCipherAlgo {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_get_mdc(result: ptr GMimeDecryptResult): GMimeDigestAlgo {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_get_recipients(result: ptr GMimeDecryptResult): ptr GMimeCertificateList {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_get_session_key(result: ptr GMimeDecryptResult): cstring {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_get_signatures(result: ptr GMimeDecryptResult): ptr GMimeSignatureList {. importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_get_type(): GType {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_new(): ptr GMimeDecryptResult {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_set_cipher(result: ptr GMimeDecryptResult; cipher: GMimeCipherAlgo) {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_set_mdc(result: ptr GMimeDecryptResult; mdc: GMimeDigestAlgo) {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_set_recipients(result: ptr GMimeDecryptResult; recipients: ptr GMimeCertificateList) {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_set_session_key(result: ptr GMimeDecryptResult; sessionKey: cstring) {.importc, ...raises: [], tags: [], forbids: [].}
proc g_mime_decrypt_result_set_signatures(result: ptr GMimeDecryptResult; signatures: ptr GMimeSignatureList) {.importc, ...raises: [], tags: [], forbids: [].}