aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2002-05-10 10:42:45 +0000
committerWerner Koch <[email protected]>2002-05-10 10:42:45 +0000
commitfe2e3af237479a6c96237fd316cfcbdfeeba24cf (patch)
tree65d58e40e368401408fe8e6c816c7c8eee7cf675
parent2002-05-09 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-fe2e3af237479a6c96237fd316cfcbdfeeba24cf.tar.gz
gpgme-fe2e3af237479a6c96237fd316cfcbdfeeba24cf.zip
* key.h (gpgme_key_s): Add OTRUST.
* keylist.c (set_ownertrust): New. (keylist_colon_handler): Get the ownertrust value * key.c (gpgme_key_get_string_attr,gpgme_key_get_ulong_attr): Return that value.
-rw-r--r--gpgme/ChangeLog8
-rw-r--r--gpgme/key.c14
-rw-r--r--gpgme/key.h1
-rw-r--r--gpgme/keylist.c18
4 files changed, 39 insertions, 2 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 0696272e..fc030153 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,3 +1,11 @@
+2002-05-10 Werner Koch <[email protected]>
+
+ * key.h (gpgme_key_s): Add OTRUST.
+ * keylist.c (set_ownertrust): New.
+ (keylist_colon_handler): Get the ownertrust value
+ * key.c (gpgme_key_get_string_attr,gpgme_key_get_ulong_attr):
+ Return that value.
+
2002-05-08 Marcus Brinkmann <[email protected]>
* w32-util.c: New static variable GET_PATH_LOCK.
diff --git a/gpgme/key.c b/gpgme/key.c
index 0b3b787f..43472dca 100644
--- a/gpgme/key.c
+++ b/gpgme/key.c
@@ -887,8 +887,15 @@ gpgme_key_get_string_attr (GpgmeKey key, GpgmeAttr what,
case GPGME_ATTR_EXPIRE:
/* Use another get function. */
break;
- case GPGME_ATTR_OTRUST:
- val = "[fixme]";
+ case GPGME_ATTR_OTRUST:
+ switch (key->otrust)
+ {
+ case GPGME_VALIDITY_NEVER: val = "n"; break;
+ case GPGME_VALIDITY_MARGINAL: val = "m"; break;
+ case GPGME_VALIDITY_FULL: val = "f"; break;
+ case GPGME_VALIDITY_ULTIMATE: val = "u"; break;
+ default: val = "?"; break;
+ }
break;
case GPGME_ATTR_USERID:
for (u = key->uids; u && idx; u = u->next, idx--)
@@ -1041,6 +1048,9 @@ gpgme_key_get_ulong_attr (GpgmeKey key, GpgmeAttr what,
if (u)
val = u->validity;
break;
+ case GPGME_ATTR_OTRUST:
+ val = key->otrust;
+ break;
case GPGME_ATTR_IS_SECRET:
val = !!key->secret;
break;
diff --git a/gpgme/key.h b/gpgme/key.h
index bc00f5ff..39a13161 100644
--- a/gpgme/key.h
+++ b/gpgme/key.h
@@ -62,6 +62,7 @@ struct gpgme_key_s {
char *issuer_serial; /* malloced string used only with X.509 */
char *issuer_name; /* ditto */
char *chain_id; /* ditto */
+ GpgmeValidity otrust; /* only used with OpenPGP */
struct subkey_s keys;
struct user_id_s *uids;
};
diff --git a/gpgme/keylist.c b/gpgme/keylist.c
index 57a89809..a04300a0 100644
--- a/gpgme/keylist.c
+++ b/gpgme/keylist.c
@@ -151,6 +151,23 @@ set_subkey_capability ( struct subkey_s *k, const char *s)
}
}
+static void
+set_ownertrust (GpgmeKey key, const char *s)
+{
+ /* Look at letters and stop at the first digit. */
+ for (; *s && !my_isdigit (*s); s++)
+ {
+ switch (*s)
+ {
+ case 'n': key->otrust = GPGME_VALIDITY_NEVER; break;
+ case 'm': key->otrust = GPGME_VALIDITY_MARGINAL; break;
+ case 'f': key->otrust = GPGME_VALIDITY_FULL; break;
+ case 'u': key->otrust = GPGME_VALIDITY_ULTIMATE; break;
+ default : key->otrust = GPGME_VALIDITY_UNKNOWN; break;
+ }
+ }
+}
+
/* Note: We are allowed to modify LINE. */
static void
@@ -312,6 +329,7 @@ keylist_colon_handler (GpgmeCtx ctx, char *line)
}
break;
case 9: /* ownertrust */
+ set_ownertrust (key, p);
break;
case 10: /* not used for gpg due to --fixed-list-mode option
but gpgsm stores the issuer name */