[gmime] Updated docs and .NET bindings
- From: Jeffrey Stedfast <fejj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gmime] Updated docs and .NET bindings
- Date: Fri, 18 Mar 2011 03:38:52 +0000 (UTC)
commit 75bafb26c9a2ed3ea598c139bc5aacd5b248168c
Author: Jeffrey Stedfast <fejj gnome org>
Date: Thu Mar 17 23:43:56 2011 -0400
Updated docs and .NET bindings
docs/reference/gmime-docs.sgml | 6 +-
docs/reference/gmime-sections.txt | 209 +++++++----
docs/reference/gmime.hierarchy | 5 +
examples/basic-example.c | 36 +-
gmime/gmime-certificate.c | 8 +-
gmime/gmime-certificate.h | 6 +-
gmime/gmime-crypto-context.c | 2 +-
gmime/gmime-crypto-context.h | 1 +
gmime/gmime-gpg-context.c | 14 +-
gmime/gmime-signature.c | 2 +-
gmime/gmime-signature.h | 1 +
mono/CertificateCollection.custom | 264 ++++++++++++
mono/CryptoRecipient.custom | 8 -
mono/CryptoRecipientCollection.cs | 129 ------
mono/DecryptionResult.custom | 3 -
mono/GMime.metadata | 68 +++-
mono/Makefile.am | 10 +-
mono/SignatureCollection.custom | 264 ++++++++++++
mono/SignatureValidity.custom | 3 -
mono/Signer.custom | 8 -
mono/SignerCollection.cs | 130 ------
mono/gmime-api.raw | 799 ++++++++++++++++++++-----------------
tests/test-pgp.c | 47 ++-
tests/test-pgpmime.c | 114 +++---
tests/test-pkcs7.c | 47 ++-
tests/test-smime.c | 114 +++---
26 files changed, 1362 insertions(+), 936 deletions(-)
---
diff --git a/docs/reference/gmime-docs.sgml b/docs/reference/gmime-docs.sgml
index a4f9a52..c1d1bb9 100644
--- a/docs/reference/gmime-docs.sgml
+++ b/docs/reference/gmime-docs.sgml
@@ -49,6 +49,8 @@
<!ENTITY GMimeFilterStrip SYSTEM "xml/gmime-filter-strip.xml">
<!ENTITY GMimeFilterWindows SYSTEM "xml/gmime-filter-windows.xml">
<!ENTITY GMimeFilterYenc SYSTEM "xml/gmime-filter-yenc.xml">
+<!ENTITY GMimeCertificate SYSTEM "xml/gmime-certificate.xml">
+<!ENTITY GMimeSignature SYSTEM "xml/gmime-signature.xml">
<!ENTITY GMimeCryptoContext SYSTEM "xml/gmime-crypto-context.xml">
<!ENTITY GMimeGpgContext SYSTEM "xml/gmime-gpg-context.xml">
<!ENTITY GMimePkcs7Context SYSTEM "xml/gmime-pkcs7-context.xml">
@@ -84,7 +86,7 @@
</author>
</authorgroup>
<copyright>
- <year>2000-2010</year>
+ <year>2000-2011</year>
<holder>Jeffrey Stedfast</holder>
</copyright>
@@ -247,6 +249,8 @@ string utilities, file utilities, a main loop abstraction, and so on.
<chapter id="CryptoContexts">
<title>Cryptography Contexts</title>
+ &GMimeCertificate;
+ &GMimeSignature;
&GMimeCryptoContext;
&GMimeGpgContext;
&GMimePkcs7Context;
diff --git a/docs/reference/gmime-sections.txt b/docs/reference/gmime-sections.txt
index 43a743b..47a7d09 100644
--- a/docs/reference/gmime-sections.txt
+++ b/docs/reference/gmime-sections.txt
@@ -1135,16 +1135,128 @@ g_mime_iconv_locale_to_utf8_length
</SECTION>
<SECTION>
+<FILE>gmime-certificate</FILE>
+GMimePubKeyAlgo
+GMimeDigestAlgo
+GMimeCertificateTrust
+GMimeCertificate
+g_mime_certificate_new
+g_mime_certificate_get_pubkey_algo
+g_mime_certificate_set_pubkey_algo
+g_mime_certificate_get_digest_algo
+g_mime_certificate_set_digest_algo
+g_mime_certificate_get_issuer_serial
+g_mime_certificate_set_issuer_serial
+g_mime_certificate_get_issuer_name
+g_mime_certificate_set_issuer_name
+g_mime_certificate_get_fingerprint
+g_mime_certificate_set_fingerprint
+g_mime_certificate_get_created
+g_mime_certificate_set_created
+g_mime_certificate_get_expires
+g_mime_certificate_set_expires
+g_mime_certificate_get_key_id
+g_mime_certificate_set_key_id
+g_mime_certificate_get_trust
+g_mime_certificate_set_trust
+g_mime_certificate_get_email
+g_mime_certificate_set_email
+g_mime_certificate_get_name
+g_mime_certificate_set_name
+<SUBSECTION>
+GMimeCertificateList
+g_mime_certificate_list_new
+g_mime_certificate_list_length
+g_mime_certificate_list_clear
+g_mime_certificate_list_add
+g_mime_certificate_list_insert
+g_mime_certificate_list_remove
+g_mime_certificate_list_remove_at
+g_mime_certificate_list_contains
+g_mime_certificate_list_index_of
+g_mime_certificate_list_get_certificate
+g_mime_certificate_list_set_certificate
+<SUBSECTION Private>
+g_mime_certificate_get_type
+g_mime_certificate_list_get_type
+
+<SUBSECTION Standard>
+GMIME_CERTIFICATE
+GMIME_IS_CERTIFICATE
+GMIME_TYPE_CERTIFICATE
+GMIME_CERTIFICATE_CLASS
+GMIME_IS_CERTIFICATE_CLASS
+GMIME_CERTIFICATE_GET_CLASS
+GMimeCertificateClass
+GMIME_CERTIFICATE_LIST
+GMIME_IS_CERTIFICATE_LIST
+GMIME_TYPE_CERTIFICATE_LIST
+GMIME_CERTIFICATE_LIST_CLASS
+GMIME_IS_CERTIFICATE_LIST_CLASS
+GMIME_CERTIFICATE_LIST_GET_CLASS
+GMimeCertificateListClass
+</SECTION>
+
+<SECTION>
+<FILE>gmime-signature</FILE>
+GMimeSignatureStatus
+GMimeSignatureError
+GMimeSignature
+g_mime_signature_new
+g_mime_signature_get_certificate
+g_mime_signature_set_certificate
+g_mime_signature_get_status
+g_mime_signature_set_status
+g_mime_signature_get_errors
+g_mime_signature_set_errors
+g_mime_signature_get_created
+g_mime_signature_set_created
+g_mime_signature_get_expires
+g_mime_signature_set_expires
+<SUBSECTION>
+GMimeSignatureList
+g_mime_signature_list_new
+g_mime_signature_list_length
+g_mime_signature_list_clear
+g_mime_signature_list_add
+g_mime_signature_list_insert
+g_mime_signature_list_remove
+g_mime_signature_list_remove_at
+g_mime_signature_list_contains
+g_mime_signature_list_index_of
+g_mime_signature_list_get_signature
+g_mime_signature_list_set_signature
+<SUBSECTION Private>
+g_mime_signature_get_type
+g_mime_signature_list_get_type
+
+<SUBSECTION Standard>
+GMIME_SIGNATURE
+GMIME_IS_SIGNATURE
+GMIME_TYPE_SIGNATURE
+GMIME_SIGNATURE_CLASS
+GMIME_IS_SIGNATURE_CLASS
+GMIME_SIGNATURE_GET_CLASS
+GMimeSignatureClass
+GMIME_SIGNATURE_LIST
+GMIME_IS_SIGNATURE_LIST
+GMIME_TYPE_SIGNATURE_LIST
+GMIME_SIGNATURE_LIST_CLASS
+GMIME_IS_SIGNATURE_LIST_CLASS
+GMIME_SIGNATURE_LIST_GET_CLASS
+GMimeSignatureListClass
+</SECTION>
+
+<SECTION>
<FILE>gmime-crypto-context</FILE>
GMimePasswordRequestFunc
-GMimeCryptoHash
GMimeCryptoContext
g_mime_crypto_context_set_request_password
g_mime_crypto_context_get_signature_protocol
g_mime_crypto_context_get_encryption_protocol
g_mime_crypto_context_get_key_exchange_protocol
-g_mime_crypto_context_hash_id
-g_mime_crypto_context_hash_name
+g_mime_crypto_context_digest_id
+g_mime_crypto_context_digest_name
g_mime_crypto_context_sign
g_mime_crypto_context_verify
g_mime_crypto_context_encrypt
@@ -1152,80 +1264,20 @@ g_mime_crypto_context_decrypt
g_mime_crypto_context_import_keys
g_mime_crypto_context_export_keys
<SUBSECTION>
-GMimeCryptoPubKeyAlgo
-GMimeSignerStatus
-GMimeSignerTrust
-GMimeSignerError
-GMimeSigner
-g_mime_signer_new
-g_mime_signer_free
-g_mime_signer_next
-g_mime_signer_get_status
-g_mime_signer_set_status
-g_mime_signer_get_errors
-g_mime_signer_set_errors
-g_mime_signer_get_trust
-g_mime_signer_set_trust
-g_mime_signer_get_hash_algo
-g_mime_signer_set_hash_algo
-g_mime_signer_get_pubkey_algo
-g_mime_signer_set_pubkey_algo
-g_mime_signer_get_issuer_serial
-g_mime_signer_set_issuer_serial
-g_mime_signer_get_issuer_name
-g_mime_signer_set_issuer_name
-g_mime_signer_get_fingerprint
-g_mime_signer_set_fingerprint
-g_mime_signer_get_sig_class
-g_mime_signer_set_sig_class
-g_mime_signer_get_sig_version
-g_mime_signer_set_sig_version
-g_mime_signer_get_sig_created
-g_mime_signer_set_sig_created
-g_mime_signer_get_sig_expires
-g_mime_signer_set_sig_expires
-g_mime_signer_get_key_created
-g_mime_signer_set_key_created
-g_mime_signer_get_key_expires
-g_mime_signer_set_key_expires
-g_mime_signer_get_key_id
-g_mime_signer_set_key_id
-g_mime_signer_get_email
-g_mime_signer_set_email
-g_mime_signer_get_name
-g_mime_signer_set_name
-<SUBSECTION>
-GMimeSignatureValidity
-g_mime_signature_validity_new
-g_mime_signature_validity_free
-g_mime_signature_validity_set_details
-g_mime_signature_validity_get_details
-g_mime_signature_validity_add_signer
-g_mime_signature_validity_get_signers
-<SUBSECTION>
-GMimeCryptoRecipient
-g_mime_crypto_recipient_new
-g_mime_crypto_recipient_free
-g_mime_crypto_recipient_next
-g_mime_crypto_recipient_set_key_id
-g_mime_crypto_recipient_get_key_id
-g_mime_crypto_recipient_set_pubkey_algo
-g_mime_crypto_recipient_get_pubkey_algo
-<SUBSECTION>
-GMimeCryptoCipherAlgo
-GMimeDecryptionResult
-g_mime_decryption_result_new
-g_mime_decryption_result_free
-g_mime_decryption_result_set_validity
-g_mime_decryption_result_get_validity
-g_mime_decryption_result_add_recipient
-g_mime_decryption_result_get_recipients
-g_mime_decryption_result_set_cipher
-g_mime_decryption_result_get_cipher
-g_mime_decryption_result_set_mdc
-g_mime_decryption_result_get_mdc
+GMimeCipherAlgo
+GMimeDecryptResult
+g_mime_decrypt_result_new
+g_mime_decrypt_result_get_recipients
+g_mime_decrypt_result_set_recipients
+g_mime_decrypt_result_get_signatures
+g_mime_decrypt_result_set_signatures
+g_mime_decrypt_result_get_cipher
+g_mime_decrypt_result_set_cipher
+g_mime_decrypt_result_get_mdc
+g_mime_decrypt_result_set_mdc
<SUBSECTION Private>
g_mime_crypto_context_get_type
+g_mime_decrypt_result_get_type
<SUBSECTION Standard>
GMIME_CRYPTO_CONTEXT
@@ -1235,6 +1287,13 @@ GMIME_CRYPTO_CONTEXT_CLASS
GMIME_IS_CRYPTO_CONTEXT_CLASS
GMIME_CRYPTO_CONTEXT_GET_CLASS
GMimeCryptoContextClass
+GMIME_DECRYPT_RESULT
+GMIME_IS_DECRYPT_RESULT
+GMIME_TYPE_DECRYPT_RESULT
+GMIME_DECRYPT_RESULT_CLASS
+GMIME_IS_DECRYPT_RESULT_CLASS
+GMIME_DECRYPT_RESULT_GET_CLASS
+GMimeDecryptResultClass
</SECTION>
<SECTION>
diff --git a/docs/reference/gmime.hierarchy b/docs/reference/gmime.hierarchy
index 6776299..fa30bd3 100644
--- a/docs/reference/gmime.hierarchy
+++ b/docs/reference/gmime.hierarchy
@@ -13,8 +13,13 @@ GObject
InternetAddressGroup
InternetAddressMailbox
InternetAddressList
+ GMimeCertificate
+ GMimeCertificateList
+ GMimeSignature
+ GMimeSignatureList
GMimeCipherContext
GMimeGpgContext
+ GMimePkcs7Context
GMimeDataWrapper
GMimeFilter
GMimeFilterBasic
diff --git a/examples/basic-example.c b/examples/basic-example.c
index 82eaa30..7dcf203 100644
--- a/examples/basic-example.c
+++ b/examples/basic-example.c
@@ -136,18 +136,19 @@ count_parts_in_message (GMimeMessage *message)
}
#ifndef G_OS_WIN32
-static GMimeSignerStatus
-sig_status (GMimeSignatureValidity *validity)
+static GMimeSignatureStatus
+sig_status (GMimeSignatureList *signatures)
{
- GMimeSignerStatus status = GMIME_SIGNER_STATUS_GOOD;
- GMimeSigner *signer = validity->signers;
+ GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_GOOD;
+ GMimeSignature *sig;
+ int i;
- if (signer == NULL)
- return GMIME_SIGNER_STATUS_ERROR;
+ if (!signatures || signatures->array->len == 0)
+ return GMIME_SIGNATURE_STATUS_ERROR;
- while (signer != NULL) {
- status = MAX (status, signer->status);
- signer = signer->next;
+ for (i = 0; i < g_mime_signature_list_length (signatures); i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+ status = MAX (status, sig->status);
}
return status;
@@ -161,11 +162,11 @@ verify_foreach_callback (GMimeObject *parent, GMimeObject *part, gpointer user_d
if (GMIME_IS_MULTIPART_SIGNED (part)) {
/* this is a multipart/signed part, so we can verify the pgp signature */
GMimeMultipartSigned *mps = (GMimeMultipartSigned *) part;
- GMimeSignatureValidity *validity;
+ GMimeSignatureList *signatures;
GError *err = NULL;
const char *str;
- if (!(validity = g_mime_multipart_signed_verify (mps, ctx, &err))) {
+ if (!(signatures = g_mime_multipart_signed_verify (mps, ctx, &err))) {
/* an error occured - probably couldn't start gpg? */
/* for more information about GError, see:
@@ -176,14 +177,14 @@ verify_foreach_callback (GMimeObject *parent, GMimeObject *part, gpointer user_d
g_error_free (err);
} else {
/* print out validity info - GOOD vs BAD and "why" */
- switch (sig_status (validity)) {
- case GMIME_SIGNER_STATUS_GOOD:
+ switch (sig_status (signatures)) {
+ case GMIME_SIGNATURE_STATUS_GOOD:
str = "Good";
break;
- case GMIME_SIGNER_STATUS_BAD:
+ case GMIME_SIGNATURE_STATUS_BAD:
str = "Bad";
break;
- case GMIME_SIGNER_STATUS_ERROR:
+ case GMIME_SIGNATURE_STATUS_ERROR:
str = "Error";
break;
default:
@@ -191,10 +192,7 @@ verify_foreach_callback (GMimeObject *parent, GMimeObject *part, gpointer user_d
break;
}
- printf ("PGP signature is %s:\n%s\n", str,
- g_mime_signature_validity_get_details (validity));
-
- g_mime_signature_validity_free (validity);
+ g_object_unref (signatures);
}
}
}
diff --git a/gmime/gmime-certificate.c b/gmime/gmime-certificate.c
index 603489e..05a3c7a 100644
--- a/gmime/gmime-certificate.c
+++ b/gmime/gmime-certificate.c
@@ -784,7 +784,7 @@ g_mime_certificate_list_index_of (GMimeCertificateList *list, GMimeCertificate *
/**
- * g_mime_certificate_list_get_cert:
+ * g_mime_certificate_list_get_certificate:
* @list: a #GMimeCertificateList
* @index: index of #GMimeCertificate to get
*
@@ -794,7 +794,7 @@ g_mime_certificate_list_index_of (GMimeCertificateList *list, GMimeCertificate *
* the index is out of range.
**/
GMimeCertificate *
-g_mime_certificate_list_get_cert (GMimeCertificateList *list, int index)
+g_mime_certificate_list_get_certificate (GMimeCertificateList *list, int index)
{
g_return_val_if_fail (GMIME_IS_CERTIFICATE_LIST (list), NULL);
g_return_val_if_fail (index >= 0, NULL);
@@ -807,7 +807,7 @@ g_mime_certificate_list_get_cert (GMimeCertificateList *list, int index)
/**
- * g_mime_certificate_list_set_cert:
+ * g_mime_certificate_list_set_certificate:
* @list: a #GMimeCertificateList
* @index: index of #GMimeCertificate to set
* @cert: a #GMimeCertificate
@@ -815,7 +815,7 @@ g_mime_certificate_list_get_cert (GMimeCertificateList *list, int index)
* Sets the #GMimeCertificate at the specified index to @cert.
**/
void
-g_mime_certificate_list_set_cert (GMimeCertificateList *list, int index, GMimeCertificate *cert)
+g_mime_certificate_list_set_certificate (GMimeCertificateList *list, int index, GMimeCertificate *cert)
{
GMimeCertificate *old;
diff --git a/gmime/gmime-certificate.h b/gmime/gmime-certificate.h
index efd5f3e..582216e 100644
--- a/gmime/gmime-certificate.h
+++ b/gmime/gmime-certificate.h
@@ -126,8 +126,10 @@ typedef enum {
/**
* GMimeCertificate:
+ * @parent_object: parent #GObject
* @pubkey_algo: The public-key algorithm used by the certificate, if known.
* @digest_algo: The digest algorithm used by the certificate, if known.
+ * @trust: The level of trust assigned to this certificate.
* @issuer_serial: The issuer of the certificate, if known.
* @issuer_name: The issuer of the certificate, if known.
* @fingerprint: A hex string representing the certificate's fingerprint.
@@ -233,8 +235,8 @@ gboolean g_mime_certificate_list_remove_at (GMimeCertificateList *list, int inde
gboolean g_mime_certificate_list_contains (GMimeCertificateList *list, GMimeCertificate *cert);
int g_mime_certificate_list_index_of (GMimeCertificateList *list, GMimeCertificate *cert);
-GMimeCertificate *g_mime_certificate_list_get_cert (GMimeCertificateList *list, int index);
-void g_mime_certificate_list_set_cert (GMimeCertificateList *list, int index, GMimeCertificate *cert);
+GMimeCertificate *g_mime_certificate_list_get_certificate (GMimeCertificateList *list, int index);
+void g_mime_certificate_list_set_certificate (GMimeCertificateList *list, int index, GMimeCertificate *cert);
G_END_DECLS
diff --git a/gmime/gmime-crypto-context.c b/gmime/gmime-crypto-context.c
index 925b9bb..1c14d43 100644
--- a/gmime/gmime-crypto-context.c
+++ b/gmime/gmime-crypto-context.c
@@ -557,7 +557,7 @@ g_mime_decrypt_result_class_init (GMimeDecryptResultClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- parent_class = g_type_class_ref (G_TYPE_OBJECT);
+ result_parent_class = g_type_class_ref (G_TYPE_OBJECT);
object_class->finalize = g_mime_decrypt_result_finalize;
}
diff --git a/gmime/gmime-crypto-context.h b/gmime/gmime-crypto-context.h
index 3fd5e04..eb88f4f 100644
--- a/gmime/gmime-crypto-context.h
+++ b/gmime/gmime-crypto-context.h
@@ -191,6 +191,7 @@ typedef enum {
/**
* GMimeDecryptResult:
+ * @parent_object: parent #GObject
* @recipients: A #GMimeCertificateList
* @signatures: A #GMimeSignatureList if signed or %NULL otherwise.
* @cipher: The cipher algorithm used to encrypt the stream.
diff --git a/gmime/gmime-gpg-context.c b/gmime/gmime-gpg-context.c
index 4d7cb47..cf6fdc0 100644
--- a/gmime/gmime-gpg-context.c
+++ b/gmime/gmime-gpg-context.c
@@ -1855,7 +1855,19 @@ gpg_verify (GMimeCryptoContext *context, GMimeDigestAlgo digest,
}
}
- valid = gpg_ctx_op_wait (gpg) == 0;
+ if (gpg_ctx_op_wait (gpg) != 0) {
+ const char *diagnostics;
+ int save;
+
+ save = errno;
+ diagnostics = gpg_ctx_get_diagnostics (gpg);
+ errno = save;
+
+ g_set_error_literal (err, GMIME_ERROR, errno, diagnostics);
+ gpg_ctx_free (gpg);
+
+ return NULL;
+ }
signatures = gpg->signatures;
gpg->signatures = NULL;
diff --git a/gmime/gmime-signature.c b/gmime/gmime-signature.c
index f26c935..9feba8b 100644
--- a/gmime/gmime-signature.c
+++ b/gmime/gmime-signature.c
@@ -152,7 +152,7 @@ g_mime_signature_get_status (GMimeSignature *sig)
/**
* g_mime_signature_set_errors:
* @sig: a #GMimeSignature
- * @error: a #GMimeSignatureError
+ * @errors: a #GMimeSignatureError
*
* Set the errors on the signature.
**/
diff --git a/gmime/gmime-signature.h b/gmime/gmime-signature.h
index 2baf9c1..0369a33 100644
--- a/gmime/gmime-signature.h
+++ b/gmime/gmime-signature.h
@@ -86,6 +86,7 @@ typedef enum {
/**
* GMimeSignature:
+ * @parent_object: parent #GObject
* @status: A #GMimeSignatureStatus.
* @errors: A bitfield of #GMimeSignatureError values.
* @cert: The #GMimeCertificate used in the signature.
diff --git a/mono/CertificateCollection.custom b/mono/CertificateCollection.custom
new file mode 100644
index 0000000..a7ab8b7
--- /dev/null
+++ b/mono/CertificateCollection.custom
@@ -0,0 +1,264 @@
+#region Native Methods
+ [DllImport("gmime")]
+ static extern int g_mime_certificate_list_length (IntPtr list);
+
+ [DllImport("gmime")]
+ static extern void g_mime_certificate_list_clear (IntPtr list);
+
+ [DllImport("gmime")]
+ static extern int g_mime_certificate_list_add (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern void g_mime_certificate_list_insert (IntPtr list, int index, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern bool g_mime_certificate_list_remove (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern bool g_mime_certificate_list_remove_at (IntPtr list, int index);
+
+ [DllImport("gmime")]
+ static extern bool g_mime_certificate_list_contains (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern int g_mime_certificate_list_index_of (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern IntPtr g_mime_certificate_list_get_certificate (IntPtr list, int index);
+
+ [DllImport("gmime")]
+ static extern void g_mime_certificate_list_set_certificate (IntPtr list, int index, IntPtr ia);
+#endregion
+
+ Exception CannotAdd (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot add objects of type '{0}' to a CertificateCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ Exception CannotInsert (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot insert objects of type '{0}' into a CertificateCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ Exception CannotRemove (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot remove objects of type '{0}' from a CertificateCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ Exception CannotSet (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot set objects of type '{0}' on an CertificateCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ public int Count {
+ get { return g_mime_certificate_list_length (Handle); }
+ }
+
+ public bool IsFixedSize {
+ get { return false; }
+ }
+
+ public bool IsReadOnly {
+ get { return false; }
+ }
+
+ public bool IsSynchronized {
+ get { return false; }
+ }
+
+ public object SyncRoot {
+ get { return this; }
+ }
+
+ public int Add (Certificate cert)
+ {
+ if (cert == null)
+ throw CannotAdd (cert);
+
+ return g_mime_certificate_list_add (Handle, cert.Handle);
+ }
+
+ int IList.Add (object value)
+ {
+ Certificate cert = value as Certificate;
+
+ if (cert == null)
+ throw CannotAdd (value);
+
+ return Add (cert);
+ }
+
+ public void Clear ()
+ {
+ g_mime_certificate_list_clear (Handle);
+ }
+
+ public bool Contains (Certificate cert)
+ {
+ if (cert == null)
+ return false;
+
+ return g_mime_certificate_list_contains (Handle, cert.Handle);
+ }
+
+ bool IList.Contains (object value)
+ {
+ return Contains (value as Certificate);
+ }
+
+ public void CopyTo (Array array, int index)
+ {
+ if (array == null)
+ throw new ArgumentNullException ("array");
+
+ if (index < 0)
+ throw new ArgumentOutOfRangeException ("index");
+
+ int n = Count;
+
+ for (int i = 0; i < n; i++)
+ array.SetValue (((IList) this)[i], index + i);
+ }
+
+ public IEnumerator GetEnumerator ()
+ {
+ return new CertificateCollectionIterator (this);
+ }
+
+ public int IndexOf (Certificate cert)
+ {
+ if (cert == null)
+ return -1;
+
+ return g_mime_certificate_list_index_of (Handle, cert.Handle);
+ }
+
+ int IList.IndexOf (object value)
+ {
+ return IndexOf (value as Certificate);
+ }
+
+ public void Insert (int index, Certificate cert)
+ {
+ if (cert == null)
+ throw CannotInsert (cert);
+
+ if (index < 0)
+ throw new ArgumentOutOfRangeException ("index");
+
+ g_mime_certificate_list_insert (Handle, index, cert.Handle);
+ }
+
+ void IList.Insert (int index, object value)
+ {
+ Certificate cert = value as Certificate;
+
+ if (cert == null)
+ throw CannotInsert (value);
+
+ Insert (index, cert);
+ }
+
+ public void Remove (Certificate cert)
+ {
+ if (cert == null)
+ throw CannotRemove (cert);
+
+ g_mime_certificate_list_remove (Handle, cert.Handle);
+ }
+
+ void IList.Remove (object value)
+ {
+ Certificate cert = value as Certificate;
+
+ if (cert == null)
+ throw CannotRemove (value);
+
+ Remove (cert);
+ }
+
+ public void RemoveAt (int index)
+ {
+ if (index < 0 || index >= Count)
+ throw new ArgumentOutOfRangeException ("index");
+
+ g_mime_certificate_list_remove_at (Handle, index);
+ }
+
+ public Certificate this[int index] {
+ get {
+ IntPtr raw = g_mime_certificate_list_get_certificate (Handle, index);
+
+ if (raw == IntPtr.Zero)
+ return null;
+
+ return GLib.Object.GetObject (raw) as Certificate;
+ }
+
+ set {
+ if (value == null)
+ throw CannotSet (value);
+
+ g_mime_certificate_list_set_certificate (Handle, index, value.Handle);
+ }
+ }
+
+ object IList.this[int index] {
+ get {
+ return this[index];
+ }
+
+ set {
+ this[index] = value as Certificate;
+ }
+ }
+
+ internal class CertificateCollectionIterator : IEnumerator {
+ CertificateCollection list;
+ int index = -1;
+
+ public CertificateCollectionIterator (CertificateCollection list)
+ {
+ this.list = list;
+ }
+
+ public object Current {
+ get { return list[index]; }
+ }
+
+ public void Reset ()
+ {
+ index = -1;
+ }
+
+ public bool MoveNext ()
+ {
+ index++;
+
+ return index < list.Count;
+ }
+ }
diff --git a/mono/GMime.metadata b/mono/GMime.metadata
index 3ec91e5..40e3226 100644
--- a/mono/GMime.metadata
+++ b/mono/GMime.metadata
@@ -46,22 +46,62 @@
<remove-node path="/api/namespace/object[ cname='GMimeContentType']/field[ cname='params']"/>
<remove-node path="/api/namespace/object[ cname='GMimeContentType']/field[ cname='subtype']"/>
<remove-node path="/api/namespace/object[ cname='GMimeContentType']/field[ cname='type']"/>
-
+
+ <!-- Certificate -->
+ <attr path="/api/namespace/object[ cname='GMimeCertificate']/method[ name='GetCreated']" name="name">GetCreationDate</attr>
+ <attr path="/api/namespace/object[ cname='GMimeCertificate']/method[ name='SetCreated']" name="name">SetCreationDate</attr>
+ <attr path="/api/namespace/object[ cname='GMimeCertificate']/method[ name='GetExpires']" name="name">GetExpirationDate</attr>
+ <attr path="/api/namespace/object[ cname='GMimeCertificate']/method[ name='SetExpires']" name="name">SetExpirationDate</attr>
+
+ <!-- CertificateList -->
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/field[ cname='array']"/>
+ <attr path="/api/namespace/object[ name='CertificateList']" name="name">CertificateCollection</attr>
+ <!-- We're going to implement the IList interface -->
+ <add-node path="/api/namespace/object[ cname='GMimeCertificateList']">
+ <implements>
+ <interface name="IList"/>
+ </implements>
+ </add-node>
+ <!-- Remove methods we're going to implement manually in GMimeCertificateList.custom -->
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='Add']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='Clear']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='Contains']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='IndexOf']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='Insert']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='Length']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='Remove']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='RemoveAt']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='GetCertificate']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeCertificateList']/method[ name='SetCertificate']"/>
+
+ <!-- Signature -->
+ <attr path="/api/namespace/object[ cname='GMimeSignature']/method[ name='GetCreated']" name="name">GetCreationDate</attr>
+ <attr path="/api/namespace/object[ cname='GMimeSignature']/method[ name='SetCreated']" name="name">SetCreationDate</attr>
+ <attr path="/api/namespace/object[ cname='GMimeSignature']/method[ name='GetExpires']" name="name">GetExpirationDate</attr>
+ <attr path="/api/namespace/object[ cname='GMimeSignature']/method[ name='SetExpires']" name="name">SetExpirationDate</attr>
+
+ <!-- SignatureList -->
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/field[ cname='array']"/>
+ <attr path="/api/namespace/object[ name='SignatureList']" name="name">SignatureCollection</attr>
+ <!-- We're going to implement the IList interface -->
+ <add-node path="/api/namespace/object[ cname='GMimeSignatureList']">
+ <implements>
+ <interface name="IList"/>
+ </implements>
+ </add-node>
+ <!-- Remove methods we're going to implement manually in GMimeSignatureList.custom -->
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='Add']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='Clear']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='Contains']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='IndexOf']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='Insert']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='Length']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='Remove']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='RemoveAt']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='GetSignature']"/>
+ <remove-node path="/api/namespace/object[ cname='GMimeSignatureList']/method[ name='SetSignature']"/>
+
<!-- CryptoContext -->
- <remove-node path="/api/namespace/struct[ cname='GMimeDecryptionResult']/method[ name='GetRecipients']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeDecryptionResult']/method[ name='AddRecipient']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeDecryptionResult']/field[ cname='recipients']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSignatureValidity']/method[ name='GetSigners']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSignatureValidity']/method[ name='AddSigner']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSignatureValidity']/field[ cname='signers']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeCryptoRecipient']/field[ cname='keyid']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeCryptoRecipient']/field[ cname='next']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeCryptoRecipient']/method[ name='Next']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSigner']/field[ cname='sig_ver']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSigner']/field[ cname='unused']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSigner']/field[ cname='keyid']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSigner']/field[ cname='next']"/>
- <remove-node path="/api/namespace/struct[ cname='GMimeSigner']/method[ name='Next']"/>
<!-- DataWrapper -->
<attr path="/api/namespace/object[ cname='GMimeDataWrapper']/method[ name='GetStream']" name="name">GetGMimeStream</attr>
diff --git a/mono/Makefile.am b/mono/Makefile.am
index c2c4077..15c8bff 100644
--- a/mono/Makefile.am
+++ b/mono/Makefile.am
@@ -16,17 +16,14 @@ pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = $(PACKAGE_SHARP).pc
sources = \
- CryptoRecipientCollection.cs \
- SignerCollection.cs \
StreamWrapper.cs
build_sources = \
- $(srcdir)/CryptoRecipientCollection.cs \
- $(srcdir)/SignerCollection.cs \
$(srcdir)/StreamWrapper.cs \
AssemblyInfo.cs
customs = \
+ CertificateCollection.custom \
DataWrapper.custom \
Global.custom \
HeaderList.custom \
@@ -35,10 +32,11 @@ customs = \
Message.custom \
Multipart.custom \
Object.custom \
- SignatureValididty.custom \
+ SignatureCollection.custom \
Stream.custom
build_customs = \
+ $(srcdir)/CertificateCollection.custom \
$(srcdir)/DataWrapper.custom \
$(srcdir)/Global.custom \
$(srcdir)/HeaderList.custom \
@@ -47,7 +45,7 @@ build_customs = \
$(srcdir)/Message.custom \
$(srcdir)/Multipart.custom \
$(srcdir)/Object.custom \
- $(srcdir)/SignatureValidity.custom \
+ $(srcdir)/SignatureCollection.custom \
$(srcdir)/Stream.custom
EXTRA_DIST = \
diff --git a/mono/SignatureCollection.custom b/mono/SignatureCollection.custom
new file mode 100644
index 0000000..a5a95e4
--- /dev/null
+++ b/mono/SignatureCollection.custom
@@ -0,0 +1,264 @@
+#region Native Methods
+ [DllImport("gmime")]
+ static extern int g_mime_signature_list_length (IntPtr list);
+
+ [DllImport("gmime")]
+ static extern void g_mime_signature_list_clear (IntPtr list);
+
+ [DllImport("gmime")]
+ static extern int g_mime_signature_list_add (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern void g_mime_signature_list_insert (IntPtr list, int index, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern bool g_mime_signature_list_remove (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern bool g_mime_signature_list_remove_at (IntPtr list, int index);
+
+ [DllImport("gmime")]
+ static extern bool g_mime_signature_list_contains (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern int g_mime_signature_list_index_of (IntPtr list, IntPtr ia);
+
+ [DllImport("gmime")]
+ static extern IntPtr g_mime_signature_list_get_signature (IntPtr list, int index);
+
+ [DllImport("gmime")]
+ static extern void g_mime_signature_list_set_signature (IntPtr list, int index, IntPtr ia);
+#endregion
+
+ Exception CannotAdd (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot add objects of type '{0}' to a SignatureCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ Exception CannotInsert (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot insert objects of type '{0}' into a SignatureCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ Exception CannotRemove (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot remove objects of type '{0}' from a SignatureCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ Exception CannotSet (object value)
+ {
+ if (value == null)
+ return new ArgumentNullException ("value");
+
+ string message = String.Format ("Cannot set objects of type '{0}' on an SignatureCollection.",
+ value.GetType ().ToString ());
+
+ return new InvalidOperationException (message);
+ }
+
+ public int Count {
+ get { return g_mime_signature_list_length (Handle); }
+ }
+
+ public bool IsFixedSize {
+ get { return false; }
+ }
+
+ public bool IsReadOnly {
+ get { return false; }
+ }
+
+ public bool IsSynchronized {
+ get { return false; }
+ }
+
+ public object SyncRoot {
+ get { return this; }
+ }
+
+ public int Add (Signature signature)
+ {
+ if (signature == null)
+ throw CannotAdd (signature);
+
+ return g_mime_signature_list_add (Handle, signature.Handle);
+ }
+
+ int IList.Add (object value)
+ {
+ Signature signature = value as Signature;
+
+ if (signature == null)
+ throw CannotAdd (value);
+
+ return Add (signature);
+ }
+
+ public void Clear ()
+ {
+ g_mime_signature_list_clear (Handle);
+ }
+
+ public bool Contains (Signature signature)
+ {
+ if (signature == null)
+ return false;
+
+ return g_mime_signature_list_contains (Handle, signature.Handle);
+ }
+
+ bool IList.Contains (object value)
+ {
+ return Contains (value as Signature);
+ }
+
+ public void CopyTo (Array array, int index)
+ {
+ if (array == null)
+ throw new ArgumentNullException ("array");
+
+ if (index < 0)
+ throw new ArgumentOutOfRangeException ("index");
+
+ int n = Count;
+
+ for (int i = 0; i < n; i++)
+ array.SetValue (((IList) this)[i], index + i);
+ }
+
+ public IEnumerator GetEnumerator ()
+ {
+ return new SignatureCollectionIterator (this);
+ }
+
+ public int IndexOf (Signature signature)
+ {
+ if (signature == null)
+ return -1;
+
+ return g_mime_signature_list_index_of (Handle, signature.Handle);
+ }
+
+ int IList.IndexOf (object value)
+ {
+ return IndexOf (value as Signature);
+ }
+
+ public void Insert (int index, Signature signature)
+ {
+ if (signature == null)
+ throw CannotInsert (signature);
+
+ if (index < 0)
+ throw new ArgumentOutOfRangeException ("index");
+
+ g_mime_signature_list_insert (Handle, index, signature.Handle);
+ }
+
+ void IList.Insert (int index, object value)
+ {
+ Signature signature = value as Signature;
+
+ if (signature == null)
+ throw CannotInsert (value);
+
+ Insert (index, signature);
+ }
+
+ public void Remove (Signature signature)
+ {
+ if (signature == null)
+ throw CannotRemove (signature);
+
+ g_mime_signature_list_remove (Handle, signature.Handle);
+ }
+
+ void IList.Remove (object value)
+ {
+ Signature signature = value as Signature;
+
+ if (signature == null)
+ throw CannotRemove (value);
+
+ Remove (signature);
+ }
+
+ public void RemoveAt (int index)
+ {
+ if (index < 0 || index >= Count)
+ throw new ArgumentOutOfRangeException ("index");
+
+ g_mime_signature_list_remove_at (Handle, index);
+ }
+
+ public Signature this[int index] {
+ get {
+ IntPtr raw = g_mime_signature_list_get_signature (Handle, index);
+
+ if (raw == IntPtr.Zero)
+ return null;
+
+ return GLib.Object.GetObject (raw) as Signature;
+ }
+
+ set {
+ if (value == null)
+ throw CannotSet (value);
+
+ g_mime_signature_list_set_signature (Handle, index, value.Handle);
+ }
+ }
+
+ object IList.this[int index] {
+ get {
+ return this[index];
+ }
+
+ set {
+ this[index] = value as Signature;
+ }
+ }
+
+ internal class SignatureCollectionIterator : IEnumerator {
+ SignatureCollection list;
+ int index = -1;
+
+ public SignatureCollectionIterator (SignatureCollection list)
+ {
+ this.list = list;
+ }
+
+ public object Current {
+ get { return list[index]; }
+ }
+
+ public void Reset ()
+ {
+ index = -1;
+ }
+
+ public bool MoveNext ()
+ {
+ index++;
+
+ return index < list.Count;
+ }
+ }
diff --git a/mono/gmime-api.raw b/mono/gmime-api.raw
index 97055f3..b39b770 100644
--- a/mono/gmime-api.raw
+++ b/mono/gmime-api.raw
@@ -7,6 +7,28 @@
-->
<namespace name="GMime" library="gmime">
+ <enum name="CertificateTrust" cname="GMimeCertificateTrust" type="enum">
+ <member cname="GMIME_CERTIFICATE_TRUST_NONE" name="None" />
+ <member cname="GMIME_CERTIFICATE_TRUST_NEVER" name="Never" />
+ <member cname="GMIME_CERTIFICATE_TRUST_UNDEFINED" name="Undefined" />
+ <member cname="GMIME_CERTIFICATE_TRUST_MARGINAL" name="Marginal" />
+ <member cname="GMIME_CERTIFICATE_TRUST_FULLY" name="Fully" />
+ <member cname="GMIME_CERTIFICATE_TRUST_ULTIMATE" name="Ultimate" />
+ </enum>
+ <enum name="CipherAlgo" cname="GMimeCipherAlgo" type="enum">
+ <member cname="GMIME_CIPHER_ALGO_DEFAULT" name="Default" />
+ <member cname="GMIME_CIPHER_ALGO_IDEA" name="Idea" value="1" />
+ <member cname="GMIME_CIPHER_ALGO_3DES" name="ThreeDes" value="2" />
+ <member cname="GMIME_CIPHER_ALGO_CAST5" name="Cast5" value="3" />
+ <member cname="GMIME_CIPHER_ALGO_BLOWFISH" name="Blowfish" value="4" />
+ <member cname="GMIME_CIPHER_ALGO_AES" name="Aes" value="7" />
+ <member cname="GMIME_CIPHER_ALGO_AES192" name="Aes192" value="8" />
+ <member cname="GMIME_CIPHER_ALGO_AES256" name="Aes256" value="9" />
+ <member cname="GMIME_CIPHER_ALGO_TWOFISH" name="Twofish" value="10" />
+ <member cname="GMIME_CIPHER_ALGO_CAMELLIA128" name="Camellia128" value="11" />
+ <member cname="GMIME_CIPHER_ALGO_CAMELLIA196" name="Camellia196" value="12" />
+ <member cname="GMIME_CIPHER_ALGO_CAMELLIA256" name="Camellia256" value="13" />
+ </enum>
<enum name="ContentEncoding" cname="GMimeContentEncoding" type="enum">
<member cname="GMIME_CONTENT_ENCODING_DEFAULT" name="Default" />
<member cname="GMIME_CONTENT_ENCODING_7BIT" name="7Bit" />
@@ -16,42 +38,19 @@
<member cname="GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE" name="Quotedprintable" />
<member cname="GMIME_CONTENT_ENCODING_UUENCODE" name="Uuencode" />
</enum>
- <enum name="CryptoCipherAlgo" cname="GMimeCryptoCipherAlgo" type="enum">
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_DEFAULT" name="Default" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_IDEA" name="Idea" value="1" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_3DES" name="ThreeDes" value="2" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_CAST5" name="Cast5" value="3" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_BLOWFISH" name="Blowfish" value="4" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_AES" name="Aes" value="7" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_AES192" name="Aes192" value="8" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_AES256" name="Aes256" value="9" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_TWOFISH" name="Twofish" value="10" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_CAMELLIA128" name="Camellia128" value="11" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_CAMELLIA196" name="Camellia196" value="12" />
- <member cname="GMIME_CRYPTO_CIPHER_ALGO_CAMELLIA256" name="Camellia256" value="13" />
- </enum>
- <enum name="CryptoHash" cname="GMimeCryptoHash" type="enum">
- <member cname="GMIME_CRYPTO_HASH_DEFAULT" name="Default" />
- <member cname="GMIME_CRYPTO_HASH_MD5" name="Md5" value="1" />
- <member cname="GMIME_CRYPTO_HASH_SHA1" name="Sha1" value="2" />
- <member cname="GMIME_CRYPTO_HASH_RIPEMD160" name="Ripemd160" value="3" />
- <member cname="GMIME_CRYPTO_HASH_MD2" name="Md2" value="5" />
- <member cname="GMIME_CRYPTO_HASH_TIGER192" name="Tiger192" value="6" />
- <member cname="GMIME_CRYPTO_HASH_HAVAL5160" name="Haval5160" value="7" />
- <member cname="GMIME_CRYPTO_HASH_SHA256" name="Sha256" value="8" />
- <member cname="GMIME_CRYPTO_HASH_SHA384" name="Sha384" value="9" />
- <member cname="GMIME_CRYPTO_HASH_SHA512" name="Sha512" value="10" />
- <member cname="GMIME_CRYPTO_HASH_SHA224" name="Sha224" value="11" />
- <member cname="GMIME_CRYPTO_HASH_MD4" name="Md4" value="301" />
- </enum>
- <enum name="CryptoPubKeyAlgo" cname="GMimeCryptoPubKeyAlgo" type="enum">
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_DEFAULT" name="Default" />
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_RSA" name="Rsa" value="1" />
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_RSA_E" name="RsaE" value="2" />
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_RSA_S" name="RsaS" value="3" />
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_ELG_E" name="ElgE" value="16" />
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_DSA" name="Dsa" value="17" />
- <member cname="GMIME_CRYPTO_PUBKEY_ALGO_ELG" name="Elg" value="20" />
+ <enum name="DigestAlgo" cname="GMimeDigestAlgo" type="enum">
+ <member cname="GMIME_DIGEST_ALGO_DEFAULT" name="Default" />
+ <member cname="GMIME_DIGEST_ALGO_MD5" name="Md5" value="1" />
+ <member cname="GMIME_DIGEST_ALGO_SHA1" name="Sha1" value="2" />
+ <member cname="GMIME_DIGEST_ALGO_RIPEMD160" name="Ripemd160" value="3" />
+ <member cname="GMIME_DIGEST_ALGO_MD2" name="Md2" value="5" />
+ <member cname="GMIME_DIGEST_ALGO_TIGER192" name="Tiger192" value="6" />
+ <member cname="GMIME_DIGEST_ALGO_HAVAL5160" name="Haval5160" value="7" />
+ <member cname="GMIME_DIGEST_ALGO_SHA256" name="Sha256" value="8" />
+ <member cname="GMIME_DIGEST_ALGO_SHA384" name="Sha384" value="9" />
+ <member cname="GMIME_DIGEST_ALGO_SHA512" name="Sha512" value="10" />
+ <member cname="GMIME_DIGEST_ALGO_SHA224" name="Sha224" value="11" />
+ <member cname="GMIME_DIGEST_ALGO_MD4" name="Md4" value="301" />
</enum>
<enum name="EncodingConstraint" cname="GMimeEncodingConstraint" type="enum">
<member cname="GMIME_ENCODING_CONSTRAINT_7BIT" name="7Bit" />
@@ -71,6 +70,15 @@
<member cname="GMIME_FILTER_GZIP_MODE_ZIP" name="Zip" />
<member cname="GMIME_FILTER_GZIP_MODE_UNZIP" name="Unzip" />
</enum>
+ <enum name="PubKeyAlgo" cname="GMimePubKeyAlgo" type="enum">
+ <member cname="GMIME_PUBKEY_ALGO_DEFAULT" name="Default" />
+ <member cname="GMIME_PUBKEY_ALGO_RSA" name="Rsa" value="1" />
+ <member cname="GMIME_PUBKEY_ALGO_RSA_E" name="RsaE" value="2" />
+ <member cname="GMIME_PUBKEY_ALGO_RSA_S" name="RsaS" value="3" />
+ <member cname="GMIME_PUBKEY_ALGO_ELG_E" name="ElgE" value="16" />
+ <member cname="GMIME_PUBKEY_ALGO_DSA" name="Dsa" value="17" />
+ <member cname="GMIME_PUBKEY_ALGO_ELG" name="Elg" value="20" />
+ </enum>
<enum name="RecipientType" cname="GMimeRecipientType" type="enum">
<member cname="GMIME_RECIPIENT_TYPE_TO" name="To" />
<member cname="GMIME_RECIPIENT_TYPE_CC" name="Cc" />
@@ -81,26 +89,18 @@
<member cname="GMIME_STREAM_SEEK_CUR" name="Cur" value="SEEK_CUR" />
<member cname="GMIME_STREAM_SEEK_END" name="End" value="SEEK_END" />
</enum>
- <enum name="SignerError" cname="GMimeSignerError" type="flags">
- <member cname="GMIME_SIGNER_ERROR_NONE" name="None" />
- <member cname="GMIME_SIGNER_ERROR_EXPSIG" name="Expsig" value="1 << 0" />
- <member cname="GMIME_SIGNER_ERROR_NO_PUBKEY" name="NoPubkey" value="1 << 1" />
- <member cname="GMIME_SIGNER_ERROR_EXPKEYSIG" name="Expkeysig" value="1 << 2" />
- <member cname="GMIME_SIGNER_ERROR_REVKEYSIG" name="Revkeysig" value="1 << 3" />
- <member cname="GMIME_SIGNER_ERROR_UNSUPP_ALGO" name="UnsuppAlgo" value="1 << 4" />
- </enum>
- <enum name="SignerStatus" cname="GMimeSignerStatus" type="enum">
- <member cname="GMIME_SIGNER_STATUS_GOOD" name="Good" />
- <member cname="GMIME_SIGNER_STATUS_ERROR" name="Error" />
- <member cname="GMIME_SIGNER_STATUS_BAD" name="Bad" />
+ <enum name="SignatureError" cname="GMimeSignatureError" type="flags">
+ <member cname="GMIME_SIGNATURE_ERROR_NONE" name="None" />
+ <member cname="GMIME_SIGNATURE_ERROR_EXPSIG" name="Expsig" value="1 << 0" />
+ <member cname="GMIME_SIGNATURE_ERROR_NO_PUBKEY" name="NoPubkey" value="1 << 1" />
+ <member cname="GMIME_SIGNATURE_ERROR_EXPKEYSIG" name="Expkeysig" value="1 << 2" />
+ <member cname="GMIME_SIGNATURE_ERROR_REVKEYSIG" name="Revkeysig" value="1 << 3" />
+ <member cname="GMIME_SIGNATURE_ERROR_UNSUPP_ALGO" name="UnsuppAlgo" value="1 << 4" />
</enum>
- <enum name="SignerTrust" cname="GMimeSignerTrust" type="enum">
- <member cname="GMIME_SIGNER_TRUST_NONE" name="None" />
- <member cname="GMIME_SIGNER_TRUST_NEVER" name="Never" />
- <member cname="GMIME_SIGNER_TRUST_UNDEFINED" name="Undefined" />
- <member cname="GMIME_SIGNER_TRUST_MARGINAL" name="Marginal" />
- <member cname="GMIME_SIGNER_TRUST_FULLY" name="Fully" />
- <member cname="GMIME_SIGNER_TRUST_ULTIMATE" name="Ultimate" />
+ <enum name="SignatureStatus" cname="GMimeSignatureStatus" type="enum">
+ <member cname="GMIME_SIGNATURE_STATUS_GOOD" name="Good" />
+ <member cname="GMIME_SIGNATURE_STATUS_ERROR" name="Error" />
+ <member cname="GMIME_SIGNATURE_STATUS_BAD" name="Bad" />
</enum>
<enum name="StreamBufferMode" cname="GMimeStreamBufferMode" type="enum">
<member cname="GMIME_STREAM_BUFFER_CACHE_READ" name="CacheRead" />
@@ -160,13 +160,192 @@
<parameter type="GError**" name="err" />
</parameters>
</callback>
+ <object name="Certificate" cname="GMimeCertificate" parent="GObject">
+ <field name="PubkeyAlgo" cname="pubkey_algo" type="GMimePubKeyAlgo" />
+ <field name="DigestAlgo" cname="digest_algo" type="GMimeDigestAlgo" />
+ <field name="Trust" cname="trust" type="GMimeCertificateTrust" />
+ <field name="IssuerSerial" cname="issuer_serial" type="char*" />
+ <field name="IssuerName" cname="issuer_name" type="char*" />
+ <field name="Fingerprint" cname="fingerprint" type="char*" />
+ <field name="Created" cname="created" type="time_t" />
+ <field name="Expires" cname="expires" type="time_t" />
+ <field name="Keyid" cname="keyid" type="char*" />
+ <field name="Email" cname="email" type="char*" />
+ <field name="Name" cname="name" type="char*" />
+ <method name="GetCreated" cname="g_mime_certificate_get_created">
+ <return-type type="time_t" />
+ </method>
+ <method name="GetDigestAlgo" cname="g_mime_certificate_get_digest_algo">
+ <return-type type="GMimeDigestAlgo" />
+ </method>
+ <method name="GetEmail" cname="g_mime_certificate_get_email">
+ <return-type type="const-char*" />
+ </method>
+ <method name="GetExpires" cname="g_mime_certificate_get_expires">
+ <return-type type="time_t" />
+ </method>
+ <method name="GetFingerprint" cname="g_mime_certificate_get_fingerprint">
+ <return-type type="const-char*" />
+ </method>
+ <method name="GetIssuerName" cname="g_mime_certificate_get_issuer_name">
+ <return-type type="const-char*" />
+ </method>
+ <method name="GetIssuerSerial" cname="g_mime_certificate_get_issuer_serial">
+ <return-type type="const-char*" />
+ </method>
+ <method name="GetKeyId" cname="g_mime_certificate_get_key_id">
+ <return-type type="const-char*" />
+ </method>
+ <method name="GetName" cname="g_mime_certificate_get_name">
+ <return-type type="const-char*" />
+ </method>
+ <method name="GetPubkeyAlgo" cname="g_mime_certificate_get_pubkey_algo">
+ <return-type type="GMimePubKeyAlgo" />
+ </method>
+ <method name="GetTrust" cname="g_mime_certificate_get_trust">
+ <return-type type="GMimeCertificateTrust" />
+ </method>
+ <method name="GetType" cname="g_mime_certificate_get_type" shared="true">
+ <return-type type="GType" />
+ </method>
+ <constructor cname="g_mime_certificate_new" />
+ <method name="SetCreated" cname="g_mime_certificate_set_created">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="time_t" name="created" />
+ </parameters>
+ </method>
+ <method name="SetDigestAlgo" cname="g_mime_certificate_set_digest_algo">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeDigestAlgo" name="algo" />
+ </parameters>
+ </method>
+ <method name="SetEmail" cname="g_mime_certificate_set_email">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="const-char*" name="email" />
+ </parameters>
+ </method>
+ <method name="SetExpires" cname="g_mime_certificate_set_expires">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="time_t" name="expires" />
+ </parameters>
+ </method>
+ <method name="SetFingerprint" cname="g_mime_certificate_set_fingerprint">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="const-char*" name="fingerprint" />
+ </parameters>
+ </method>
+ <method name="SetIssuerName" cname="g_mime_certificate_set_issuer_name">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="const-char*" name="issuer_name" />
+ </parameters>
+ </method>
+ <method name="SetIssuerSerial" cname="g_mime_certificate_set_issuer_serial">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="const-char*" name="issuer_serial" />
+ </parameters>
+ </method>
+ <method name="SetKeyId" cname="g_mime_certificate_set_key_id">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="const-char*" name="key_id" />
+ </parameters>
+ </method>
+ <method name="SetName" cname="g_mime_certificate_set_name">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="const-char*" name="name" />
+ </parameters>
+ </method>
+ <method name="SetPubkeyAlgo" cname="g_mime_certificate_set_pubkey_algo">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimePubKeyAlgo" name="algo" />
+ </parameters>
+ </method>
+ <method name="SetTrust" cname="g_mime_certificate_set_trust">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeCertificateTrust" name="trust" />
+ </parameters>
+ </method>
+ </object>
+ <object name="CertificateList" cname="GMimeCertificateList" parent="GObject">
+ <field name="Array" cname="array" type="GPtrArray*" />
+ <method name="Add" cname="g_mime_certificate_list_add">
+ <return-type type="int" />
+ <parameters>
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ <method name="Clear" cname="g_mime_certificate_list_clear">
+ <return-type type="void" />
+ </method>
+ <method name="Contains" cname="g_mime_certificate_list_contains">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ <method name="GetCertificate" cname="g_mime_certificate_list_get_certificate">
+ <return-type type="GMimeCertificate*" />
+ <parameters>
+ <parameter type="int" name="index" />
+ </parameters>
+ </method>
+ <method name="GetType" cname="g_mime_certificate_list_get_type" shared="true">
+ <return-type type="GType" />
+ </method>
+ <method name="IndexOf" cname="g_mime_certificate_list_index_of">
+ <return-type type="int" />
+ <parameters>
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ <method name="Insert" cname="g_mime_certificate_list_insert">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="int" name="index" />
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ <method name="Length" cname="g_mime_certificate_list_length">
+ <return-type type="int" />
+ </method>
+ <constructor cname="g_mime_certificate_list_new" />
+ <method name="Remove" cname="g_mime_certificate_list_remove">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ <method name="RemoveAt" cname="g_mime_certificate_list_remove_at">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="int" name="index" />
+ </parameters>
+ </method>
+ <method name="SetCertificate" cname="g_mime_certificate_list_set_certificate">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="int" name="index" />
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ </object>
<object name="CryptoContext" cname="GMimeCryptoContext" parent="GObject">
<field name="RequestPasswd" cname="request_passwd" type="GMimePasswordRequestFunc" />
- <virtual_method name="HashId" cname="hash_id">
- <return-type type="GMimeCryptoHash" />
+ <virtual_method name="DigestId" cname="digest_id">
+ <return-type type="GMimeDigestAlgo" />
<parameters>
<parameter type="GMimeCryptoContext*" name="ctx" />
- <parameter type="const-char*" name="hash" />
+ <parameter type="const-char*" name="name" />
</parameters>
</virtual_method>
<virtual_method name="Sign" cname="sign">
@@ -174,17 +353,17 @@
<parameters>
<parameter type="GMimeCryptoContext*" name="ctx" />
<parameter type="const-char*" name="userid" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="ostream" />
<parameter type="GError**" name="err" />
</parameters>
</virtual_method>
<virtual_method name="Verify" cname="verify">
- <return-type type="GMimeSignatureValidity*" />
+ <return-type type="GMimeSignatureList*" />
<parameters>
<parameter type="GMimeCryptoContext*" name="ctx" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="sigstream" />
<parameter type="GError**" name="err" />
@@ -196,7 +375,7 @@
<parameter type="GMimeCryptoContext*" name="ctx" />
<parameter type="gboolean" name="sign" />
<parameter type="const-char*" name="userid" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GPtrArray*" name="recipients" />
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="ostream" />
@@ -204,7 +383,7 @@
</parameters>
</virtual_method>
<virtual_method name="Decrypt" cname="decrypt">
- <return-type type="GMimeDecryptionResult*" />
+ <return-type type="GMimeDecryptResult*" />
<parameters>
<parameter type="GMimeCryptoContext*" name="ctx" />
<parameter type="GMimeStream*" name="istream" />
@@ -230,19 +409,31 @@
</parameters>
</virtual_method>
<method name="Decrypt" cname="g_mime_crypto_context_decrypt">
- <return-type type="GMimeDecryptionResult*" />
+ <return-type type="GMimeDecryptResult*" />
<parameters>
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="ostream" />
<parameter type="GError**" name="err" />
</parameters>
</method>
+ <method name="DigestId" cname="g_mime_crypto_context_digest_id">
+ <return-type type="GMimeDigestAlgo" />
+ <parameters>
+ <parameter type="const-char*" name="name" />
+ </parameters>
+ </method>
+ <method name="DigestName" cname="g_mime_crypto_context_digest_name">
+ <return-type type="const-char*" />
+ <parameters>
+ <parameter type="GMimeDigestAlgo" name="digest" />
+ </parameters>
+ </method>
<method name="Encrypt" cname="g_mime_crypto_context_encrypt">
<return-type type="int" />
<parameters>
<parameter type="gboolean" name="sign" />
<parameter type="const-char*" name="userid" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GPtrArray*" name="recipients" />
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="ostream" />
@@ -269,18 +460,6 @@
<method name="GetType" cname="g_mime_crypto_context_get_type" shared="true">
<return-type type="GType" />
</method>
- <method name="HashId" cname="g_mime_crypto_context_hash_id">
- <return-type type="GMimeCryptoHash" />
- <parameters>
- <parameter type="const-char*" name="hash" />
- </parameters>
- </method>
- <method name="HashName" cname="g_mime_crypto_context_hash_name">
- <return-type type="const-char*" />
- <parameters>
- <parameter type="GMimeCryptoHash" name="hash" />
- </parameters>
- </method>
<method name="ImportKeys" cname="g_mime_crypto_context_import_keys">
<return-type type="int" />
<parameters>
@@ -298,16 +477,16 @@
<return-type type="int" />
<parameters>
<parameter type="const-char*" name="userid" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="ostream" />
<parameter type="GError**" name="err" />
</parameters>
</method>
<method name="Verify" cname="g_mime_crypto_context_verify">
- <return-type type="GMimeSignatureValidity*" />
+ <return-type type="GMimeSignatureList*" />
<parameters>
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GMimeStream*" name="istream" />
<parameter type="GMimeStream*" name="sigstream" />
<parameter type="GError**" name="err" />
@@ -359,6 +538,52 @@
</parameters>
</method>
</object>
+ <object name="DecryptResult" cname="GMimeDecryptResult" parent="GObject">
+ <field name="Recipients" cname="recipients" type="GMimeCertificateList*" />
+ <field name="Signatures" cname="signatures" type="GMimeSignatureList*" />
+ <field name="Cipher" cname="cipher" type="GMimeCipherAlgo" />
+ <field name="Mdc" cname="mdc" type="GMimeDigestAlgo" />
+ <method name="GetCipher" cname="g_mime_decrypt_result_get_cipher">
+ <return-type type="GMimeCipherAlgo" />
+ </method>
+ <method name="GetMdc" cname="g_mime_decrypt_result_get_mdc">
+ <return-type type="GMimeDigestAlgo" />
+ </method>
+ <method name="GetRecipients" cname="g_mime_decrypt_result_get_recipients">
+ <return-type type="GMimeCertificateList*" />
+ </method>
+ <method name="GetSignatures" cname="g_mime_decrypt_result_get_signatures">
+ <return-type type="GMimeSignatureList*" />
+ </method>
+ <method name="GetType" cname="g_mime_decrypt_result_get_type" shared="true">
+ <return-type type="GType" />
+ </method>
+ <constructor cname="g_mime_decrypt_result_new" />
+ <method name="SetCipher" cname="g_mime_decrypt_result_set_cipher">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeCipherAlgo" name="cipher" />
+ </parameters>
+ </method>
+ <method name="SetMdc" cname="g_mime_decrypt_result_set_mdc">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeDigestAlgo" name="mdc" />
+ </parameters>
+ </method>
+ <method name="SetRecipients" cname="g_mime_decrypt_result_set_recipients">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeCertificateList*" name="recipients" />
+ </parameters>
+ </method>
+ <method name="SetSignatures" cname="g_mime_decrypt_result_set_signatures">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeSignatureList*" name="signatures" />
+ </parameters>
+ </method>
+ </object>
<object name="Filter" cname="GMimeFilter" parent="GObject">
<field name="Priv" cname="priv" type="struct-_GMimeFilterPrivate*" />
<field name="Outreal" cname="outreal" type="char*" />
@@ -1035,7 +1260,7 @@
<return-type type="GMimeObject*" />
<parameters>
<parameter type="GMimeCryptoContext*" name="ctx" />
- <parameter type="GMimeDecryptionResult**" name="result" />
+ <parameter type="GMimeDecryptResult**" name="result" />
<parameter type="GError**" name="err" />
</parameters>
</method>
@@ -1046,7 +1271,7 @@
<parameter type="GMimeCryptoContext*" name="ctx" />
<parameter type="gboolean" name="sign" />
<parameter type="const-char*" name="userid" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GPtrArray*" name="recipients" />
<parameter type="GError**" name="err" />
</parameters>
@@ -1067,12 +1292,12 @@
<parameter type="GMimeObject*" name="content" />
<parameter type="GMimeCryptoContext*" name="ctx" />
<parameter type="const-char*" name="userid" />
- <parameter type="GMimeCryptoHash" name="hash" />
+ <parameter type="GMimeDigestAlgo" name="digest" />
<parameter type="GError**" name="err" />
</parameters>
</method>
<method name="Verify" cname="g_mime_multipart_signed_verify">
- <return-type type="GMimeSignatureValidity*" />
+ <return-type type="GMimeSignatureList*" />
<parameters>
<parameter type="GMimeCryptoContext*" name="ctx" />
<parameter type="GError**" name="err" />
@@ -1474,6 +1699,125 @@
</parameters>
</method>
</object>
+ <object name="Signature" cname="GMimeSignature" parent="GObject">
+ <field name="Status" cname="status" type="GMimeSignatureStatus" />
+ <field name="Errors" cname="errors" type="GMimeSignatureError" />
+ <field name="Cert" cname="cert" type="GMimeCertificate*" />
+ <field name="Created" cname="created" type="time_t" />
+ <field name="Expires" cname="expires" type="time_t" />
+ <method name="GetCertificate" cname="g_mime_signature_get_certificate">
+ <return-type type="GMimeCertificate*" />
+ </method>
+ <method name="GetCreated" cname="g_mime_signature_get_created">
+ <return-type type="time_t" />
+ </method>
+ <method name="GetErrors" cname="g_mime_signature_get_errors">
+ <return-type type="GMimeSignatureError" />
+ </method>
+ <method name="GetExpires" cname="g_mime_signature_get_expires">
+ <return-type type="time_t" />
+ </method>
+ <method name="GetStatus" cname="g_mime_signature_get_status">
+ <return-type type="GMimeSignatureStatus" />
+ </method>
+ <method name="GetType" cname="g_mime_signature_get_type" shared="true">
+ <return-type type="GType" />
+ </method>
+ <constructor cname="g_mime_signature_new" />
+ <method name="SetCertificate" cname="g_mime_signature_set_certificate">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeCertificate*" name="cert" />
+ </parameters>
+ </method>
+ <method name="SetCreated" cname="g_mime_signature_set_created">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="time_t" name="created" />
+ </parameters>
+ </method>
+ <method name="SetErrors" cname="g_mime_signature_set_errors">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeSignatureError" name="errors" />
+ </parameters>
+ </method>
+ <method name="SetExpires" cname="g_mime_signature_set_expires">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="time_t" name="expires" />
+ </parameters>
+ </method>
+ <method name="SetStatus" cname="g_mime_signature_set_status">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeSignatureStatus" name="status" />
+ </parameters>
+ </method>
+ </object>
+ <object name="SignatureList" cname="GMimeSignatureList" parent="GObject">
+ <field name="Array" cname="array" type="GPtrArray*" />
+ <method name="Add" cname="g_mime_signature_list_add">
+ <return-type type="int" />
+ <parameters>
+ <parameter type="GMimeSignature*" name="sig" />
+ </parameters>
+ </method>
+ <method name="Clear" cname="g_mime_signature_list_clear">
+ <return-type type="void" />
+ </method>
+ <method name="Contains" cname="g_mime_signature_list_contains">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="GMimeSignature*" name="sig" />
+ </parameters>
+ </method>
+ <method name="GetSignature" cname="g_mime_signature_list_get_signature">
+ <return-type type="GMimeSignature*" />
+ <parameters>
+ <parameter type="int" name="index" />
+ </parameters>
+ </method>
+ <method name="GetType" cname="g_mime_signature_list_get_type" shared="true">
+ <return-type type="GType" />
+ </method>
+ <method name="IndexOf" cname="g_mime_signature_list_index_of">
+ <return-type type="int" />
+ <parameters>
+ <parameter type="GMimeSignature*" name="sig" />
+ </parameters>
+ </method>
+ <method name="Insert" cname="g_mime_signature_list_insert">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="int" name="index" />
+ <parameter type="GMimeSignature*" name="sig" />
+ </parameters>
+ </method>
+ <method name="Length" cname="g_mime_signature_list_length">
+ <return-type type="int" />
+ </method>
+ <constructor cname="g_mime_signature_list_new" />
+ <method name="Remove" cname="g_mime_signature_list_remove">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="GMimeSignature*" name="sig" />
+ </parameters>
+ </method>
+ <method name="RemoveAt" cname="g_mime_signature_list_remove_at">
+ <return-type type="gboolean" />
+ <parameters>
+ <parameter type="int" name="index" />
+ </parameters>
+ </method>
+ <method name="SetSignature" cname="g_mime_signature_list_set_signature">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="int" name="index" />
+ <parameter type="GMimeSignature*" name="sig" />
+ </parameters>
+ </method>
+ </object>
<object name="Stream" cname="GMimeStream" parent="GObject">
<field name="SuperStream" cname="super_stream" type="GMimeStream*" />
<field name="Position" cname="position" type="gint64" />
@@ -2252,82 +2596,6 @@
</parameters>
</method>
</struct>
- <struct name="CryptoRecipient" cname="GMimeCryptoRecipient" opaque="true">
- <field name="Next" cname="next" type="GMimeCryptoRecipient*" access="public" writeable="true" />
- <field name="PubkeyAlgo" cname="pubkey_algo" type="GMimeCryptoPubKeyAlgo" access="public" writeable="true" />
- <field name="Keyid" cname="keyid" type="char*" access="public" writeable="true" />
- <method name="Free" cname="g_mime_crypto_recipient_free">
- <return-type type="void" />
- </method>
- <method name="GetKeyId" cname="g_mime_crypto_recipient_get_key_id">
- <return-type type="const-char*" />
- </method>
- <method name="GetPubkeyAlgo" cname="g_mime_crypto_recipient_get_pubkey_algo">
- <return-type type="GMimeCryptoPubKeyAlgo" />
- </method>
- <constructor cname="g_mime_crypto_recipient_new" />
- <method name="Next" cname="g_mime_crypto_recipient_next">
- <return-type type="const-GMimeCryptoRecipient*" />
- </method>
- <method name="SetKeyId" cname="g_mime_crypto_recipient_set_key_id">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="key_id" />
- </parameters>
- </method>
- <method name="SetPubkeyAlgo" cname="g_mime_crypto_recipient_set_pubkey_algo">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeCryptoPubKeyAlgo" name="pubkey_algo" />
- </parameters>
- </method>
- </struct>
- <struct name="DecryptionResult" cname="GMimeDecryptionResult" opaque="true">
- <field name="Validity" cname="validity" type="GMimeSignatureValidity*" access="public" writeable="true" />
- <field name="Recipients" cname="recipients" type="GMimeCryptoRecipient*" access="public" writeable="true" />
- <field name="Cipher" cname="cipher" type="GMimeCryptoCipherAlgo" access="public" writeable="true" />
- <field name="Mdc" cname="mdc" type="GMimeCryptoHash" access="public" writeable="true" />
- <method name="AddRecipient" cname="g_mime_decryption_result_add_recipient">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeCryptoRecipient*" name="recipient" />
- </parameters>
- </method>
- <method name="Free" cname="g_mime_decryption_result_free">
- <return-type type="void" />
- </method>
- <method name="GetCipher" cname="g_mime_decryption_result_get_cipher">
- <return-type type="GMimeCryptoCipherAlgo" />
- </method>
- <method name="GetMdc" cname="g_mime_decryption_result_get_mdc">
- <return-type type="GMimeCryptoHash" />
- </method>
- <method name="GetRecipients" cname="g_mime_decryption_result_get_recipients">
- <return-type type="const-GMimeCryptoRecipient*" />
- </method>
- <method name="GetValidity" cname="g_mime_decryption_result_get_validity">
- <return-type type="const-GMimeSignatureValidity*" />
- </method>
- <constructor cname="g_mime_decryption_result_new" />
- <method name="SetCipher" cname="g_mime_decryption_result_set_cipher">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeCryptoCipherAlgo" name="cipher" />
- </parameters>
- </method>
- <method name="SetMdc" cname="g_mime_decryption_result_set_mdc">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeCryptoHash" name="mdc" />
- </parameters>
- </method>
- <method name="SetValidity" cname="g_mime_decryption_result_set_validity">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeSignatureValidity*" name="validity" />
- </parameters>
- </method>
- </struct>
<struct name="Encoding" cname="GMimeEncoding" opaque="true">
<method name="Base64DecodeStep" cname="g_mime_encoding_base64_decode_step" shared="true">
<return-type type="size_t" />
@@ -2668,217 +2936,6 @@
<return-type type="const-GMimeReferences*" />
</method>
</struct>
- <struct name="SignatureValidity" cname="GMimeSignatureValidity" opaque="true">
- <field name="Signers" cname="signers" type="GMimeSigner*" access="public" writeable="true" />
- <field name="Details" cname="details" type="char*" access="public" writeable="true" />
- <method name="AddSigner" cname="g_mime_signature_validity_add_signer">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeSigner*" name="signer" />
- </parameters>
- </method>
- <method name="Free" cname="g_mime_signature_validity_free">
- <return-type type="void" />
- </method>
- <method name="GetDetails" cname="g_mime_signature_validity_get_details">
- <return-type type="const-char*" />
- </method>
- <method name="GetSigners" cname="g_mime_signature_validity_get_signers">
- <return-type type="const-GMimeSigner*" />
- </method>
- <constructor cname="g_mime_signature_validity_new" />
- <method name="SetDetails" cname="g_mime_signature_validity_set_details">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="details" />
- </parameters>
- </method>
- </struct>
- <struct name="Signer" cname="GMimeSigner" opaque="true">
- <field name="Next" cname="next" type="GMimeSigner*" access="public" writeable="true" />
- <field name="Status" cname="status" bits="2" type="unsigned int" access="public" writeable="true" />
- <field name="Errors" cname="errors" bits="6" type="unsigned int" access="public" writeable="true" />
- <field name="Trust" cname="trust" bits="3" type="unsigned int" access="public" writeable="true" />
- <field name="Unused" cname="unused" bits="5" type="unsigned int" access="public" writeable="true" />
- <field name="SigClass" cname="sig_class" bits="8" type="unsigned int" access="public" writeable="true" />
- <field name="SigVer" cname="sig_ver" bits="8" type="unsigned int" access="public" writeable="true" />
- <field name="PubkeyAlgo" cname="pubkey_algo" type="GMimeCryptoPubKeyAlgo" access="public" writeable="true" />
- <field name="HashAlgo" cname="hash_algo" type="GMimeCryptoHash" access="public" writeable="true" />
- <field name="IssuerSerial" cname="issuer_serial" type="char*" access="public" writeable="true" />
- <field name="IssuerName" cname="issuer_name" type="char*" access="public" writeable="true" />
- <field name="Fingerprint" cname="fingerprint" type="char*" access="public" writeable="true" />
- <field name="SigCreated" cname="sig_created" type="time_t" access="public" writeable="true" />
- <field name="SigExpires" cname="sig_expires" type="time_t" access="public" writeable="true" />
- <field name="KeyCreated" cname="key_created" type="time_t" access="public" writeable="true" />
- <field name="KeyExpires" cname="key_expires" type="time_t" access="public" writeable="true" />
- <field name="Keyid" cname="keyid" type="char*" access="public" writeable="true" />
- <field name="Email" cname="email" type="char*" access="public" writeable="true" />
- <field name="Name" cname="name" type="char*" access="public" writeable="true" />
- <method name="Free" cname="g_mime_signer_free">
- <return-type type="void" />
- </method>
- <method name="GetEmail" cname="g_mime_signer_get_email">
- <return-type type="const-char*" />
- </method>
- <method name="GetErrors" cname="g_mime_signer_get_errors">
- <return-type type="GMimeSignerError" />
- </method>
- <method name="GetFingerprint" cname="g_mime_signer_get_fingerprint">
- <return-type type="const-char*" />
- </method>
- <method name="GetHashAlgo" cname="g_mime_signer_get_hash_algo">
- <return-type type="GMimeCryptoHash" />
- </method>
- <method name="GetIssuerName" cname="g_mime_signer_get_issuer_name">
- <return-type type="const-char*" />
- </method>
- <method name="GetIssuerSerial" cname="g_mime_signer_get_issuer_serial">
- <return-type type="const-char*" />
- </method>
- <method name="GetKeyCreated" cname="g_mime_signer_get_key_created">
- <return-type type="time_t" />
- </method>
- <method name="GetKeyExpires" cname="g_mime_signer_get_key_expires">
- <return-type type="time_t" />
- </method>
- <method name="GetKeyId" cname="g_mime_signer_get_key_id">
- <return-type type="const-char*" />
- </method>
- <method name="GetName" cname="g_mime_signer_get_name">
- <return-type type="const-char*" />
- </method>
- <method name="GetPubkeyAlgo" cname="g_mime_signer_get_pubkey_algo">
- <return-type type="GMimeCryptoPubKeyAlgo" />
- </method>
- <method name="GetSigClass" cname="g_mime_signer_get_sig_class">
- <return-type type="int" />
- </method>
- <method name="GetSigCreated" cname="g_mime_signer_get_sig_created">
- <return-type type="time_t" />
- </method>
- <method name="GetSigExpires" cname="g_mime_signer_get_sig_expires">
- <return-type type="time_t" />
- </method>
- <method name="GetSigVersion" cname="g_mime_signer_get_sig_version">
- <return-type type="int" />
- </method>
- <method name="GetStatus" cname="g_mime_signer_get_status">
- <return-type type="GMimeSignerStatus" />
- </method>
- <method name="GetTrust" cname="g_mime_signer_get_trust">
- <return-type type="GMimeSignerTrust" />
- </method>
- <constructor cname="g_mime_signer_new">
- <parameters>
- <parameter type="GMimeSignerStatus" name="status" />
- </parameters>
- </constructor>
- <method name="Next" cname="g_mime_signer_next">
- <return-type type="const-GMimeSigner*" />
- </method>
- <method name="SetEmail" cname="g_mime_signer_set_email">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="email" />
- </parameters>
- </method>
- <method name="SetErrors" cname="g_mime_signer_set_errors">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeSignerError" name="error" />
- </parameters>
- </method>
- <method name="SetFingerprint" cname="g_mime_signer_set_fingerprint">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="fingerprint" />
- </parameters>
- </method>
- <method name="SetHashAlgo" cname="g_mime_signer_set_hash_algo">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeCryptoHash" name="hash" />
- </parameters>
- </method>
- <method name="SetIssuerName" cname="g_mime_signer_set_issuer_name">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="issuer_name" />
- </parameters>
- </method>
- <method name="SetIssuerSerial" cname="g_mime_signer_set_issuer_serial">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="issuer_serial" />
- </parameters>
- </method>
- <method name="SetKeyCreated" cname="g_mime_signer_set_key_created">
- <return-type type="void" />
- <parameters>
- <parameter type="time_t" name="created" />
- </parameters>
- </method>
- <method name="SetKeyExpires" cname="g_mime_signer_set_key_expires">
- <return-type type="void" />
- <parameters>
- <parameter type="time_t" name="expires" />
- </parameters>
- </method>
- <method name="SetKeyId" cname="g_mime_signer_set_key_id">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="key_id" />
- </parameters>
- </method>
- <method name="SetName" cname="g_mime_signer_set_name">
- <return-type type="void" />
- <parameters>
- <parameter type="const-char*" name="name" />
- </parameters>
- </method>
- <method name="SetPubkeyAlgo" cname="g_mime_signer_set_pubkey_algo">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeCryptoPubKeyAlgo" name="pubkey_algo" />
- </parameters>
- </method>
- <method name="SetSigClass" cname="g_mime_signer_set_sig_class">
- <return-type type="void" />
- <parameters>
- <parameter type="int" name="sig_class" />
- </parameters>
- </method>
- <method name="SetSigCreated" cname="g_mime_signer_set_sig_created">
- <return-type type="void" />
- <parameters>
- <parameter type="time_t" name="created" />
- </parameters>
- </method>
- <method name="SetSigExpires" cname="g_mime_signer_set_sig_expires">
- <return-type type="void" />
- <parameters>
- <parameter type="time_t" name="expires" />
- </parameters>
- </method>
- <method name="SetSigVersion" cname="g_mime_signer_set_sig_version">
- <return-type type="void" />
- <parameters>
- <parameter type="int" name="version" />
- </parameters>
- </method>
- <method name="SetStatus" cname="g_mime_signer_set_status">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeSignerStatus" name="status" />
- </parameters>
- </method>
- <method name="SetTrust" cname="g_mime_signer_set_trust">
- <return-type type="void" />
- <parameters>
- <parameter type="GMimeSignerTrust" name="trust" />
- </parameters>
- </method>
- </struct>
<struct name="StreamIOVector" cname="GMimeStreamIOVector">
<field name="Data" cname="data" type="void*" />
<field name="Len" cname="len" type="size_t" />
diff --git a/tests/test-pgp.c b/tests/test-pgp.c
index af8a416..106b3ea 100644
--- a/tests/test-pgp.c
+++ b/tests/test-pgp.c
@@ -46,18 +46,19 @@ request_passwd (GMimeCryptoContext *ctx, const char *user_id, const char *prompt
return TRUE;
}
-static GMimeSignerStatus
-get_sig_status (GMimeSigner *signers)
+static GMimeSignatureStatus
+get_sig_status (GMimeSignatureList *signatures)
{
- GMimeSignerStatus status = GMIME_SIGNER_STATUS_GOOD;
- GMimeSigner *signer = signers;
+ GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_GOOD;
+ GMimeSignature *sig;
+ int i;
- if (signers == NULL)
- return GMIME_SIGNER_STATUS_ERROR;
+ if (!signatures || signatures->array->len == 0)
+ return GMIME_SIGNATURE_STATUS_ERROR;
- while (signer != NULL) {
- status = MAX (status, signer->status);
- signer = signer->next;
+ for (i = 0; i < g_mime_signature_list_length (signatures); i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+ status = MAX (status, sig->status);
}
return status;
@@ -71,7 +72,7 @@ test_sign (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphert
int rv;
rv = g_mime_crypto_context_sign (ctx, "no user no domain",
- GMIME_CRYPTO_HASH_SHA256,
+ GMIME_DIGEST_ALGO_SHA256,
cleartext, ciphertext, &err);
if (rv == -1 || err != NULL) {
@@ -81,7 +82,7 @@ test_sign (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphert
}
v(fprintf (stderr, "signature (%s):\n%.*s\n",
- g_mime_crypto_context_hash_name (ctx, rv),
+ g_mime_crypto_context_digest_name (ctx, rv),
GMIME_STREAM_MEM (ciphertext)->buffer->len,
GMIME_STREAM_MEM (ciphertext)->buffer->data));
}
@@ -89,25 +90,25 @@ test_sign (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphert
static void
test_verify (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphertext)
{
- GMimeSignatureValidity *validity;
+ GMimeSignatureList *signatures;
GError *err = NULL;
Exception *ex;
- validity = g_mime_crypto_context_verify (ctx, GMIME_CRYPTO_HASH_DEFAULT,
- cleartext, ciphertext, &err);
+ signatures = g_mime_crypto_context_verify (ctx, GMIME_DIGEST_ALGO_DEFAULT,
+ cleartext, ciphertext, &err);
- if (validity == NULL) {
+ if (signatures == NULL) {
ex = exception_new ("%s", err->message);
g_error_free (err);
throw (ex);
}
- if (get_sig_status (validity->signers) != GMIME_SIGNER_STATUS_GOOD) {
- g_mime_signature_validity_free (validity);
+ if (get_sig_status (signatures) != GMIME_SIGNATURE_STATUS_GOOD) {
+ g_object_unref (signatures);
throw (exception_new ("signature BAD"));
}
- g_mime_signature_validity_free (validity);
+ g_object_unref (signatures);
}
static void
@@ -120,7 +121,7 @@ test_encrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GM
recipients = g_ptr_array_new ();
g_ptr_array_add (recipients, "no user no domain");
- g_mime_crypto_context_encrypt (ctx, sign, "no user no domain", GMIME_CRYPTO_HASH_SHA256,
+ g_mime_crypto_context_encrypt (ctx, sign, "no user no domain", GMIME_DIGEST_ALGO_SHA256,
recipients, cleartext, ciphertext, &err);
g_ptr_array_free (recipients, TRUE);
@@ -139,7 +140,7 @@ test_encrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GM
static void
test_decrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GMimeStream *ciphertext)
{
- GMimeDecryptionResult *result;
+ GMimeDecryptResult *result;
Exception *ex = NULL;
GMimeStream *stream;
GError *err = NULL;
@@ -155,14 +156,14 @@ test_decrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GM
}
if (sign) {
- if (!result->validity || get_sig_status (result->validity->signers) != GMIME_SIGNER_STATUS_GOOD)
+ if (!result->signatures || get_sig_status (result->signatures) != GMIME_SIGNATURE_STATUS_GOOD)
ex = exception_new ("expected GOOD signature");
} else {
- if (result->validity && result->validity->signers != NULL)
+ if (result->signatures != NULL)
ex = exception_new ("unexpected signature");
}
- g_mime_decryption_result_free (result);
+ g_object_unref (result);
if (ex != NULL) {
g_object_unref (stream);
diff --git a/tests/test-pgpmime.c b/tests/test-pgpmime.c
index b8bcf27..1faa592 100644
--- a/tests/test-pgpmime.c
+++ b/tests/test-pgpmime.c
@@ -47,36 +47,38 @@ request_passwd (GMimeCryptoContext *ctx, const char *user_id, const char *prompt
return TRUE;
}
-static GMimeSignerStatus
-get_sig_status (GMimeSigner *signers)
+static GMimeSignatureStatus
+get_sig_status (GMimeSignatureList *signatures)
{
- GMimeSignerStatus status = GMIME_SIGNER_STATUS_GOOD;
- GMimeSigner *signer = signers;
+ GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_GOOD;
+ GMimeSignature *sig;
+ int i;
- if (signers == NULL)
- return GMIME_SIGNER_STATUS_ERROR;
+ if (!signatures || signatures->array->len == 0)
+ return GMIME_SIGNATURE_STATUS_ERROR;
- while (signer != NULL) {
- status = MAX (status, signer->status);
- signer = signer->next;
+ for (i = 0; i < g_mime_signature_list_length (signatures); i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+ status = MAX (status, sig->status);
}
return status;
}
static void
-print_verify_results (const GMimeSignatureValidity *validity)
+print_verify_results (GMimeSignatureList *signatures)
{
- GMimeSigner *signer;
+ GMimeSignature *sig;
+ int count, i;
- switch (get_sig_status (validity->signers)) {
- case GMIME_SIGNER_STATUS_GOOD:
+ switch (get_sig_status (signatures)) {
+ case GMIME_SIGNATURE_STATUS_GOOD:
fputs ("GOOD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_BAD:
+ case GMIME_SIGNATURE_STATUS_BAD:
fputs ("BAD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_ERROR:
+ case GMIME_SIGNATURE_STATUS_ERROR:
fputs ("ERROR status\n", stdout);
break;
default:
@@ -84,75 +86,74 @@ print_verify_results (const GMimeSignatureValidity *validity)
break;
}
- fputs ("\nSigners:\n", stdout);
- signer = validity->signers;
- while (signer != NULL) {
- fprintf (stdout, "\tName: %s\n", signer->name ? signer->name : "(null)");
- fprintf (stdout, "\tKeyId: %s\n", signer->keyid ? signer->keyid : "(null)");
- fprintf (stdout, "\tFingerprint: %s\n", signer->fingerprint ? signer->fingerprint : "(null)");
+ fputs ("\nSignatures:\n", stdout);
+ count = g_mime_signature_list_length (signatures);
+ for (i = 0; i < count; i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+
+ fprintf (stdout, "\tName: %s\n", sig->cert->name ? sig->cert->name : "(null)");
+ fprintf (stdout, "\tKeyId: %s\n", sig->cert->keyid ? sig->cert->keyid : "(null)");
+ fprintf (stdout, "\tFingerprint: %s\n", sig->cert->fingerprint ? sig->cert->fingerprint : "(null)");
fprintf (stdout, "\tTrust: ");
- switch (signer->trust) {
- case GMIME_SIGNER_TRUST_NONE:
+ switch (sig->cert->trust) {
+ case GMIME_CERTIFICATE_TRUST_NONE:
fputs ("None\n", stdout);
break;
- case GMIME_SIGNER_TRUST_NEVER:
+ case GMIME_CERTIFICATE_TRUST_NEVER:
fputs ("Never\n", stdout);
break;
- case GMIME_SIGNER_TRUST_UNDEFINED:
+ case GMIME_CERTIFICATE_TRUST_UNDEFINED:
fputs ("Undefined\n", stdout);
break;
- case GMIME_SIGNER_TRUST_MARGINAL:
+ case GMIME_CERTIFICATE_TRUST_MARGINAL:
fputs ("Marginal\n", stdout);
break;
- case GMIME_SIGNER_TRUST_FULLY:
+ case GMIME_CERTIFICATE_TRUST_FULLY:
fputs ("Fully\n", stdout);
break;
- case GMIME_SIGNER_TRUST_ULTIMATE:
+ case GMIME_CERTIFICATE_TRUST_ULTIMATE:
fputs ("Ultimate\n", stdout);
break;
}
fprintf (stdout, "\tStatus: ");
- switch (signer->status) {
- case GMIME_SIGNER_STATUS_GOOD:
+ switch (sig->status) {
+ case GMIME_SIGNATURE_STATUS_GOOD:
fputs ("GOOD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_BAD:
+ case GMIME_SIGNATURE_STATUS_BAD:
fputs ("BAD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_ERROR:
+ case GMIME_SIGNATURE_STATUS_ERROR:
fputs ("ERROR\n", stdout);
break;
}
- fprintf (stdout, "\tSignature made on %s", ctime (&signer->sig_created));
- if (signer->sig_expires != (time_t) 0)
- fprintf (stdout, "\tSignature expires on %s", ctime (&signer->sig_expires));
+ fprintf (stdout, "\tSignature made on %s", ctime (&sig->created));
+ if (sig->expires != (time_t) 0)
+ fprintf (stdout, "\tSignature expires on %s", ctime (&sig->expires));
else
fprintf (stdout, "\tSignature never expires\n");
- if (signer->errors) {
+ if (sig->errors) {
fprintf (stdout, "\tErrors: ");
- if (signer->errors & GMIME_SIGNER_ERROR_EXPSIG)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_EXPSIG)
fputs ("Expired, ", stdout);
- if (signer->errors & GMIME_SIGNER_ERROR_NO_PUBKEY)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_NO_PUBKEY)
fputs ("No Pub Key, ", stdout);
- if (signer->errors & GMIME_SIGNER_ERROR_EXPKEYSIG)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_EXPKEYSIG)
fputs ("Key Expired, ", stdout);
- if (signer->errors & GMIME_SIGNER_ERROR_REVKEYSIG)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_REVKEYSIG)
fputs ("Key Revoked", stdout);
fputc ('\n', stdout);
} else {
fprintf (stdout, "\tNo errors for this signer\n");
}
- if ((signer = signer->next))
+ if (i + 1 < count)
fputc ('\n', stdout);
}
-
- fprintf (stdout, "\nValidity diagnostics: \n%s\n",
- g_mime_signature_validity_get_details (validity));
}
#define MULTIPART_SIGNED_CONTENT "This is a test of the emergency broadcast system \
@@ -165,7 +166,7 @@ then we have ourselves a winner I guess...\n"
static void
test_multipart_signed (GMimeCryptoContext *ctx)
{
- GMimeSignatureValidity *validity;
+ GMimeSignatureList *signatures;
GMimeMultipartSigned *mps;
GMimeDataWrapper *content;
GMimeMessage *message;
@@ -200,7 +201,7 @@ test_multipart_signed (GMimeCryptoContext *ctx)
/* sign the part */
g_mime_multipart_signed_sign (mps, GMIME_OBJECT (part), ctx, "no user no domain",
- GMIME_CRYPTO_HASH_SHA1, &err);
+ GMIME_DIGEST_ALGO_SHA1, &err);
g_object_unref (part);
if (err != NULL) {
@@ -242,15 +243,15 @@ test_multipart_signed (GMimeCryptoContext *ctx)
mps = (GMimeMultipartSigned *) message->mime_part;
v(fputs ("Trying to verify signature... ", stdout));
- if (!(validity = g_mime_multipart_signed_verify (mps, ctx, &err))) {
+ if (!(signatures = g_mime_multipart_signed_verify (mps, ctx, &err))) {
ex = exception_new ("%s", err->message);
v(fputs ("failed.\n", stdout));
g_error_free (err);
throw (ex);
}
- v(print_verify_results (validity));
- g_mime_signature_validity_free (validity);
+ v(print_verify_results (signatures));
+ g_object_unref (signatures);
g_object_unref (message);
}
@@ -262,7 +263,7 @@ test_multipart_encrypted (GMimeCryptoContext *ctx, gboolean sign)
{
GMimeStream *cleartext, *stream;
GMimeMultipartEncrypted *mpe;
- GMimeDecryptionResult *result;
+ GMimeDecryptResult *result;
GMimeDataWrapper *content;
GMimeObject *decrypted;
GPtrArray *recipients;
@@ -297,7 +298,7 @@ test_multipart_encrypted (GMimeCryptoContext *ctx, gboolean sign)
recipients = g_ptr_array_new ();
g_ptr_array_add (recipients, "no user no domain");
g_mime_multipart_encrypted_encrypt (mpe, GMIME_OBJECT (part), ctx, sign,
- "no user no domain", GMIME_CRYPTO_HASH_SHA256,
+ "no user no domain", GMIME_DIGEST_ALGO_SHA256,
recipients, &err);
g_ptr_array_free (recipients, TRUE);
g_object_unref (part);
@@ -345,24 +346,23 @@ test_multipart_encrypted (GMimeCryptoContext *ctx, gboolean sign)
decrypted = g_mime_multipart_encrypted_decrypt (mpe, ctx, &result, &err);
if (!decrypted || err != NULL) {
ex = exception_new ("decryption failed: %s", err->message);
- g_mime_decryption_result_free (result);
g_object_unref (cleartext);
g_error_free (err);
throw (ex);
}
- if (result->validity)
- v(print_verify_results (result->validity));
+ if (result->signatures)
+ v(print_verify_results (result->signatures));
if (sign) {
- if (!result->validity || get_sig_status (result->validity->signers) != GMIME_SIGNER_STATUS_GOOD)
+ if (!result->signatures || get_sig_status (result->signatures) != GMIME_SIGNATURE_STATUS_GOOD)
ex = exception_new ("signature status expected to be GOOD");
} else {
- if (result->validity && result->validity->signers != NULL)
+ if (result->signatures)
ex = exception_new ("signature status expected to be NONE");
}
- g_mime_decryption_result_free (result);
+ g_object_unref (result);
if (ex != NULL) {
g_object_unref (cleartext);
diff --git a/tests/test-pkcs7.c b/tests/test-pkcs7.c
index 6bb8ac9..199cd13 100644
--- a/tests/test-pkcs7.c
+++ b/tests/test-pkcs7.c
@@ -47,18 +47,19 @@ request_passwd (GMimeCryptoContext *ctx, const char *user_id, const char *prompt
return TRUE;
}
-static GMimeSignerStatus
-get_sig_status (GMimeSigner *signers)
+static GMimeSignatureStatus
+get_sig_status (GMimeSignatureList *signatures)
{
- GMimeSignerStatus status = GMIME_SIGNER_STATUS_GOOD;
- GMimeSigner *signer = signers;
+ GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_GOOD;
+ GMimeSignature *sig;
+ int i;
- if (signers == NULL)
- return GMIME_SIGNER_STATUS_ERROR;
+ if (!signatures || signatures->array->len == 0)
+ return GMIME_SIGNATURE_STATUS_ERROR;
- while (signer != NULL) {
- status = MAX (status, signer->status);
- signer = signer->next;
+ for (i = 0; i < g_mime_signature_list_length (signatures); i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+ status = MAX (status, sig->status);
}
return status;
@@ -72,7 +73,7 @@ test_sign (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphert
int rv;
rv = g_mime_crypto_context_sign (ctx, "alice example net",
- GMIME_CRYPTO_HASH_SHA256,
+ GMIME_DIGEST_ALGO_SHA256,
cleartext, ciphertext, &err);
if (rv == -1 || err != NULL) {
@@ -82,7 +83,7 @@ test_sign (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphert
}
v(fprintf (stderr, "signature (%s):\n%.*s\n",
- g_mime_crypto_context_hash_name (ctx, rv),
+ g_mime_crypto_context_digest_name (ctx, rv),
GMIME_STREAM_MEM (ciphertext)->buffer->len,
GMIME_STREAM_MEM (ciphertext)->buffer->data));
}
@@ -90,25 +91,25 @@ test_sign (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphert
static void
test_verify (GMimeCryptoContext *ctx, GMimeStream *cleartext, GMimeStream *ciphertext)
{
- GMimeSignatureValidity *validity;
+ GMimeSignatureList *signatures;
GError *err = NULL;
Exception *ex;
- validity = g_mime_crypto_context_verify (ctx, GMIME_CRYPTO_HASH_DEFAULT,
- cleartext, ciphertext, &err);
+ signatures = g_mime_crypto_context_verify (ctx, GMIME_DIGEST_ALGO_DEFAULT,
+ cleartext, ciphertext, &err);
- if (validity == NULL) {
+ if (signatures == NULL) {
ex = exception_new ("%s", err->message);
g_error_free (err);
throw (ex);
}
- if (get_sig_status (validity->signers) != GMIME_SIGNER_STATUS_GOOD) {
- g_mime_signature_validity_free (validity);
+ if (get_sig_status (signatures) != GMIME_SIGNATURE_STATUS_GOOD) {
+ g_object_unref (signatures);
throw (exception_new ("signature BAD"));
}
- g_mime_signature_validity_free (validity);
+ g_object_unref (signatures);
}
static void
@@ -122,7 +123,7 @@ test_encrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GM
g_ptr_array_add (recipients, "alice example net");
g_mime_crypto_context_encrypt (ctx, sign, "alice example net",
- GMIME_CRYPTO_HASH_SHA256, recipients,
+ GMIME_DIGEST_ALGO_SHA256, recipients,
cleartext, ciphertext, &err);
g_ptr_array_free (recipients, TRUE);
@@ -141,7 +142,7 @@ test_encrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GM
static void
test_decrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GMimeStream *ciphertext)
{
- GMimeDecryptionResult *result;
+ GMimeDecryptResult *result;
Exception *ex = NULL;
GMimeStream *stream;
GError *err = NULL;
@@ -157,14 +158,14 @@ test_decrypt (GMimeCryptoContext *ctx, gboolean sign, GMimeStream *cleartext, GM
}
if (sign) {
- if (!result->validity || get_sig_status (result->validity->signers) != GMIME_SIGNER_STATUS_GOOD)
+ if (!result->signatures || get_sig_status (result->signatures) != GMIME_SIGNATURE_STATUS_GOOD)
ex = exception_new ("expected GOOD signature");
} else {
- if (result->validity && result->validity->signers != NULL)
+ if (result->signatures)
ex = exception_new ("unexpected signature");
}
- g_mime_decryption_result_free (result);
+ g_object_unref (result);
if (ex != NULL) {
g_object_unref (stream);
diff --git a/tests/test-smime.c b/tests/test-smime.c
index c3a68fb..8d4fcbd 100644
--- a/tests/test-smime.c
+++ b/tests/test-smime.c
@@ -48,36 +48,38 @@ request_passwd (GMimeCryptoContext *ctx, const char *user_id, const char *prompt
return TRUE;
}
-static GMimeSignerStatus
-get_sig_status (GMimeSigner *signers)
+static GMimeSignatureStatus
+get_sig_status (GMimeSignatureList *signatures)
{
- GMimeSignerStatus status = GMIME_SIGNER_STATUS_GOOD;
- GMimeSigner *signer = signers;
+ GMimeSignatureStatus status = GMIME_SIGNATURE_STATUS_GOOD;
+ GMimeSignature *sig;
+ int i;
- if (signers == NULL)
- return GMIME_SIGNER_STATUS_ERROR;
+ if (!signatures || signatures->array->len == 0)
+ return GMIME_SIGNATURE_STATUS_ERROR;
- while (signer != NULL) {
- status = MAX (status, signer->status);
- signer = signer->next;
+ for (i = 0; i < g_mime_signature_list_length (signatures); i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+ status = MAX (status, sig->status);
}
return status;
}
static void
-print_verify_results (const GMimeSignatureValidity *validity)
+print_verify_results (GMimeSignatureList *signatures)
{
- GMimeSigner *signer;
+ GMimeSignature *sig;
+ int count, i;
- switch (get_sig_status (validity->signers)) {
- case GMIME_SIGNER_STATUS_GOOD:
+ switch (get_sig_status (signatures)) {
+ case GMIME_SIGNATURE_STATUS_GOOD:
fputs ("GOOD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_BAD:
+ case GMIME_SIGNATURE_STATUS_BAD:
fputs ("BAD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_ERROR:
+ case GMIME_SIGNATURE_STATUS_ERROR:
fputs ("ERROR status\n", stdout);
break;
default:
@@ -85,75 +87,74 @@ print_verify_results (const GMimeSignatureValidity *validity)
break;
}
- fputs ("\nSigners:\n", stdout);
- signer = validity->signers;
- while (signer != NULL) {
- fprintf (stdout, "\tName: %s\n", signer->name ? signer->name : "(null)");
- fprintf (stdout, "\tKeyId: %s\n", signer->keyid ? signer->keyid : "(null)");
- fprintf (stdout, "\tFingerprint: %s\n", signer->fingerprint ? signer->fingerprint : "(null)");
+ fputs ("\nSignatures:\n", stdout);
+ count = g_mime_signature_list_length (signatures);
+ for (i = 0; i < count; i++) {
+ sig = g_mime_signature_list_get_signature (signatures, i);
+
+ fprintf (stdout, "\tName: %s\n", sig->cert->name ? sig->cert->name : "(null)");
+ fprintf (stdout, "\tKeyId: %s\n", sig->cert->keyid ? sig->cert->keyid : "(null)");
+ fprintf (stdout, "\tFingerprint: %s\n", sig->cert->fingerprint ? sig->cert->fingerprint : "(null)");
fprintf (stdout, "\tTrust: ");
- switch (signer->trust) {
- case GMIME_SIGNER_TRUST_NONE:
+ switch (sig->cert->trust) {
+ case GMIME_CERTIFICATE_TRUST_NONE:
fputs ("None\n", stdout);
break;
- case GMIME_SIGNER_TRUST_NEVER:
+ case GMIME_CERTIFICATE_TRUST_NEVER:
fputs ("Never\n", stdout);
break;
- case GMIME_SIGNER_TRUST_UNDEFINED:
+ case GMIME_CERTIFICATE_TRUST_UNDEFINED:
fputs ("Undefined\n", stdout);
break;
- case GMIME_SIGNER_TRUST_MARGINAL:
+ case GMIME_CERTIFICATE_TRUST_MARGINAL:
fputs ("Marginal\n", stdout);
break;
- case GMIME_SIGNER_TRUST_FULLY:
+ case GMIME_CERTIFICATE_TRUST_FULLY:
fputs ("Fully\n", stdout);
break;
- case GMIME_SIGNER_TRUST_ULTIMATE:
+ case GMIME_CERTIFICATE_TRUST_ULTIMATE:
fputs ("Ultimate\n", stdout);
break;
}
fprintf (stdout, "\tStatus: ");
- switch (signer->status) {
- case GMIME_SIGNER_STATUS_GOOD:
+ switch (sig->status) {
+ case GMIME_SIGNATURE_STATUS_GOOD:
fputs ("GOOD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_BAD:
+ case GMIME_SIGNATURE_STATUS_BAD:
fputs ("BAD\n", stdout);
break;
- case GMIME_SIGNER_STATUS_ERROR:
+ case GMIME_SIGNATURE_STATUS_ERROR:
fputs ("ERROR\n", stdout);
break;
}
- fprintf (stdout, "\tSignature made on %s", ctime (&signer->sig_created));
- if (signer->sig_expires != (time_t) 0)
- fprintf (stdout, "\tSignature expires on %s", ctime (&signer->sig_expires));
+ fprintf (stdout, "\tSignature made on %s", ctime (&sig->created));
+ if (sig->expires != (time_t) 0)
+ fprintf (stdout, "\tSignature expires on %s", ctime (&sig->expires));
else
fprintf (stdout, "\tSignature never expires\n");
- if (signer->errors) {
+ if (sig->errors) {
fprintf (stdout, "\tErrors: ");
- if (signer->errors & GMIME_SIGNER_ERROR_EXPSIG)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_EXPSIG)
fputs ("Expired, ", stdout);
- if (signer->errors & GMIME_SIGNER_ERROR_NO_PUBKEY)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_NO_PUBKEY)
fputs ("No Pub Key, ", stdout);
- if (signer->errors & GMIME_SIGNER_ERROR_EXPKEYSIG)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_EXPKEYSIG)
fputs ("Key Expired, ", stdout);
- if (signer->errors & GMIME_SIGNER_ERROR_REVKEYSIG)
+ if (sig->errors & GMIME_SIGNATURE_ERROR_REVKEYSIG)
fputs ("Key Revoked", stdout);
fputc ('\n', stdout);
} else {
fprintf (stdout, "\tNo errors for this signer\n");
}
- if ((signer = signer->next))
+ if (i + 1 < count)
fputc ('\n', stdout);
}
-
- fprintf (stdout, "\nValidity diagnostics: \n%s\n",
- g_mime_signature_validity_get_details (validity));
}
#define MULTIPART_SIGNED_CONTENT "This is a test of the emergency broadcast system \
@@ -166,7 +167,7 @@ then we have ourselves a winner I guess...\n"
static void
test_multipart_signed (GMimeCryptoContext *ctx)
{
- GMimeSignatureValidity *validity;
+ GMimeSignatureList *signatures;
GMimeMultipartSigned *mps;
GMimeDataWrapper *content;
GMimeMessage *message;
@@ -201,7 +202,7 @@ test_multipart_signed (GMimeCryptoContext *ctx)
/* sign the part */
g_mime_multipart_signed_sign (mps, GMIME_OBJECT (part), ctx, "alice example net",
- GMIME_CRYPTO_HASH_SHA1, &err);
+ GMIME_DIGEST_ALGO_SHA1, &err);
g_object_unref (part);
if (err != NULL) {
@@ -243,15 +244,15 @@ test_multipart_signed (GMimeCryptoContext *ctx)
mps = (GMimeMultipartSigned *) message->mime_part;
v(fputs ("Trying to verify signature... ", stdout));
- if (!(validity = g_mime_multipart_signed_verify (mps, ctx, &err))) {
+ if (!(signatures = g_mime_multipart_signed_verify (mps, ctx, &err))) {
ex = exception_new ("%s", err->message);
v(fputs ("failed.\n", stdout));
g_error_free (err);
throw (ex);
}
- v(print_verify_results (validity));
- g_mime_signature_validity_free (validity);
+ v(print_verify_results (signatures));
+ g_object_unref (signatures);
g_object_unref (message);
}
@@ -263,7 +264,7 @@ test_multipart_encrypted (GMimeCryptoContext *ctx, gboolean sign)
{
GMimeStream *cleartext, *stream;
GMimeMultipartEncrypted *mpe;
- GMimeDecryptionResult *result;
+ GMimeDecryptResult *result;
GMimeDataWrapper *content;
GMimeObject *decrypted;
GPtrArray *recipients;
@@ -298,7 +299,7 @@ test_multipart_encrypted (GMimeCryptoContext *ctx, gboolean sign)
recipients = g_ptr_array_new ();
g_ptr_array_add (recipients, "alice example net");
g_mime_multipart_encrypted_encrypt (mpe, GMIME_OBJECT (part), ctx, sign,
- "alice example net", GMIME_CRYPTO_HASH_SHA256,
+ "alice example net", GMIME_DIGEST_ALGO_SHA256,
recipients, &err);
g_ptr_array_free (recipients, TRUE);
g_object_unref (part);
@@ -346,24 +347,23 @@ test_multipart_encrypted (GMimeCryptoContext *ctx, gboolean sign)
decrypted = g_mime_multipart_encrypted_decrypt (mpe, ctx, &result, &err);
if (!decrypted || err != NULL) {
ex = exception_new ("decryption failed: %s", err->message);
- g_mime_decryption_result_free (result);
g_object_unref (cleartext);
g_error_free (err);
throw (ex);
}
- if (result->validity)
- v(print_verify_results (result->validity));
+ if (result->signatures)
+ v(print_verify_results (result->signatures));
if (sign) {
- if (!result->validity || get_sig_status (result->validity->signers) != GMIME_SIGNER_STATUS_GOOD)
+ if (!result->signatures || get_sig_status (result->signatures) != GMIME_SIGNATURE_STATUS_GOOD)
ex = exception_new ("signature status expected to be GOOD");
} else {
- if (result->validity && result->validity->signers != NULL)
+ if (result->signatures)
ex = exception_new ("signature status expected to be NONE");
}
- g_mime_decryption_result_free (result);
+ g_object_unref (result);
if (ex != NULL) {
g_object_unref (cleartext);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]