keyutil.c: Remove stray tabs and trailing space from the list format.
[u/mdw/catacomb] / keyutil.c
index 9bfc6bc..74f6409 100644 (file)
--- a/keyutil.c
+++ b/keyutil.c
@@ -7,7 +7,7 @@
  * (c) 1999 Straylight/Edgeware
  */
 
-/*----- Licensing notice --------------------------------------------------* 
+/*----- Licensing notice --------------------------------------------------*
  *
  * This file is part of Catacomb.
  *
  * it under the terms of the GNU Library General Public License as
  * published by the Free Software Foundation; either version 2 of the
  * License, or (at your option) any later version.
- * 
+ *
  * Catacomb is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Library General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Library General Public
  * License along with Catacomb; if not, write to the Free
  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
@@ -160,17 +160,17 @@ static void setattr(key_file *f, key *k, char *v[])
 
 const struct seedalg { const char *p; grand *(*gen)(const void *, size_t); }
 seedtab[] = {
-  { "dsarand",         dsarand_create },
-  { "rmd128-mgf",  rmd128_mgfrand },
-  { "rmd160-mgf",  rmd160_mgfrand },
-  { "rmd256-mgf",  rmd256_mgfrand },
-  { "rmd320-mgf",  rmd320_mgfrand },
-  { "sha-mgf",  sha_mgfrand },
-  { "sha224-mgf",  sha224_mgfrand },
-  { "sha256-mgf",  sha256_mgfrand },
-  { "sha384-mgf",  sha384_mgfrand },
-  { "sha512-mgf",  sha512_mgfrand },
-  { "tiger-mgf",  tiger_mgfrand },
+  { "dsarand", dsarand_create },
+  { "rmd128-mgf", rmd128_mgfrand },
+  { "rmd160-mgf", rmd160_mgfrand },
+  { "rmd256-mgf", rmd256_mgfrand },
+  { "rmd320-mgf", rmd320_mgfrand },
+  { "sha-mgf", sha_mgfrand },
+  { "sha224-mgf", sha224_mgfrand },
+  { "sha256-mgf", sha256_mgfrand },
+  { "sha384-mgf", sha384_mgfrand },
+  { "sha512-mgf", sha512_mgfrand },
+  { "tiger-mgf", tiger_mgfrand },
   { 0, 0 }
 };
 
@@ -235,8 +235,12 @@ static int copyparam(keyopts *k, const char **pp)
 {
   key_filter kf;
   key_attriter i;
+  key_data *kd;
   const char *n, *v;
 
+  kf.f = KCAT_SHARE;
+  kf.m = KF_CATMASK;
+
   /* --- Quick check if no parameters supplied --- */
 
   if (!k->p)
@@ -248,16 +252,17 @@ static int copyparam(keyopts *k, const char **pp)
     key_data *kd = key_structfind(k->p->k, *pp);
     if (!kd)
       die(EXIT_FAILURE, "bad parameter key: parameter `%s' not found", *pp);
-    if ((kd->e & KF_CATMASK) != KCAT_SHARE)
+    if (!KEY_MATCH(kd, &kf))
       die(EXIT_FAILURE, "bad parameter key: subkey `%s' is not shared", *pp);
     pp++;
   }
 
   /* --- Copy over the parameters --- */
 
-  kf.f = KCAT_SHARE;
-  kf.m = KF_CATMASK;
-  key_setkeydata(k->kf, k->k, k->p->k);
+  kd = key_copydata(k->p->k, &kf);
+  assert(kd);
+  key_setkeydata(k->kf, k->k, kd);
+  key_drop(kd);
 
   /* --- Copy over attributes --- */
 
@@ -565,7 +570,7 @@ static void alg_dhparam(keyopts *k)
       qd_parse qd;
       group *g;
       const char *e;
-      
+
       if (strcmp(k->curve, "list") == 0) {
        unsigned i, w;
        LIST("Built-in prime fields", stdout, ptab[i].name, ptab[i].name);
@@ -579,11 +584,11 @@ static void alg_dhparam(keyopts *k)
       if ((g = group_prime(&dp)) == 0)
        die(EXIT_FAILURE, "invalid prime field");
       if (!(k->f & f_quiet) && (e = G_CHECK(g, &rand_global)) != 0)
-       moan("WARNING!  group check failed: %s", e);
+       moan("WARNING!  group check failed: %s", e);
       G_DESTROYGROUP(g);
       goto done;
     }
-    
+
     if (!k->bits)
       k->bits = 1024;
 
@@ -1094,7 +1099,7 @@ static int cmd_add(int argc, char *argv[])
       case 's': {
        base64_ctx b;
        dstr d = DSTR_INIT;
-       if (seed) die(EXIT_FAILURE, "seed already set"); 
+       if (seed) die(EXIT_FAILURE, "seed already set");
        base64_init(&b);
        base64_decode(&b, optarg, strlen(optarg), &d);
        base64_decode(&b, 0, 0, &d);
@@ -1102,7 +1107,7 @@ static int cmd_add(int argc, char *argv[])
        seed = optarg;
        dstr_destroy(&d);
       } break;
-       
+
       case 'n': {
        base64_ctx b;
        dstr d = DSTR_INIT;
@@ -1110,7 +1115,7 @@ static int cmd_add(int argc, char *argv[])
        unsigned n = strtoul(optarg, &p, 0);
        if (n == 0 || *p != 0 || n % 8 != 0)
          die(EXIT_FAILURE, "bad seed length `%s'", optarg);
-       if (seed) die(EXIT_FAILURE, "seed already set"); 
+       if (seed) die(EXIT_FAILURE, "seed already set");
        n /= 8;
        p = xmalloc(n);
        rand_get(RAND_GLOBAL, p, n);
@@ -1133,7 +1138,7 @@ static int cmd_add(int argc, char *argv[])
          die(EXIT_FAILURE, "bad key-id `%s'", optarg);
        kid = id;
       } break;
-       
+
       /* --- Other flags --- */
 
       case 'R':
@@ -1363,7 +1368,7 @@ static void showkeydata(key_data *k, int ind, listopts *o, dstr *d)
        fputs(", 0x", stdout); mp_writefile(k->u.e.y, stdout, 16);
        putchar('\n');
       }
-      break;      
+      break;
 
     /* --- Structured keys --- *
      *
@@ -1387,7 +1392,7 @@ static void showkeydata(key_data *k, int ind, listopts *o, dstr *d)
       }
       INDENT(ind);
       fputs("}\n", stdout);
-    } break;      
+    } break;
   }
 
 #undef INDENT
@@ -1437,10 +1442,10 @@ static void showkey(key *k, listopts *o)
 
   if (!o->v) {
     if (!(o->f & f_newline)) {
-      printf("%8s  %-20s  %-20s  %-10s  %-10s\n",
+      printf("%8s  %-20s  %-20s  %-10s  %s\n",
             "Id", "Tag", "Type", "Expire", "Delete");
     }
-    printf("%08lx  %-20s  %-20s  %-10s  %-10s\n",
+    printf("%08lx  %-20s  %-20s  %-10s  %s\n",
           (unsigned long)k->id, k->tag ? k->tag : "<none>",
           k->type, ebuf, dbuf);
     o->f |= f_newline;
@@ -1485,7 +1490,7 @@ static void showkey(key *k, listopts *o)
     showkeydata(k->k, 0, o, &d);
     dstr_destroy(&d);
   }
-    
+
   o->f |= f_newline;
 }
 
@@ -1527,7 +1532,7 @@ static int cmd_list(int argc, char *argv[])
        int e = key_readflags(optarg, &p, &o.kf.f, &o.kf.m);
        if (e || *p)
          die(EXIT_FAILURE, "bad filter string `%s'", optarg);
-      } break; 
+      } break;
       default:
        o.f |= f_bogus;
        break;
@@ -1849,7 +1854,7 @@ static int cmd_verify(int argc, char *argv[])
   doclose(&f);
   return (0);
 }
-  
+
 /* --- @cmd_comment@ --- */
 
 static int cmd_comment(int argc, char *argv[])
@@ -2013,7 +2018,7 @@ static int cmd_extract(int argc, char *argv[])
     key *k;
     for (key_mkiter(&i, &f); (k = key_next(&i)) != 0; )
       key_extract(&f, k, fp, &kf);
-  } else {    
+  } else {
     for (i = 1; i < argc; i++) {
       if ((k = key_bytag(&f, argv[i])) != 0)
        key_extract(&f, k, fp, &kf);
@@ -2140,8 +2145,8 @@ Options:\n\
   { "add", cmd_add,
     "add [-OPTIONS] TYPE [ATTR...]\n\
        Options: [-lqrLKS] [-a ALG] [-bB BITS] [-p PARAM] [-R TAG]\n\
-                [-A SEEDALG] [-s SEED] [-n BITS] [-I KEYID]\n\
-                [-e EXPIRE] [-t TAG] [-c COMMENT]", "\
+                [-A SEEDALG] [-s SEED] [-n BITS] [-I KEYID]\n\
+                [-e EXPIRE] [-t TAG] [-c COMMENT]", "\
 Options:\n\
 \n\
 -a, --algorithm=ALG    Generate keys suitable for ALG.\n\