Top |
Functions
Types and Values
enum | GMimeDecryptFlags |
enum | GMimeEncryptFlags |
enum | GMimeVerifyFlags |
struct | GMimeCryptoContext |
enum | GMimeCipherAlgo |
struct | GMimeDecryptResult |
Object Hierarchy
GObject ├── GMimeCryptoContext │ ├── GMimeGpgContext │ ╰── GMimePkcs7Context ╰── GMimeDecryptResult
Description
A GMimeCryptoContext is used for encrypting, decrypting, signing and verifying cryptographic signatures.
Functions
GMimeCryptoContextNewFunc ()
GMimeCryptoContext *
(*GMimeCryptoContextNewFunc) (void
);
A callback used to create a new instance of a GMimeCryptoContext subclass.
GMimePasswordRequestFunc ()
gboolean (*GMimePasswordRequestFunc) (GMimeCryptoContext *ctx
,const char *user_id
,const char *prompt
,gboolean reprompt
,GMimeStream *response
,GError **err
);
A password request callback allowing a GMimeCryptoContext to prompt the user for a password for a given key.
Parameters
ctx |
the GMimeCryptoContext making the request |
|
user_id |
the user_id of the password being requested |
|
prompt |
a string containing some helpful context for the prompt |
|
reprompt |
|
|
response |
a stream for the application to write the password to (followed by a newline '\n' character) |
|
err |
a GError for the callback to set if an error occurs |
g_mime_crypto_context_register ()
void g_mime_crypto_context_register (const char *protocol
,GMimeCryptoContextNewFunc callback
);
Registers the callback for the specified protocol
.
[skip]
g_mime_crypto_context_new ()
GMimeCryptoContext *
g_mime_crypto_context_new (const char *protocol
);
Creates a new crypto context for the specified protocol
.
g_mime_crypto_context_set_request_password ()
void g_mime_crypto_context_set_request_password (GMimeCryptoContext *ctx
,GMimePasswordRequestFunc request_passwd
);
Sets the function used by the ctx
for requesting a password from
the user.
[skip]
g_mime_crypto_context_get_signature_protocol ()
const char *
g_mime_crypto_context_get_signature_protocol
(GMimeCryptoContext *ctx
);
Gets the signature protocol for the crypto context.
g_mime_crypto_context_get_encryption_protocol ()
const char *
g_mime_crypto_context_get_encryption_protocol
(GMimeCryptoContext *ctx
);
Gets the encryption protocol for the crypto context.
g_mime_crypto_context_get_key_exchange_protocol ()
const char *
g_mime_crypto_context_get_key_exchange_protocol
(GMimeCryptoContext *ctx
);
Gets the key exchange protocol for the crypto context.
g_mime_crypto_context_digest_id ()
GMimeDigestAlgo g_mime_crypto_context_digest_id (GMimeCryptoContext *ctx
,const char *name
);
Gets the digest id based on the digest name.
g_mime_crypto_context_digest_name ()
const char * g_mime_crypto_context_digest_name (GMimeCryptoContext *ctx
,GMimeDigestAlgo digest
);
Gets the digest name based on the digest id digest
.
g_mime_crypto_context_sign ()
int g_mime_crypto_context_sign (GMimeCryptoContext *ctx
,gboolean detach
,const char *userid
,GMimeStream *istream
,GMimeStream *ostream
,GError **err
);
Signs the input stream and writes the resulting signature to the output stream.
g_mime_crypto_context_verify ()
GMimeSignatureList * g_mime_crypto_context_verify (GMimeCryptoContext *ctx
,GMimeVerifyFlags flags
,GMimeStream *istream
,GMimeStream *sigstream
,GMimeStream *ostream
,GError **err
);
Verifies the signature. If istream
is a clearsigned stream, you
should pass NULL
as the sigstream
parameter and may wish to
provide an ostream
argument for GMime to output the original
plaintext into. Otherwise sigstream
is assumed to be the signature
stream and is used to verify the integirity of the istream
.
Parameters
g_mime_crypto_context_encrypt ()
int g_mime_crypto_context_encrypt (GMimeCryptoContext *ctx
,gboolean sign
,const char *userid
,GMimeEncryptFlags flags
,GPtrArray *recipients
,GMimeStream *istream
,GMimeStream *ostream
,GError **err
);
Encrypts (and optionally signs) the cleartext input stream and writes the resulting ciphertext to the output stream.
Parameters
ctx |
||
sign |
sign as well as encrypt |
|
userid |
the key id (or email address) to use when signing (assuming |
[nullable] |
flags |
a set of GMimeEncryptFlags |
|
recipients |
an array of recipient key ids and/or email addresses. |
[element-type utf8] |
istream |
cleartext input stream |
|
ostream |
ciphertext output stream |
|
err |
a GError |
g_mime_crypto_context_decrypt ()
GMimeDecryptResult * g_mime_crypto_context_decrypt (GMimeCryptoContext *ctx
,GMimeDecryptFlags flags
,const char *session_key
,GMimeStream *istream
,GMimeStream *ostream
,GError **err
);
Decrypts the ciphertext input stream and writes the resulting cleartext to the output stream.
When non-NULL
, session_key
should be a NULL
-terminated string,
such as the one returned by g_mime_decrypt_result_get_session_key()
from a previous decryption. If the session_key
is not valid, decryption
will fail.
If the encrypted input stream was also signed, the returned
GMimeDecryptResult will have a non-NULL
list of signatures, each with a
GMimeSignatureStatus (among other details about each signature).
On success, the returned GMimeDecryptResult will contain a list of certificates, one for each recipient, that the original encrypted stream was encrypted to.
Note: It *may* be possible to maliciously design an encrypted stream such that recursively decrypting it will result in an endless loop, causing a denial of service attack on your application.
Parameters
ctx |
||
flags |
a set of GMimeDecryptFlags |
|
session_key |
the session key to use or |
[nullable] |
istream |
input/ciphertext stream |
|
ostream |
output/cleartext stream |
|
err |
a GError |
g_mime_crypto_context_import_keys ()
int g_mime_crypto_context_import_keys (GMimeCryptoContext *ctx
,GMimeStream *istream
,GError **err
);
Imports a stream of keys/certificates contained within istream
into the key/certificate database controlled by ctx
.
g_mime_crypto_context_export_keys ()
int g_mime_crypto_context_export_keys (GMimeCryptoContext *ctx
,const char *keys[]
,GMimeStream *ostream
,GError **err
);
Exports the keys/certificates in keys
to the stream ostream
from
the key/certificate database controlled by ctx
.
If keys
is NULL
or contains only a NULL
element, then all keys
will be exported.
g_mime_decrypt_result_new ()
GMimeDecryptResult *
g_mime_decrypt_result_new (void
);
Creates a new GMimeDecryptResult object.
g_mime_decrypt_result_get_recipients ()
GMimeCertificateList *
g_mime_decrypt_result_get_recipients (GMimeDecryptResult *result
);
Gets the list of certificates that the stream had been encrypted to.
g_mime_decrypt_result_set_recipients ()
void g_mime_decrypt_result_set_recipients (GMimeDecryptResult *result
,GMimeCertificateList *recipients
);
Sets the list of certificates that the stream had been encrypted to.
g_mime_decrypt_result_get_signatures ()
GMimeSignatureList *
g_mime_decrypt_result_get_signatures (GMimeDecryptResult *result
);
Gets a list of signatures if the encrypted stream had also been signed.
g_mime_decrypt_result_set_signatures ()
void g_mime_decrypt_result_set_signatures (GMimeDecryptResult *result
,GMimeSignatureList *signatures
);
Sets the list of signatures.
g_mime_decrypt_result_get_cipher ()
GMimeCipherAlgo
g_mime_decrypt_result_get_cipher (GMimeDecryptResult *result
);
Get the cipher algorithm used.
g_mime_decrypt_result_set_cipher ()
void g_mime_decrypt_result_set_cipher (GMimeDecryptResult *result
,GMimeCipherAlgo cipher
);
Set the cipher algorithm used.
g_mime_decrypt_result_get_mdc ()
GMimeDigestAlgo
g_mime_decrypt_result_get_mdc (GMimeDecryptResult *result
);
Get the mdc digest algorithm used.
g_mime_decrypt_result_set_mdc ()
void g_mime_decrypt_result_set_mdc (GMimeDecryptResult *result
,GMimeDigestAlgo mdc
);
Set the mdc digest algorithm used.
g_mime_decrypt_result_get_session_key ()
const char *
g_mime_decrypt_result_get_session_key (GMimeDecryptResult *result
);
Get the session key used for this decryption.
Returns
the session key digest algorithm used, or NULL
if no
session key was requested or found.
[nullable]
g_mime_decrypt_result_set_session_key ()
void g_mime_decrypt_result_set_session_key (GMimeDecryptResult *result
,const char *session_key
);
Set the session key to be returned by this decryption result.
Parameters
result |
||
session_key |
a string representing the session key or |
[nullable] |
Types and Values
enum GMimeDecryptFlags
Decryption flags.
enum GMimeCipherAlgo
A cipher algorithm.