aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog11
-rw-r--r--mail/mail-crypto.c92
-rw-r--r--mail/mail-crypto.h2
-rw-r--r--mail/mail-format.c15
4 files changed, 88 insertions, 32 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index e996c29a68..c9465a00af 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,14 @@
+2002-06-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * mail-crypto.c (mail_crypto_pgp_mime_part_verify): If the pgp
+ type is gpg, then use the gpg context.
+ (mail_crypto_pgp_mime_part_sign): Same.
+ (mail_crypto_pgp_mime_part_encrypt): Same.
+ (mail_crypto_pgp_mime_part_decrypt): Same.
+
+ * mail-format.c (handle_multipart_signed): Use the new gpg cipher
+ context.
+
2002-06-18 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c (message_list_change_first_visible_parent): New
diff --git a/mail/mail-crypto.c b/mail/mail-crypto.c
index 7be3eadf41..fbd2f4bda5 100644
--- a/mail/mail-crypto.c
+++ b/mail/mail-crypto.c
@@ -46,14 +46,25 @@
void
mail_crypto_pgp_mime_part_sign (CamelMimePart **mime_part, const char *userid, CamelCipherHash hash, CamelException *ex)
{
- CamelPgpContext *context;
+ CamelCipherContext *cipher;
- context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ switch (mail_config_get_pgp_type ()) {
+ case CAMEL_PGP_TYPE_GPG:
+ cipher = camel_gpg_context_new (session, mail_config_get_pgp_path ());
+ break;
+ case CAMEL_PGP_TYPE_PGP5:
+ case CAMEL_PGP_TYPE_PGP6:
+ cipher = camel_pgp_context_new (session, mail_config_get_pgp_type (),
+ mail_config_get_pgp_path ());
+ break;
+ default:
+ cipher = NULL;
+ break;
+ }
- if (context) {
- camel_pgp_mime_part_sign (context, mime_part, userid, hash, ex);
- camel_object_unref (CAMEL_OBJECT (context));
+ if (cipher) {
+ camel_pgp_mime_part_sign (cipher, mime_part, userid, hash, ex);
+ camel_object_unref (CAMEL_OBJECT (cipher));
} else
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not create a PGP signature context."));
@@ -71,14 +82,25 @@ CamelCipherValidity *
mail_crypto_pgp_mime_part_verify (CamelMimePart *mime_part, CamelException *ex)
{
CamelCipherValidity *valid = NULL;
- CamelPgpContext *context;
+ CamelCipherContext *cipher;
- context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ switch (mail_config_get_pgp_type ()) {
+ case CAMEL_PGP_TYPE_GPG:
+ cipher = camel_gpg_context_new (session, mail_config_get_pgp_path ());
+ break;
+ case CAMEL_PGP_TYPE_PGP5:
+ case CAMEL_PGP_TYPE_PGP6:
+ cipher = camel_pgp_context_new (session, mail_config_get_pgp_type (),
+ mail_config_get_pgp_path ());
+ break;
+ default:
+ cipher = NULL;
+ break;
+ }
- if (context) {
- valid = camel_pgp_mime_part_verify (context, mime_part, ex);
- camel_object_unref (CAMEL_OBJECT (context));
+ if (cipher) {
+ valid = camel_pgp_mime_part_verify (cipher, mime_part, ex);
+ camel_object_unref (CAMEL_OBJECT (cipher));
} else
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not create a PGP verification context."));
@@ -100,14 +122,25 @@ mail_crypto_pgp_mime_part_verify (CamelMimePart *mime_part, CamelException *ex)
void
mail_crypto_pgp_mime_part_encrypt (CamelMimePart **mime_part, GPtrArray *recipients, CamelException *ex)
{
- CamelPgpContext *context;
+ CamelCipherContext *cipher;
- context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ switch (mail_config_get_pgp_type ()) {
+ case CAMEL_PGP_TYPE_GPG:
+ cipher = camel_gpg_context_new (session, mail_config_get_pgp_path ());
+ break;
+ case CAMEL_PGP_TYPE_PGP5:
+ case CAMEL_PGP_TYPE_PGP6:
+ cipher = camel_pgp_context_new (session, mail_config_get_pgp_type (),
+ mail_config_get_pgp_path ());
+ break;
+ default:
+ cipher = NULL;
+ break;
+ }
- if (context) {
- camel_pgp_mime_part_encrypt (context, mime_part, recipients, ex);
- camel_object_unref (CAMEL_OBJECT (context));
+ if (cipher) {
+ camel_pgp_mime_part_encrypt (cipher, mime_part, recipients, ex);
+ camel_object_unref (CAMEL_OBJECT (cipher));
} else
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not create a PGP encryption context."));
@@ -124,15 +157,26 @@ mail_crypto_pgp_mime_part_encrypt (CamelMimePart **mime_part, GPtrArray *recipie
CamelMimePart *
mail_crypto_pgp_mime_part_decrypt (CamelMimePart *mime_part, CamelException *ex)
{
- CamelPgpContext *context;
+ CamelCipherContext *cipher;
CamelMimePart *part = NULL;
- context = camel_pgp_context_new (session, mail_config_get_pgp_type (),
- mail_config_get_pgp_path ());
+ switch (mail_config_get_pgp_type ()) {
+ case CAMEL_PGP_TYPE_GPG:
+ cipher = camel_gpg_context_new (session, mail_config_get_pgp_path ());
+ break;
+ case CAMEL_PGP_TYPE_PGP5:
+ case CAMEL_PGP_TYPE_PGP6:
+ cipher = camel_pgp_context_new (session, mail_config_get_pgp_type (),
+ mail_config_get_pgp_path ());
+ break;
+ default:
+ cipher = NULL;
+ break;
+ }
- if (context) {
- part = camel_pgp_mime_part_decrypt (context, mime_part, ex);
- camel_object_unref (CAMEL_OBJECT (context));
+ if (cipher) {
+ part = camel_pgp_mime_part_decrypt (cipher, mime_part, ex);
+ camel_object_unref (CAMEL_OBJECT (cipher));
} else
camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not create a PGP decryption context."));
diff --git a/mail/mail-crypto.h b/mail/mail-crypto.h
index 42467613e2..1ed794ceb5 100644
--- a/mail/mail-crypto.h
+++ b/mail/mail-crypto.h
@@ -31,7 +31,7 @@
#ifdef __cplusplus
extern "C" {
#pragma }
-#endif /* __cplusplus } */
+#endif /* __cplusplus */
/* PGP/MIME convenience wrappers */
void mail_crypto_pgp_mime_part_sign (CamelMimePart **mime_part,
diff --git a/mail/mail-format.c b/mail/mail-format.c
index c17e614636..4eeca49f44 100644
--- a/mail/mail-format.c
+++ b/mail/mail-format.c
@@ -1839,19 +1839,20 @@ handle_multipart_signed (CamelMimePart *part, const char *mime_type,
CamelException ex;
const char *message = NULL;
gboolean good = FALSE;
- CamelPgpContext *context;
+ CamelCipherContext *cipher;
/* Write out the verification results */
/* TODO: use the right context for the right message ... */
camel_exception_init (&ex);
- context = camel_pgp_context_new(session, mail_config_get_pgp_type(), mail_config_get_pgp_path());
- if (context) {
- valid = camel_multipart_signed_verify(mps, (CamelCipherContext *)context, &ex);
+ cipher = camel_gpg_context_new (session, mail_config_get_pgp_path ());
+ if (cipher) {
+ valid = camel_multipart_signed_verify (mps, cipher, &ex);
+ camel_object_unref (CAMEL_OBJECT (cipher));
if (valid) {
- good = camel_cipher_validity_get_valid(valid);
- message = camel_cipher_validity_get_description(valid);
+ good = camel_cipher_validity_get_valid (valid);
+ message = camel_cipher_validity_get_description (valid);
} else {
- message = camel_exception_get_description(&ex);
+ message = camel_exception_get_description (&ex);
}
} else {
message = U_("Could not create a PGP verfication context");