]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - keyindex.c
Make keyd background itself by default
[onak.git] / keyindex.c
index c708aa48642aada710f8589de1ae40883958c865..0cc9edd89e1bb20da6966646f6837035ea06b5c0 100644 (file)
@@ -1,9 +1,7 @@
 /*
  * keyindex.c - Routines to list an OpenPGP key.
  *
- * Jonathan McDowell <noodles@earth.li>
- *
- * Copyright 2002-2005 Project Purple
+ * Copyright 2002-2008 Jonathan McDowell <noodles@earth.li>
  */
 
 #include <inttypes.h>
@@ -89,9 +87,9 @@ int list_uids(uint64_t keyid, struct openpgp_signedpacket_list *uids,
                } else if (uids->packet->tag == 17) {
                        printf("                                ");
                        if (html) {
-                               printf("<img src=\"lookup?op=photo&search=0x%"
-                                       PRIX64 "&idx=%d\" alt=\"[photo id]\">"
-                                       "\n",
+                               printf("<img src=\"lookup?op=photo&search="
+                                       "0x%016" PRIX64 "&idx=%d\" alt=\""
+                                       "[photo id]\">\n",
                                        keyid,
                                        imgindx);
                                imgindx++;
@@ -203,6 +201,7 @@ int key_index(struct openpgp_publickey *keys, bool verbose, bool fingerprint,
        struct tm                               *created = NULL;
        time_t                                   created_time = 0;
        int                                      type = 0;
+       char                                     typech;
        int                                      length = 0;
        char                                     buf[1024];
        uint64_t                                 keyid;
@@ -237,13 +236,30 @@ int key_index(struct openpgp_publickey *keys, bool verbose, bool fingerprint,
                
                keyid = get_keyid(keys);
 
+               switch (type) {
+               case 1:
+                       typech = 'R';
+                       break;
+               case 16:
+                       typech = 'g';
+                       break;
+               case 17:
+                       typech = 'D';
+                       break;
+               case 20:
+                       typech = 'G';
+                       break;
+               default:
+                       typech = '?';
+                       break;
+               }
+
                if (html) {
                        printf("pub  %5d%c/<a href=\"lookup?op=get&"
                                "search=%016" PRIX64 "\">%08" PRIX64
                                "</a> %04d/%02d/%02d ",
                                length,
-                               (type == 1) ? 'R' : ((type == 16) ? 'g' : 
-                                       ((type == 17) ? 'D' : '?')),
+                               typech,
                                keyid,
                                keyid & 0xFFFFFFFF,
                                created->tm_year + 1900,
@@ -252,8 +268,7 @@ int key_index(struct openpgp_publickey *keys, bool verbose, bool fingerprint,
                } else {
                        printf("pub  %5d%c/%08" PRIX64 " %04d/%02d/%02d ",
                                length,
-                               (type == 1) ? 'R' : ((type == 16) ? 'g' : 
-                                       ((type == 17) ? 'D' : '?')),
+                               typech,
                                keyid & 0xFFFFFFFF,
                                created->tm_year + 1900,
                                created->tm_mon + 1,
@@ -320,6 +335,7 @@ int mrkey_index(struct openpgp_publickey *keys)
        int                                      i = 0;
        size_t                                   fplength = 0;
        unsigned char                            fp[20];
+       int                                      c;
 
        while (keys != NULL) {
                created_time = (keys->publickey->data[1] << 24) +
@@ -363,9 +379,20 @@ int mrkey_index(struct openpgp_publickey *keys)
                         curuid = curuid->next) {
                
                        if (curuid->packet->tag == 13) {
-                               printf("uid:%.*s\n",
-                                       (int) curuid->packet->length,
-                                       curuid->packet->data);
+                               printf("uid:");
+                               for (i = 0; i < (int) curuid->packet->length;
+                                               i++) {
+                                       c = curuid->packet->data[i];
+                                       if (c == '%') {
+                                               putchar('%');
+                                               putchar(c);
+                                       } else if (c == ':' || c > 127) {
+                                               printf("%%%X", c);
+                                       } else {
+                                               putchar(c);
+                                       }
+                               }
+                               printf("\n");
                        }
                }
                keys = keys->next;