Added PKA stuff

This commit is contained in:
Werner Koch 2006-01-03 18:31:48 +00:00
parent 1fc25af357
commit 3c1c9ed572
5 changed files with 28 additions and 11 deletions

4
NEWS
View File

@ -21,8 +21,7 @@ Noteworthy changes in version 1.1.1 (unreleased)
* New status codes GPGME_PKA_TRUST_GOOD and GPGME_PKA_TRUST_BAD. * New status codes GPGME_PKA_TRUST_GOOD and GPGME_PKA_TRUST_BAD.
They are analyzed by the verify handlers and made available in the They are analyzed by the verify handlers and made available in the
new PKA_TRUST field of the signature result structure. new PKA_TRUST and PKA_ADDRESS fields of the signature result structure.
* Interface changes relative to the 1.1.0 release: * Interface changes relative to the 1.1.0 release:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -32,6 +31,7 @@ gpgme_free NEW
GPGME_STATUS_PKA_TRUST_BAD NEW GPGME_STATUS_PKA_TRUST_BAD NEW
GPGME_STATUS_PKA_TRUST_GOOD NEW GPGME_STATUS_PKA_TRUST_GOOD NEW
gpgme_signature_t EXTENDED: New field pka_trust. gpgme_signature_t EXTENDED: New field pka_trust.
gpgme_signature_t EXTENDED: New field pka_address.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -25,7 +25,7 @@ min_automake_version="1.9.3"
# Version number: Remember to change it immediately *after* a release. # Version number: Remember to change it immediately *after* a release.
# Make sure to run "svn up" before a "make dist". # Make sure to run "svn up" before a "make dist".
AC_INIT(gpgme, 1.2.0-cvs, [bug-gpgme@gnupg.org]) AC_INIT(gpgme, 1.1.1-cvs, [bug-gpgme@gnupg.org])
# LT Version numbers, remember to change them just *before* a release. # LT Version numbers, remember to change them just *before* a release.
# (Code changed: REVISION++) # (Code changed: REVISION++)
# (Interfaces added/removed/changed: CURRENT++, REVISION=0) # (Interfaces added/removed/changed: CURRENT++, REVISION=0)

View File

@ -8,11 +8,17 @@
* w32-glib-io.c (find_channel): Set channel to unbuffered. * w32-glib-io.c (find_channel): Set channel to unbuffered.
(_gpgme_io_select): Fix debug output. (_gpgme_io_select): Fix debug output.
2005-12-23 Werner Koch <wk@g10code.com>
* gpgme.h (struct _gpgme_signature): Append field PKA_ADDRESS.
* verify.c (release_op_data, _gpgme_verify_status_handler): Set
this field.
2005-12-20 Werner Koch <wk@g10code.com> 2005-12-20 Werner Koch <wk@g10code.com>
* gpgme.h (gpgme_status_code_t): Added GPGME_STATUS_PKA_TRUST_BAD * gpgme.h (gpgme_status_code_t): Added GPGME_STATUS_PKA_TRUST_BAD
and GPGME_STATUS_PKA_TRUST_GOOD. and GPGME_STATUS_PKA_TRUST_GOOD.
(gpgme_signature_t): New field pka_trust. (struct _gpgme_signature): New field pka_trust.
* verify.c (_gpgme_verify_status_handler): Set pka_trust. * verify.c (_gpgme_verify_status_handler): Set pka_trust.
2005-12-06 Werner Koch <wk@g10code.com> 2005-12-06 Werner Koch <wk@g10code.com>

View File

@ -72,7 +72,7 @@ extern "C" {
AM_PATH_GPGME macro) check that this header matches the installed AM_PATH_GPGME macro) check that this header matches the installed
library. Warning: Do not edit the next line. configure will do library. Warning: Do not edit the next line. configure will do
that for you! */ that for you! */
#define GPGME_VERSION "1.2.0-cvs" #define GPGME_VERSION "1.1.1-cvs"
@ -1334,6 +1334,9 @@ struct _gpgme_signature
/* The hash algorithm used to create the signature. */ /* The hash algorithm used to create the signature. */
gpgme_hash_algo_t hash_algo; gpgme_hash_algo_t hash_algo;
/* The mailbox from the PKA information or NULL. */
char *pka_address;
}; };
typedef struct _gpgme_signature *gpgme_signature_t; typedef struct _gpgme_signature *gpgme_signature_t;

View File

@ -64,6 +64,8 @@ release_op_data (void *hook)
if (sig->fpr) if (sig->fpr)
free (sig->fpr); free (sig->fpr);
if (sig->pka_address)
free (sig->pka_address);
free (sig); free (sig);
sig = next; sig = next;
} }
@ -588,6 +590,7 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
void *hook; void *hook;
op_data_t opd; op_data_t opd;
gpgme_signature_t sig; gpgme_signature_t sig;
char *end;
err = _gpgme_op_data_lookup (ctx, OPDATA_VERIFY, &hook, -1, NULL); err = _gpgme_op_data_lookup (ctx, OPDATA_VERIFY, &hook, -1, NULL);
opd = hook; opd = hook;
@ -654,10 +657,15 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
case GPGME_STATUS_PKA_TRUST_BAD: case GPGME_STATUS_PKA_TRUST_BAD:
case GPGME_STATUS_PKA_TRUST_GOOD: case GPGME_STATUS_PKA_TRUST_GOOD:
opd->only_newsig_seen = 0; opd->only_newsig_seen = 0;
if (sig && !sig->pka_trust) /* Check that we only get one of these status codes per
signature; if not the crypto backend misbehaves. */
if (!sig || sig->pka_trust || sig->pka_address)
return gpg_error (GPG_ERR_INV_ENGINE);
sig->pka_trust = code == GPGME_STATUS_PKA_TRUST_GOOD? 2 : 1; sig->pka_trust = code == GPGME_STATUS_PKA_TRUST_GOOD? 2 : 1;
/* FIXME: We should set the mailbox which is the argument to end = strchr (args, ' ');
these status codes into a new field. */ if (end)
*end = 0;
sig->pka_address = strdup (args);
break; break;
case GPGME_STATUS_ERROR: case GPGME_STATUS_ERROR: