Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 324785 | Differences between
and this patch

Collapse All | Expand All

(-)a/camel/camel-cipher-context.h (+3 lines)
Lines 64-69 typedef enum { Link Here
64
	CAMEL_CIPHER_HASH_MD2,
64
	CAMEL_CIPHER_HASH_MD2,
65
	CAMEL_CIPHER_HASH_MD5,
65
	CAMEL_CIPHER_HASH_MD5,
66
	CAMEL_CIPHER_HASH_SHA1,
66
	CAMEL_CIPHER_HASH_SHA1,
67
	CAMEL_CIPHER_HASH_SHA256,
68
	CAMEL_CIPHER_HASH_SHA384,
69
	CAMEL_CIPHER_HASH_SHA512,
67
	CAMEL_CIPHER_HASH_RIPEMD160,
70
	CAMEL_CIPHER_HASH_RIPEMD160,
68
	CAMEL_CIPHER_HASH_TIGER192,
71
	CAMEL_CIPHER_HASH_TIGER192,
69
	CAMEL_CIPHER_HASH_HAVAL5160
72
	CAMEL_CIPHER_HASH_HAVAL5160
(-)a/camel/camel-gpg-context.c (-3 / +52 lines)
Lines 99-104 gpg_hash_to_id (CamelCipherContext *context, CamelCipherHash hash) Link Here
99
	case CAMEL_CIPHER_HASH_SHA1:
99
	case CAMEL_CIPHER_HASH_SHA1:
100
	case CAMEL_CIPHER_HASH_DEFAULT:
100
	case CAMEL_CIPHER_HASH_DEFAULT:
101
		return "pgp-sha1";
101
		return "pgp-sha1";
102
	case CAMEL_CIPHER_HASH_SHA256:
103
		return "pgp-sha256";
104
	case CAMEL_CIPHER_HASH_SHA384:
105
		return "pgp-sha384";
106
	case CAMEL_CIPHER_HASH_SHA512:
107
		return "pgp-sha512";
102
	case CAMEL_CIPHER_HASH_RIPEMD160:
108
	case CAMEL_CIPHER_HASH_RIPEMD160:
103
		return "pgp-ripemd160";
109
		return "pgp-ripemd160";
104
	case CAMEL_CIPHER_HASH_TIGER192:
110
	case CAMEL_CIPHER_HASH_TIGER192:
Lines 120-125 gpg_id_to_hash (CamelCipherContext *context, const gchar *id) Link Here
120
			return CAMEL_CIPHER_HASH_MD5;
126
			return CAMEL_CIPHER_HASH_MD5;
121
		else if (!strcmp (id, "pgp-sha1"))
127
		else if (!strcmp (id, "pgp-sha1"))
122
			return CAMEL_CIPHER_HASH_SHA1;
128
			return CAMEL_CIPHER_HASH_SHA1;
129
		else if (!strcmp (id, "pgp-sha256"))
130
			return CAMEL_CIPHER_HASH_SHA256;
131
		else if (!strcmp (id, "pgp-sha384"))
132
			return CAMEL_CIPHER_HASH_SHA384;
133
		else if (!strcmp (id, "pgp-sha512"))
134
			return CAMEL_CIPHER_HASH_SHA512;
123
		else if (!strcmp (id, "pgp-ripemd160"))
135
		else if (!strcmp (id, "pgp-ripemd160"))
124
			return CAMEL_CIPHER_HASH_RIPEMD160;
136
			return CAMEL_CIPHER_HASH_RIPEMD160;
125
		else if (!strcmp (id, "tiger192"))
137
		else if (!strcmp (id, "tiger192"))
Lines 461-466 gpg_hash_str (CamelCipherHash hash) Link Here
461
		return "--digest-algo=MD5";
473
		return "--digest-algo=MD5";
462
	case CAMEL_CIPHER_HASH_SHA1:
474
	case CAMEL_CIPHER_HASH_SHA1:
463
		return "--digest-algo=SHA1";
475
		return "--digest-algo=SHA1";
476
	case CAMEL_CIPHER_HASH_SHA256:
477
		return "--digest-algo=SHA256";
478
	case CAMEL_CIPHER_HASH_SHA384:
479
		return "--digest-algo=SHA384";
480
	case CAMEL_CIPHER_HASH_SHA512:
481
		return "--digest-algo=SHA512";
464
	case CAMEL_CIPHER_HASH_RIPEMD160:
482
	case CAMEL_CIPHER_HASH_RIPEMD160:
465
		return "--digest-algo=RIPEMD160";
483
		return "--digest-algo=RIPEMD160";
466
	default:
484
	default:
Lines 670-676 gpg_ctx_op_start (struct _GpgCtx *gpg) Link Here
670
	errno = errnosave;
688
	errno = errnosave;
671
#else
689
#else
672
	/* FIXME: Port me */
690
	/* FIXME: Port me */
673
	g_warning ("%s: Not implemented", __FUNCTION__);
691
	g_warning ("%s: Not implemented", G_STRFUNC);
674
692
675
	errno = EINVAL;
693
	errno = EINVAL;
676
#endif
694
#endif
Lines 898-904 gpg_ctx_parse_status (struct _GpgCtx *gpg, Link Here
898
		switch (gpg->mode) {
916
		switch (gpg->mode) {
899
		case GPG_CTX_MODE_SIGN:
917
		case GPG_CTX_MODE_SIGN:
900
			if (!strncmp ((gchar *) status, "SIG_CREATED ", 12)) {
918
			if (!strncmp ((gchar *) status, "SIG_CREATED ", 12)) {
901
				/* FIXME: save this state? */
919
				/* SIG_CREATED <type> <pubkey algo> <hash algo> <class> <timestamp> <key fpr> */
920
				const gchar *str, *p;
921
				gint i;
922
923
				str = (const gchar *) status + 12;
924
				while (p = strchr (str, ' '), i < 2 && p) {
925
					str = p + 1;
926
					i++;
927
				}
928
929
				if (str && *str && i == 2) {
930
					struct {
931
						gint gpg_hash_algo;
932
						CamelCipherHash camel_hash_algo; 
933
					} hash_algos[] = {
934
						/* the rest are deprecated/not supported by gpg any more */
935
						{  2, CAMEL_CIPHER_HASH_SHA1 },
936
						{  3, CAMEL_CIPHER_HASH_RIPEMD160 },
937
						{  8, CAMEL_CIPHER_HASH_SHA256 },
938
						{  9, CAMEL_CIPHER_HASH_SHA384 },
939
						{ 10, CAMEL_CIPHER_HASH_SHA512 }
940
					};
941
942
					gint gpg_hash = strtoul (str, NULL, 10);
943
944
					for (i = 0; i < G_N_ELEMENTS (hash_algos); i++) {
945
						if (hash_algos[i].gpg_hash_algo == gpg_hash) {
946
							gpg->hash = hash_algos[i].camel_hash_algo;
947
							break;
948
						}
949
					}
950
				}
902
			}
951
			}
903
			break;
952
			break;
904
		case GPG_CTX_MODE_DECRYPT:
953
		case GPG_CTX_MODE_DECRYPT:
Lines 1440-1446 gpg_sign (CamelCipherContext *context, Link Here
1440
1489
1441
	mps = camel_multipart_signed_new();
1490
	mps = camel_multipart_signed_new();
1442
	ct = camel_content_type_new("multipart", "signed");
1491
	ct = camel_content_type_new("multipart", "signed");
1443
	camel_content_type_set_param(ct, "micalg", camel_cipher_hash_to_id(context, hash));
1492
	camel_content_type_set_param(ct, "micalg", camel_cipher_hash_to_id (context, hash == CAMEL_CIPHER_HASH_DEFAULT ? gpg->hash : hash));
1444
	camel_content_type_set_param(ct, "protocol", context->sign_protocol);
1493
	camel_content_type_set_param(ct, "protocol", context->sign_protocol);
1445
	camel_data_wrapper_set_mime_type_field((CamelDataWrapper *)mps, ct);
1494
	camel_data_wrapper_set_mime_type_field((CamelDataWrapper *)mps, ct);
1446
	camel_content_type_unref(ct);
1495
	camel_content_type_unref(ct);
(-)a/camel/camel-smime-context.c (-5 / +73 lines)
Lines 200-205 Link Here
200
	case CAMEL_CIPHER_HASH_SHA1:
200
	case CAMEL_CIPHER_HASH_SHA1:
201
	case CAMEL_CIPHER_HASH_DEFAULT:
201
	case CAMEL_CIPHER_HASH_DEFAULT:
202
		return "sha1";
202
		return "sha1";
203
	case CAMEL_CIPHER_HASH_SHA256:
204
		return "sha256";
205
	case CAMEL_CIPHER_HASH_SHA384:
206
		return "sha384";
207
	case CAMEL_CIPHER_HASH_SHA512:
208
		return "sha512";
203
	default:
209
	default:
204
		return NULL;
210
		return NULL;
205
	}
211
	}
Lines 213-218 Link Here
213
			return CAMEL_CIPHER_HASH_MD5;
219
			return CAMEL_CIPHER_HASH_MD5;
214
		else if (!strcmp(id, "sha1"))
220
		else if (!strcmp(id, "sha1"))
215
			return CAMEL_CIPHER_HASH_SHA1;
221
			return CAMEL_CIPHER_HASH_SHA1;
222
		else if (!strcmp (id, "sha256"))
223
			return CAMEL_CIPHER_HASH_SHA256;
224
		else if (!strcmp (id, "sha384"))
225
			return CAMEL_CIPHER_HASH_SHA384;
226
		else if (!strcmp (id, "sha512"))
227
			return CAMEL_CIPHER_HASH_SHA512;
228
	}
229
230
	return CAMEL_CIPHER_HASH_DEFAULT;
231
}
232
233
static CamelCipherHash
234
get_hash_from_oid (SECOidTag oidTag)
235
{
236
	switch (oidTag) {
237
	case SEC_OID_SHA1:
238
		return CAMEL_CIPHER_HASH_SHA1;
239
	case SEC_OID_SHA256:
240
		return CAMEL_CIPHER_HASH_SHA256;
241
	case SEC_OID_SHA384:
242
		return CAMEL_CIPHER_HASH_SHA384;
243
	case SEC_OID_SHA512:
244
		return CAMEL_CIPHER_HASH_SHA512;
245
	case SEC_OID_MD5:
246
		return CAMEL_CIPHER_HASH_MD5;
247
	default:
248
		break;
216
	}
249
	}
217
250
218
	return CAMEL_CIPHER_HASH_DEFAULT;
251
	return CAMEL_CIPHER_HASH_DEFAULT;
Lines 427-433 Link Here
427
}
427
}
428
428
429
static NSSCMSMessage *
429
static NSSCMSMessage *
430
sm_signing_cmsmessage(CamelSMIMEContext *context, const gchar *nick, SECOidTag hash, gint detached, CamelException *ex)
430
sm_signing_cmsmessage(CamelSMIMEContext *context, const gchar *nick, SECOidTag *hash, gint detached, CamelException *ex)
431
{
431
{
432
	struct _CamelSMIMEContextPrivate *p = context->priv;
432
	struct _CamelSMIMEContextPrivate *p = context->priv;
433
	NSSCMSMessage *cmsg = NULL;
433
	NSSCMSMessage *cmsg = NULL;
Lines 436-441 Link Here
436
	NSSCMSSignerInfo *signerinfo;
436
	NSSCMSSignerInfo *signerinfo;
437
	CERTCertificate *cert= NULL, *ekpcert = NULL;
437
	CERTCertificate *cert= NULL, *ekpcert = NULL;
438
438
439
	g_return_val_if_fail (hash != NULL, NULL);
440
439
	if ((cert = CERT_FindUserCertByUsage(p->certdb,
441
	if ((cert = CERT_FindUserCertByUsage(p->certdb,
440
					     (gchar *)nick,
442
					     (gchar *)nick,
441
					     certUsageEmailSigner,
443
					     certUsageEmailSigner,
Lines 445-450 Link Here
445
		return NULL;
447
		return NULL;
446
	}
448
	}
447
449
450
	if (*hash == SEC_OID_UNKNOWN) {
451
		/* use signature algorithm from the certificate */
452
		switch (SECOID_GetAlgorithmTag (&cert->signature)) {
453
		case SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION:
454
			*hash = SEC_OID_SHA256;
455
			break;
456
		case SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION:
457
			*hash = SEC_OID_SHA384;
458
			break;
459
		case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION:
460
			*hash = SEC_OID_SHA512;
461
			break;
462
		case SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION:
463
			*hash = SEC_OID_MD5;
464
			break;
465
		case SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION:
466
		default:
467
			*hash = SEC_OID_SHA1;
468
			break;
469
		}
470
	}
471
448
	cmsg = NSS_CMSMessage_Create(NULL); /* create a message on its own pool */
472
	cmsg = NSS_CMSMessage_Create(NULL); /* create a message on its own pool */
449
	if (cmsg == NULL) {
473
	if (cmsg == NULL) {
450
		set_nss_error (ex, _("Cannot create CMS message"));
474
		set_nss_error (ex, _("Cannot create CMS message"));
Lines 469-475 Link Here
469
		goto fail;
493
		goto fail;
470
	}
494
	}
471
495
472
	signerinfo = NSS_CMSSignerInfo_Create(cmsg, cert, hash);
496
	signerinfo = NSS_CMSSignerInfo_Create(cmsg, cert, *hash);
473
	if (signerinfo == NULL) {
497
	if (signerinfo == NULL) {
474
		set_nss_error (ex, _("Cannot create CMS Signer information"));
498
		set_nss_error (ex, _("Cannot create CMS Signer information"));
475
		goto fail;
499
		goto fail;
Lines 575-591 Link Here
575
	CamelContentType *ct;
608
	CamelContentType *ct;
576
609
577
	switch (hash) {
610
	switch (hash) {
578
	case CAMEL_CIPHER_HASH_SHA1:
579
	case CAMEL_CIPHER_HASH_DEFAULT:
611
	case CAMEL_CIPHER_HASH_DEFAULT:
580
	default:
612
	default:
613
		sechash = SEC_OID_UNKNOWN;
614
		break;
615
	case CAMEL_CIPHER_HASH_SHA1:
581
		sechash = SEC_OID_SHA1;
616
		sechash = SEC_OID_SHA1;
582
		break;
617
		break;
618
	case CAMEL_CIPHER_HASH_SHA256:
619
		sechash = SEC_OID_SHA256;
620
		break;
621
	case CAMEL_CIPHER_HASH_SHA384:
622
		sechash = SEC_OID_SHA384;
623
		break;
624
	case CAMEL_CIPHER_HASH_SHA512:
625
		sechash = SEC_OID_SHA512;
626
		break;
583
	case CAMEL_CIPHER_HASH_MD5:
627
	case CAMEL_CIPHER_HASH_MD5:
584
		sechash = SEC_OID_MD5;
628
		sechash = SEC_OID_MD5;
585
		break;
629
		break;
586
	}
630
	}
587
631
588
	cmsg = sm_signing_cmsmessage((CamelSMIMEContext *)context, userid, sechash,
632
	cmsg = sm_signing_cmsmessage((CamelSMIMEContext *)context, userid, &sechash,
589
				     ((CamelSMIMEContext *)context)->priv->sign_mode == CAMEL_SMIME_SIGN_CLEARSIGN, ex);
633
				     ((CamelSMIMEContext *)context)->priv->sign_mode == CAMEL_SMIME_SIGN_CLEARSIGN, ex);
590
	if (cmsg == NULL)
634
	if (cmsg == NULL)
591
		return -1;
635
		return -1;
Lines 650-656 Link Here
650
694
651
		mps = camel_multipart_signed_new();
695
		mps = camel_multipart_signed_new();
652
		ct = camel_content_type_new("multipart", "signed");
696
		ct = camel_content_type_new("multipart", "signed");
653
		camel_content_type_set_param(ct, "micalg", camel_cipher_hash_to_id(context, hash));
697
		camel_content_type_set_param(ct, "micalg", camel_cipher_hash_to_id(context, get_hash_from_oid(sechash)));
654
		camel_content_type_set_param(ct, "protocol", context->sign_protocol);
698
		camel_content_type_set_param(ct, "protocol", context->sign_protocol);
655
		camel_data_wrapper_set_mime_type_field((CamelDataWrapper *)mps, ct);
699
		camel_data_wrapper_set_mime_type_field((CamelDataWrapper *)mps, ct);
656
		camel_content_type_unref(ct);
700
		camel_content_type_unref(ct);
(-)a/libedataserver/e-account.c (+14 lines)
Lines 158-165 finalize (GObject *object) Link Here
158
	g_free (account->bcc_addrs);
158
	g_free (account->bcc_addrs);
159
159
160
	g_free (account->pgp_key);
160
	g_free (account->pgp_key);
161
	g_free (account->pgp_hash_algorithm);
161
	g_free (account->smime_sign_key);
162
	g_free (account->smime_sign_key);
162
	g_free (account->smime_encrypt_key);
163
	g_free (account->smime_encrypt_key);
164
	g_free (account->smime_hash_algorithm);
163
165
164
	g_free (account->parent_uid);
166
	g_free (account->parent_uid);
165
167
Lines 464-469 e_account_set_from_xml (EAccount *account, const gchar *xml) Link Here
464
			changed |= xml_set_bool (node, "always-trust", &account->pgp_always_trust);
466
			changed |= xml_set_bool (node, "always-trust", &account->pgp_always_trust);
465
			changed |= xml_set_bool (node, "always-sign", &account->pgp_always_sign);
467
			changed |= xml_set_bool (node, "always-sign", &account->pgp_always_sign);
466
			changed |= xml_set_bool (node, "no-imip-sign", &account->pgp_no_imip_sign);
468
			changed |= xml_set_bool (node, "no-imip-sign", &account->pgp_no_imip_sign);
469
			changed |= xml_set_prop (node, "hash-algo", &account->pgp_hash_algorithm);
467
470
468
			if (node->children) {
471
			if (node->children) {
469
				for (cur = node->children; cur; cur = cur->next) {
472
				for (cur = node->children; cur; cur = cur->next) {
Lines 477-482 e_account_set_from_xml (EAccount *account, const gchar *xml) Link Here
477
			changed |= xml_set_bool (node, "sign-default", &account->smime_sign_default);
480
			changed |= xml_set_bool (node, "sign-default", &account->smime_sign_default);
478
			changed |= xml_set_bool (node, "encrypt-to-self", &account->smime_encrypt_to_self);
481
			changed |= xml_set_bool (node, "encrypt-to-self", &account->smime_encrypt_to_self);
479
			changed |= xml_set_bool (node, "encrypt-default", &account->smime_encrypt_default);
482
			changed |= xml_set_bool (node, "encrypt-default", &account->smime_encrypt_default);
483
			changed |= xml_set_prop (node, "hash-algo", &account->smime_hash_algorithm);
480
484
481
			if (node->children) {
485
			if (node->children) {
482
				for (cur = node->children; cur; cur = cur->next) {
486
				for (cur = node->children; cur; cur = cur->next) {
Lines 561-566 e_account_import (EAccount *dest, EAccount *src) Link Here
561
565
562
	g_free (dest->pgp_key);
566
	g_free (dest->pgp_key);
563
	dest->pgp_key = g_strdup (src->pgp_key);
567
	dest->pgp_key = g_strdup (src->pgp_key);
568
	g_free (dest->pgp_hash_algorithm);
569
	dest->pgp_hash_algorithm = g_strdup (src->pgp_hash_algorithm);
564
	dest->pgp_encrypt_to_self = src->pgp_encrypt_to_self;
570
	dest->pgp_encrypt_to_self = src->pgp_encrypt_to_self;
565
	dest->pgp_always_sign = src->pgp_always_sign;
571
	dest->pgp_always_sign = src->pgp_always_sign;
566
	dest->pgp_no_imip_sign = src->pgp_no_imip_sign;
572
	dest->pgp_no_imip_sign = src->pgp_no_imip_sign;
Lines 569-574 e_account_import (EAccount *dest, EAccount *src) Link Here
569
	dest->smime_sign_default = src->smime_sign_default;
575
	dest->smime_sign_default = src->smime_sign_default;
570
	g_free (dest->smime_sign_key);
576
	g_free (dest->smime_sign_key);
571
	dest->smime_sign_key = g_strdup (src->smime_sign_key);
577
	dest->smime_sign_key = g_strdup (src->smime_sign_key);
578
	g_free (dest->smime_hash_algorithm);
579
	dest->smime_hash_algorithm = g_strdup (src->smime_hash_algorithm);
572
580
573
	dest->smime_encrypt_default = src->smime_encrypt_default;
581
	dest->smime_encrypt_default = src->smime_encrypt_default;
574
	dest->smime_encrypt_to_self = src->smime_encrypt_to_self;
582
	dest->smime_encrypt_to_self = src->smime_encrypt_to_self;
Lines 651-656 e_account_to_xml (EAccount *account) Link Here
651
	xmlSetProp (node, (xmlChar*)"always-trust", (xmlChar*)(account->pgp_always_trust ? "true" : "false"));
659
	xmlSetProp (node, (xmlChar*)"always-trust", (xmlChar*)(account->pgp_always_trust ? "true" : "false"));
652
	xmlSetProp (node, (xmlChar*)"always-sign", (xmlChar*)(account->pgp_always_sign ? "true" : "false"));
660
	xmlSetProp (node, (xmlChar*)"always-sign", (xmlChar*)(account->pgp_always_sign ? "true" : "false"));
653
	xmlSetProp (node, (xmlChar*)"no-imip-sign", (xmlChar*)(account->pgp_no_imip_sign ? "true" : "false"));
661
	xmlSetProp (node, (xmlChar*)"no-imip-sign", (xmlChar*)(account->pgp_no_imip_sign ? "true" : "false"));
662
	if (account->pgp_hash_algorithm && *account->pgp_hash_algorithm)
663
		xmlSetProp (node, (xmlChar*)"hash-algo", (xmlChar*) account->pgp_hash_algorithm);
654
	if (account->pgp_key)
664
	if (account->pgp_key)
655
		xmlNewTextChild (node, NULL, (xmlChar*)"key-id", (xmlChar*)account->pgp_key);
665
		xmlNewTextChild (node, NULL, (xmlChar*)"key-id", (xmlChar*)account->pgp_key);
656
666
Lines 658-663 e_account_to_xml (EAccount *account) Link Here
658
	xmlSetProp (node, (xmlChar*)"sign-default", (xmlChar*)(account->smime_sign_default ? "true" : "false"));
668
	xmlSetProp (node, (xmlChar*)"sign-default", (xmlChar*)(account->smime_sign_default ? "true" : "false"));
659
	xmlSetProp (node, (xmlChar*)"encrypt-default", (xmlChar*)(account->smime_encrypt_default ? "true" : "false"));
669
	xmlSetProp (node, (xmlChar*)"encrypt-default", (xmlChar*)(account->smime_encrypt_default ? "true" : "false"));
660
	xmlSetProp (node, (xmlChar*)"encrypt-to-self", (xmlChar*)(account->smime_encrypt_to_self ? "true" : "false"));
670
	xmlSetProp (node, (xmlChar*)"encrypt-to-self", (xmlChar*)(account->smime_encrypt_to_self ? "true" : "false"));
671
	if (account->smime_hash_algorithm && *account->smime_hash_algorithm)
672
		xmlSetProp (node, (xmlChar*)"hash-algo", (xmlChar*) account->smime_hash_algorithm);
661
	if (account->smime_sign_key)
673
	if (account->smime_sign_key)
662
		xmlNewTextChild (node, NULL, (xmlChar*)"sign-key-id", (xmlChar*)account->smime_sign_key);
674
		xmlNewTextChild (node, NULL, (xmlChar*)"sign-key-id", (xmlChar*)account->smime_sign_key);
663
	if (account->smime_encrypt_key)
675
	if (account->smime_encrypt_key)
Lines 784-789 static struct _account_info { Link Here
784
	{ /* E_ACCOUNT_RECEIPT_POLICY */ 0, TYPE_INT, G_STRUCT_OFFSET(EAccount, receipt_policy) },
796
	{ /* E_ACCOUNT_RECEIPT_POLICY */ 0, TYPE_INT, G_STRUCT_OFFSET(EAccount, receipt_policy) },
785
797
786
	{ /* E_ACCOUNT_PGP_KEY */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, pgp_key) },
798
	{ /* E_ACCOUNT_PGP_KEY */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, pgp_key) },
799
	{ /* E_ACCOUNT_PGP_HASH_ALGORITHM */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, pgp_hash_algorithm) },
787
	{ /* E_ACCOUNT_PGP_ENCRYPT_TO_SELF */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, pgp_encrypt_to_self) },
800
	{ /* E_ACCOUNT_PGP_ENCRYPT_TO_SELF */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, pgp_encrypt_to_self) },
788
	{ /* E_ACCOUNT_PGP_ALWAYS_SIGN */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, pgp_always_sign) },
801
	{ /* E_ACCOUNT_PGP_ALWAYS_SIGN */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, pgp_always_sign) },
789
	{ /* E_ACCOUNT_PGP_NO_IMIP_SIGN */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, pgp_no_imip_sign) },
802
	{ /* E_ACCOUNT_PGP_NO_IMIP_SIGN */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, pgp_no_imip_sign) },
Lines 791-796 static struct _account_info { Link Here
791
804
792
	{ /* E_ACCOUNT_SMIME_SIGN_KEY */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, smime_sign_key) },
805
	{ /* E_ACCOUNT_SMIME_SIGN_KEY */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, smime_sign_key) },
793
	{ /* E_ACCOUNT_SMIME_ENCRYPT_KEY */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, smime_encrypt_key) },
806
	{ /* E_ACCOUNT_SMIME_ENCRYPT_KEY */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, smime_encrypt_key) },
807
	{ /* E_ACCOUNT_SMIME_HASH_ALGORITHM */ 0, TYPE_STRING, G_STRUCT_OFFSET(EAccount, smime_hash_algorithm) },
794
	{ /* E_ACCOUNT_SMIME_SIGN_DEFAULT */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, smime_sign_default) },
808
	{ /* E_ACCOUNT_SMIME_SIGN_DEFAULT */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, smime_sign_default) },
795
	{ /* E_ACCOUNT_SMIME_ENCRYPT_TO_SELF */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, smime_encrypt_to_self) },
809
	{ /* E_ACCOUNT_SMIME_ENCRYPT_TO_SELF */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, smime_encrypt_to_self) },
796
	{ /* E_ACCOUNT_SMIME_ENCRYPT_DEFAULT */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, smime_encrypt_default) },
810
	{ /* E_ACCOUNT_SMIME_ENCRYPT_DEFAULT */ 0, TYPE_BOOL, G_STRUCT_OFFSET(EAccount, smime_encrypt_default) },
(-)a/libedataserver/e-account.h (+4 lines)
Lines 60-65 typedef enum _e_account_item_t { Link Here
60
	E_ACCOUNT_RECEIPT_POLICY,
60
	E_ACCOUNT_RECEIPT_POLICY,
61
61
62
	E_ACCOUNT_PGP_KEY,
62
	E_ACCOUNT_PGP_KEY,
63
	E_ACCOUNT_PGP_HASH_ALGORITHM,
63
	E_ACCOUNT_PGP_ENCRYPT_TO_SELF,
64
	E_ACCOUNT_PGP_ENCRYPT_TO_SELF,
64
	E_ACCOUNT_PGP_ALWAYS_SIGN,
65
	E_ACCOUNT_PGP_ALWAYS_SIGN,
65
	E_ACCOUNT_PGP_NO_IMIP_SIGN,
66
	E_ACCOUNT_PGP_NO_IMIP_SIGN,
Lines 67-72 typedef enum _e_account_item_t { Link Here
67
68
68
	E_ACCOUNT_SMIME_SIGN_KEY,
69
	E_ACCOUNT_SMIME_SIGN_KEY,
69
	E_ACCOUNT_SMIME_ENCRYPT_KEY,
70
	E_ACCOUNT_SMIME_ENCRYPT_KEY,
71
	E_ACCOUNT_SMIME_HASH_ALGORITHM,
70
	E_ACCOUNT_SMIME_SIGN_DEFAULT,
72
	E_ACCOUNT_SMIME_SIGN_DEFAULT,
71
	E_ACCOUNT_SMIME_ENCRYPT_TO_SELF,
73
	E_ACCOUNT_SMIME_ENCRYPT_TO_SELF,
72
	E_ACCOUNT_SMIME_ENCRYPT_DEFAULT,
74
	E_ACCOUNT_SMIME_ENCRYPT_DEFAULT,
Lines 126-131 typedef struct _EAccount { Link Here
126
	EAccountReceiptPolicy receipt_policy;
128
	EAccountReceiptPolicy receipt_policy;
127
129
128
	gchar *pgp_key;
130
	gchar *pgp_key;
131
	gchar *pgp_hash_algorithm; /* "sha1", "sha256", "sha384", "sha512" are supported now; anything else is default */
129
	gboolean pgp_encrypt_to_self;
132
	gboolean pgp_encrypt_to_self;
130
	gboolean pgp_always_sign;
133
	gboolean pgp_always_sign;
131
	gboolean pgp_no_imip_sign;
134
	gboolean pgp_no_imip_sign;
Lines 135-140 typedef struct _EAccount { Link Here
135
138
136
	gchar *smime_sign_key;
139
	gchar *smime_sign_key;
137
	gchar *smime_encrypt_key;
140
	gchar *smime_encrypt_key;
141
	gchar *smime_hash_algorithm; /* "sha1", "sha256", "sha384", "sha512" are supported now; anything else is default */
138
	gboolean smime_sign_default;
142
	gboolean smime_sign_default;
139
	gboolean smime_encrypt_to_self;
143
	gboolean smime_encrypt_to_self;
140
	gboolean smime_encrypt_default;
144
	gboolean smime_encrypt_default;

Return to bug 324785