GMimeCipherContext

GMimeCipherContext — Encryption/signing contexts

Synopsis

enum                GMimeCipherHash;
                    GMimeCipherContext;
                    GMimeSignatureValidity;
enum                GMimeSignatureStatus;
enum                GMimeSignerStatus;
enum                GMimeSignerTrust;
enum                GMimeSignerError;
                    GMimeSigner;
GMimeCipherHash     g_mime_cipher_context_hash_id       (GMimeCipherContext *ctx,
                                                         const char *hash);
const char*         g_mime_cipher_context_hash_name     (GMimeCipherContext *ctx,
                                                         GMimeCipherHash hash);
int                 g_mime_cipher_context_sign          (GMimeCipherContext *ctx,
                                                         const char *userid,
                                                         GMimeCipherHash hash,
                                                         GMimeStream *istream,
                                                         GMimeStream *ostream,
                                                         GError **err);
GMimeSignatureValidity* g_mime_cipher_context_verify    (GMimeCipherContext *ctx,
                                                         GMimeCipherHash hash,
                                                         GMimeStream *istream,
                                                         GMimeStream *sigstream,
                                                         GError **err);
int                 g_mime_cipher_context_encrypt       (GMimeCipherContext *ctx,
                                                         gboolean sign,
                                                         const char *userid,
                                                         GPtrArray *recipients,
                                                         GMimeStream *istream,
                                                         GMimeStream *ostream,
                                                         GError **err);
GMimeSignatureValidity* g_mime_cipher_context_decrypt   (GMimeCipherContext *ctx,
                                                         GMimeStream *istream,
                                                         GMimeStream *ostream,
                                                         GError **err);
int                 g_mime_cipher_context_import_keys   (GMimeCipherContext *ctx,
                                                         GMimeStream *istream,
                                                         GError **err);
int                 g_mime_cipher_context_export_keys   (GMimeCipherContext *ctx,
                                                         GPtrArray *keys,
                                                         GMimeStream *ostream,
                                                         GError **err);

GMimeSigner*        g_mime_signer_new                   (void);
void                g_mime_signer_free                  (GMimeSigner *signer);
GMimeSigner*        g_mime_signer_next                  (GMimeSigner *signer);
GMimeSignerStatus   g_mime_signer_get_status            (GMimeSigner *signer);
void                g_mime_signer_set_status            (GMimeSigner *signer,
                                                         GMimeSignerStatus status);
GMimeSignerError    g_mime_signer_get_errors            (GMimeSigner *signer);
void                g_mime_signer_set_errors            (GMimeSigner *signer,
                                                         GMimeSignerError error);
GMimeSignerTrust    g_mime_signer_get_trust             (GMimeSigner *signer);
void                g_mime_signer_set_trust             (GMimeSigner *signer,
                                                         GMimeSignerTrust trust);
const char*         g_mime_signer_get_fingerprint       (GMimeSigner *signer);
void                g_mime_signer_set_fingerprint       (GMimeSigner *signer,
                                                         const char *fingerprint);
const char*         g_mime_signer_get_key_id            (GMimeSigner *signer);
void                g_mime_signer_set_key_id            (GMimeSigner *signer,
                                                         const char *key_id);
const char*         g_mime_signer_get_name              (GMimeSigner *signer);
void                g_mime_signer_set_name              (GMimeSigner *signer,
                                                         const char *name);
time_t              g_mime_signer_get_created           (GMimeSigner *signer);
void                g_mime_signer_set_created           (GMimeSigner *signer,
                                                         time_t created);
time_t              g_mime_signer_get_expires           (GMimeSigner *signer);
void                g_mime_signer_set_expires           (GMimeSigner *signer,
                                                         time_t expires);
GMimeSignatureValidity* g_mime_signature_validity_new   (void);
void                g_mime_signature_validity_free      (GMimeSignatureValidity *validity);
void                g_mime_signature_validity_set_status
                                                        (GMimeSignatureValidity *validity,
                                                         GMimeSignatureStatus status);
GMimeSignatureStatus g_mime_signature_validity_get_status
                                                        (const GMimeSignatureValidity *validity);
void                g_mime_signature_validity_set_details
                                                        (GMimeSignatureValidity *validity,
                                                         const char *details);
const char*         g_mime_signature_validity_get_details
                                                        (const GMimeSignatureValidity *validity);
void                g_mime_signature_validity_add_signer
                                                        (GMimeSignatureValidity *validity,
                                                         GMimeSigner *signer);
const GMimeSigner*  g_mime_signature_validity_get_signers
                                                        (const GMimeSignatureValidity *validity);

Object Hierarchy

  GObject
   +----GMimeCipherContext
         +----GMimeGpgContext

Description

A GMimeCipherContext is used for encrypting, decrypting, signing and verifying cryptographic signatures.

Details

enum GMimeCipherHash

typedef enum {
	GMIME_CIPHER_HASH_DEFAULT,
	GMIME_CIPHER_HASH_MD2,
	GMIME_CIPHER_HASH_MD5,
	GMIME_CIPHER_HASH_SHA1,
	GMIME_CIPHER_HASH_SHA224,
	GMIME_CIPHER_HASH_SHA256,
	GMIME_CIPHER_HASH_SHA384,
	GMIME_CIPHER_HASH_SHA512,
	GMIME_CIPHER_HASH_RIPEMD160,
	GMIME_CIPHER_HASH_TIGER192,
	GMIME_CIPHER_HASH_HAVAL5160
} GMimeCipherHash;

A hash algorithm.

GMIME_CIPHER_HASH_DEFAULT

The default hash algorithm.

GMIME_CIPHER_HASH_MD2

The MD2 hash algorithm.

GMIME_CIPHER_HASH_MD5

The MD5 hash algorithm.

GMIME_CIPHER_HASH_SHA1

The SHA-1 hash algorithm.

GMIME_CIPHER_HASH_SHA224

The SHA-224 hash algorithm.

GMIME_CIPHER_HASH_SHA256

The SHA-256 hash algorithm.

GMIME_CIPHER_HASH_SHA384

The SHA-384 hash algorithm.

GMIME_CIPHER_HASH_SHA512

The SHA-512 hash algorithm.

GMIME_CIPHER_HASH_RIPEMD160

The RIPEMD-160 hash algorithm.

GMIME_CIPHER_HASH_TIGER192

The TIGER-192 hash algorithm.

GMIME_CIPHER_HASH_HAVAL5160

The HAVAL5-160 hash algorithm.

GMimeCipherContext

typedef struct _GMimeCipherContext GMimeCipherContext;

A crypto context for use with MIME.


GMimeSignatureValidity

typedef struct {
	GMimeSignatureStatus status;
	GMimeSigner *signers;
	char *details;
} GMimeSignatureValidity;

A structure containing information about the signature validity of a signed stream.

GMimeSignatureStatus status;

The overall signature status.

GMimeSigner *signers;

A list of GMimeSigner structures.

char *details;

A string containing more user-readable details.

enum GMimeSignatureStatus

typedef enum {
	GMIME_SIGNATURE_STATUS_NONE,
	GMIME_SIGNATURE_STATUS_GOOD,
	GMIME_SIGNATURE_STATUS_BAD,
	GMIME_SIGNATURE_STATUS_UNKNOWN
} GMimeSignatureStatus;

The status of a message signature.

GMIME_SIGNATURE_STATUS_NONE

No status.

GMIME_SIGNATURE_STATUS_GOOD

Good signature.

GMIME_SIGNATURE_STATUS_BAD

Bad signature.

GMIME_SIGNATURE_STATUS_UNKNOWN

Unknown signature status.

enum GMimeSignerStatus

typedef enum {
	GMIME_SIGNER_STATUS_NONE,
	GMIME_SIGNER_STATUS_GOOD,
	GMIME_SIGNER_STATUS_BAD,
	GMIME_SIGNER_STATUS_ERROR
} GMimeSignerStatus;

A value representing the signature status for a particular GMimeSigner.

GMIME_SIGNER_STATUS_NONE

No status.

GMIME_SIGNER_STATUS_GOOD

Good signature.

GMIME_SIGNER_STATUS_BAD

Bad signature.

GMIME_SIGNER_STATUS_ERROR

An error occurred.

enum GMimeSignerTrust

typedef enum {
	GMIME_SIGNER_TRUST_NONE,
	GMIME_SIGNER_TRUST_NEVER,
	GMIME_SIGNER_TRUST_UNDEFINED,
	GMIME_SIGNER_TRUST_MARGINAL,
	GMIME_SIGNER_TRUST_FULLY,
	GMIME_SIGNER_TRUST_ULTIMATE
} GMimeSignerTrust;

The trust value of a signer.

GMIME_SIGNER_TRUST_NONE

No trust assigned.

GMIME_SIGNER_TRUST_NEVER

Never trust this signer.

GMIME_SIGNER_TRUST_UNDEFINED

Undefined trust for this signer.

GMIME_SIGNER_TRUST_MARGINAL

Trust this signer maginally.

GMIME_SIGNER_TRUST_FULLY

Trust this signer fully.

GMIME_SIGNER_TRUST_ULTIMATE

Trust this signer ultimately.

enum GMimeSignerError

typedef enum {
	GMIME_SIGNER_ERROR_NONE,
	GMIME_SIGNER_ERROR_EXPSIG     = (1 << 0),  /* expire signature */
	GMIME_SIGNER_ERROR_NO_PUBKEY  = (1 << 1),  /* no public key */
	GMIME_SIGNER_ERROR_EXPKEYSIG  = (1 << 2),  /* expired key */
	GMIME_SIGNER_ERROR_REVKEYSIG  = (1 << 3)   /* revoked key */
} GMimeSignerError;

Possible errors that a GMimeSigner could have.

GMIME_SIGNER_ERROR_NONE

No error.

GMIME_SIGNER_ERROR_EXPSIG

Expired signature.

GMIME_SIGNER_ERROR_NO_PUBKEY

No public key found.

GMIME_SIGNER_ERROR_EXPKEYSIG

Expired signature key.

GMIME_SIGNER_ERROR_REVKEYSIG

Revoked signature key.

GMimeSigner

typedef struct {
	GMimeSigner *next;
	unsigned int status:2;    /* GMimeSignerStatus */
	unsigned int errors:4;    /* bitfield of GMimeSignerError's */
	unsigned int trust:3;     /* GMimeSignerTrust */
	unsigned int unused:23;   /* unused expansion bits */
	char *fingerprint;
	time_t created;
	time_t expires;
	char *keyid;
	char *name;
} GMimeSigner;

A structure containing useful information about a signer.

GMimeSigner *next;

Pointer to the next GMimeSigner.

unsigned int status :2;

A GMimeSignerStatus.

unsigned int errors :4;

A bitfield of GMimeSignerError values.

unsigned int trust :3;

A GMimeSignerTrust.

unsigned int unused :23;

Unused expansion bits for future use; ignore this.

char *fingerprint;

A hex string representing the signer's fingerprint.

time_t created;

The creation date of the signature.

time_t expires;

The expiration date of the signature.

char *keyid;

The signer's key id.

char *name;

The name of the person or entity.

g_mime_cipher_context_hash_id ()

GMimeCipherHash     g_mime_cipher_context_hash_id       (GMimeCipherContext *ctx,
                                                         const char *hash);

Gets the hash id based on the hash name hash.

ctx :

a GMimeCipherContext

hash :

hash name

Returns :

the equivalent hash id or GMIME_CIPHER_HASH_DEFAULT on fail.

g_mime_cipher_context_hash_name ()

const char*         g_mime_cipher_context_hash_name     (GMimeCipherContext *ctx,
                                                         GMimeCipherHash hash);

Gets the hash name based on the hash id hash.

ctx :

a GMimeCipherContext

hash :

hash id

Returns :

the equivalent hash name or NULL on fail.

g_mime_cipher_context_sign ()

int                 g_mime_cipher_context_sign          (GMimeCipherContext *ctx,
                                                         const char *userid,
                                                         GMimeCipherHash hash,
                                                         GMimeStream *istream,
                                                         GMimeStream *ostream,
                                                         GError **err);

Signs the input stream and writes the resulting signature to the output stream.

ctx :

a GMimeCipherContext

userid :

private key to use to sign the stream

hash :

preferred Message-Integrity-Check hash algorithm

istream :

input stream

ostream :

output stream

err :

a GError

Returns :

the GMimeCipherHash used on success (useful if hash is specified as GMIME_CIPHER_HASH_DEFAULT) or -1 on fail.

g_mime_cipher_context_verify ()

GMimeSignatureValidity* g_mime_cipher_context_verify    (GMimeCipherContext *ctx,
                                                         GMimeCipherHash hash,
                                                         GMimeStream *istream,
                                                         GMimeStream *sigstream,
                                                         GError **err);

Verifies the signature. If istream is a clearsigned stream, you should pass NULL as the sigstream parameter. Otherwise sigstream is assumed to be the signature stream and is used to verify the integirity of the istream.

ctx :

a GMimeCipherContext

hash :

secure hash used

istream :

input stream

sigstream :

optional detached-signature stream

err :

a GError

Returns :

a GMimeSignatureValidity structure containing information about the integrity of the input stream or NULL on failure to execute at all.

g_mime_cipher_context_encrypt ()

int                 g_mime_cipher_context_encrypt       (GMimeCipherContext *ctx,
                                                         gboolean sign,
                                                         const char *userid,
                                                         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.

ctx :

a GMimeCipherContext

sign :

sign as well as encrypt

userid :

key id (or email address) to use when signing (assuming sign is TRUE)

recipients :

an array of recipient key ids and/or email addresses

istream :

cleartext input stream

ostream :

ciphertext output stream

err :

a GError

Returns :

0 on success or -1 on fail.

g_mime_cipher_context_decrypt ()

GMimeSignatureValidity* g_mime_cipher_context_decrypt   (GMimeCipherContext *ctx,
                                                         GMimeStream *istream,
                                                         GMimeStream *ostream,
                                                         GError **err);

Decrypts the ciphertext input stream and writes the resulting cleartext to the output stream.

If the encrypted input stream was also signed, the returned GMimeSignatureValidity will have signer information included and the signature status will be one of GMIME_SIGNATURE_STATUS_GOOD, GMIME_SIGNATURE_STATUS_BAD, or GMIME_SIGNATURE_STATUS_UNKNOWN.

If the encrypted input text was not signed, then the signature status of the returned GMimeSignatureValidity will be GMIME_SIGNATURE_STATUS_NONE.

ctx :

a GMimeCipherContext

istream :

input/ciphertext stream

ostream :

output/cleartext stream

err :

a GError

Returns :

a GMimeSignatureValidity on success or NULL on error.

g_mime_cipher_context_import_keys ()

int                 g_mime_cipher_context_import_keys   (GMimeCipherContext *ctx,
                                                         GMimeStream *istream,
                                                         GError **err);

Imports a stream of keys/certificates contained within istream into the key/certificate database controlled by ctx.

ctx :

a GMimeCipherContext

istream :

input stream (containing keys)

err :

a GError

Returns :

0 on success or -1 on fail.

g_mime_cipher_context_export_keys ()

int                 g_mime_cipher_context_export_keys   (GMimeCipherContext *ctx,
                                                         GPtrArray *keys,
                                                         GMimeStream *ostream,
                                                         GError **err);

Exports the keys/certificates in keys to the stream ostream from the key/certificate database controlled by ctx.

ctx :

a GMimeCipherContext

keys :

an array of key ids

ostream :

output stream

err :

a GError

Returns :

0 on success or -1 on fail.

g_mime_signer_new ()

GMimeSigner*        g_mime_signer_new                   (void);

Allocates an new GMimeSigner.

Returns :

a new GMimeSigner.

g_mime_signer_free ()

void                g_mime_signer_free                  (GMimeSigner *signer);

Free's the singleton signer.

signer :

signer

g_mime_signer_next ()

GMimeSigner*        g_mime_signer_next                  (GMimeSigner *signer);

Advance to the next signer.

signer :

a GMimeSigner

Returns :

the next GMimeSigner or NULL when complete.

g_mime_signer_get_status ()

GMimeSignerStatus   g_mime_signer_get_status            (GMimeSigner *signer);

Get the signer status.

signer :

a GMimeSigner

Returns :

the signer status.

g_mime_signer_set_status ()

void                g_mime_signer_set_status            (GMimeSigner *signer,
                                                         GMimeSignerStatus status);

Set the status on the signer.

signer :

a GMimeSigner

status :

a GMimeSignerStatus

g_mime_signer_get_errors ()

GMimeSignerError    g_mime_signer_get_errors            (GMimeSigner *signer);

Get the signer errors.

signer :

a GMimeSigner

Returns :

the signer errors.

g_mime_signer_set_errors ()

void                g_mime_signer_set_errors            (GMimeSigner *signer,
                                                         GMimeSignerError error);

Set the errors on the signer.

signer :

a GMimeSigner

error :

a GMimeSignerError

g_mime_signer_get_trust ()

GMimeSignerTrust    g_mime_signer_get_trust             (GMimeSigner *signer);

Get the signer trust.

signer :

a GMimeSigner

Returns :

the signer trust.

g_mime_signer_set_trust ()

void                g_mime_signer_set_trust             (GMimeSigner *signer,
                                                         GMimeSignerTrust trust);

Set the signer trust.

signer :

a GMimeSigner

trust :

a GMimeSignerTrust

g_mime_signer_get_fingerprint ()

const char*         g_mime_signer_get_fingerprint       (GMimeSigner *signer);

Get the signer's key fingerprint.

signer :

a GMimeSigner

Returns :

the signer's key fingerprint.

g_mime_signer_set_fingerprint ()

void                g_mime_signer_set_fingerprint       (GMimeSigner *signer,
                                                         const char *fingerprint);

Set the signer's key fingerprint.

signer :

a GMimeSigner

fingerprint :

fingerprint string

g_mime_signer_get_key_id ()

const char*         g_mime_signer_get_key_id            (GMimeSigner *signer);

Get the signer's key id.

signer :

a GMimeSigner

Returns :

the signer's key id.

g_mime_signer_set_key_id ()

void                g_mime_signer_set_key_id            (GMimeSigner *signer,
                                                         const char *key_id);

Set the signer's key id.

signer :

a GMimeSigner

key_id :

key id

g_mime_signer_get_name ()

const char*         g_mime_signer_get_name              (GMimeSigner *signer);

Get the signer trust.

signer :

a GMimeSigner

Returns :

the signer trust.

g_mime_signer_set_name ()

void                g_mime_signer_set_name              (GMimeSigner *signer,
                                                         const char *name);

Set the signer's name.

signer :

a GMimeSigner

name :

signer's name

g_mime_signer_get_created ()

time_t              g_mime_signer_get_created           (GMimeSigner *signer);

Get the creation date of the signer's key.

signer :

a GMimeSigner

Returns :

the creation date of the signer's key.

g_mime_signer_set_created ()

void                g_mime_signer_set_created           (GMimeSigner *signer,
                                                         time_t created);

Set the signer's key creation date.

signer :

a GMimeSigner

created :

creation date

g_mime_signer_get_expires ()

time_t              g_mime_signer_get_expires           (GMimeSigner *signer);

Get the expiration date of the signer's key.

signer :

a GMimeSigner

Returns :

the expiration date of the signer's key.

g_mime_signer_set_expires ()

void                g_mime_signer_set_expires           (GMimeSigner *signer,
                                                         time_t expires);

Set the signer's key expiration date.

signer :

a GMimeSigner

expires :

expiration date

g_mime_signature_validity_new ()

GMimeSignatureValidity* g_mime_signature_validity_new   (void);

Creates a new GMimeSignatureValidity.

Returns :

a new GMimeSignatureValidity.

g_mime_signature_validity_free ()

void                g_mime_signature_validity_free      (GMimeSignatureValidity *validity);

Frees the memory used by validity back to the system.

validity :

signature validity

g_mime_signature_validity_set_status ()

void                g_mime_signature_validity_set_status
                                                        (GMimeSignatureValidity *validity,
                                                         GMimeSignatureStatus status);

Sets the status of the signature on validity.

validity :

signature validity

status :

GOOD, BAD or UNKNOWN

g_mime_signature_validity_get_status ()

GMimeSignatureStatus g_mime_signature_validity_get_status
                                                        (const GMimeSignatureValidity *validity);

Gets the signature status (GOOD, BAD, UNKNOWN).

validity :

signature validity

Returns :

a GMimeSignatureStatus value.

g_mime_signature_validity_set_details ()

void                g_mime_signature_validity_set_details
                                                        (GMimeSignatureValidity *validity,
                                                         const char *details);

Sets details as the status details string on validity.

validity :

signature validity

details :

details string

g_mime_signature_validity_get_details ()

const char*         g_mime_signature_validity_get_details
                                                        (const GMimeSignatureValidity *validity);

Gets any user-readable status details.

validity :

signature validity

Returns :

a user-readable string containing any status information.

g_mime_signature_validity_add_signer ()

void                g_mime_signature_validity_add_signer
                                                        (GMimeSignatureValidity *validity,
                                                         GMimeSigner *signer);

Adds signer to the list of signers on validity.

validity :

signature validity

signer :

signer

g_mime_signature_validity_get_signers ()

const GMimeSigner*  g_mime_signature_validity_get_signers
                                                        (const GMimeSignatureValidity *validity);

Gets the list of signers.

validity :

signature validity

Returns :

a GMimeSigner list which contain further information such as trust and cipher keys.