chiark / gitweb /
server/: Make bulk crypto transforms responsible for algorithm selection.
[tripe] / server / admin.c
index b25e511e61cf1814c552b485367f0f7f1582477f..b12a3be62437184c75e6e3630bd42abd15574bf6 100644 (file)
@@ -311,6 +311,7 @@ void a_vformat(dstr *d, const char *fmt, va_list *ap)
     }
     fmt = va_arg(*ap, const char *);
   }
+  dstr_putz(d);
 
   dstr_destroy(&dd);
 }
@@ -373,7 +374,7 @@ static void a_write(admin *a, const char *status, const char *tag,
   va_end(ap);
 }
 
-/* --- @a_ok@, @a_info@, @a_fail@ --- *
+/* --- @a_ok@, @a_fail@ --- *
  *
  * Arguments:  @admin *a@ = connection
  *             @const char *fmt@ = format string
@@ -386,21 +387,32 @@ static void a_write(admin *a, const char *status, const char *tag,
 
 static void a_ok(admin *a) { a_write(a, "OK", 0, A_END); }
 
-static void a_info(admin *a, const char *fmt, ...)
+static void a_fail(admin *a, const char *fmt, ...)
 {
   va_list ap;
 
   va_start(ap, fmt);
-  a_vwrite(a, "INFO", 0, fmt, &ap);
+  a_vwrite(a, "FAIL", 0, fmt, &ap);
   va_end(ap);
 }
 
-static void a_fail(admin *a, const char *fmt, ...)
+/* --- @a_info@ --- *
+ *
+ * Arguments:  @admin *a@ = connection
+ *             @const char *fmt@ = format string
+ *             @...@ = other arguments
+ *
+ * Returns:    ---
+ *
+ * Use:                Report information to an admin client.
+ */
+
+void a_info(admin *a, const char *fmt, ...)
 {
   va_list ap;
 
   va_start(ap, fmt);
-  a_vwrite(a, "FAIL", 0, fmt, &ap);
+  a_vwrite(a, "INFO", 0, fmt, &ap);
   va_end(ap);
 }
 
@@ -1013,7 +1025,7 @@ static void a_resolved(struct hostent *h, void *v)
   admin_resop *r = v;
 
   T( trace(T_ADMIN, "admin: resop %s resolved", BGTAG(r)); )
-  TIMER;
+  QUICKRAND;
   if (!h) {
     a_bgfail(&r->bg, "resolve-error", "%s", r->addr, A_END);
     r->func(r, ARES_FAIL);
@@ -1731,33 +1743,15 @@ static void acmd_algs(admin *a, unsigned ac, char *av[])
         "hash-sz=%lu", (unsigned long)algs->h->hashsz,
         A_END);
   a_info(a,
-        "bulk-transform=%s", algs->bulk->name,
-        "bulk-overhead=%lu", (unsigned long)algs->bulk->overhead(algs),
+        "bulk-transform=%s", algs->bulk->ops->name,
+        "bulk-overhead=%lu",
+        (unsigned long)algs->bulk->ops->overhead(algs->bulk),
         A_END);
-  if (algs->c) {
-    a_info(a,
-          "cipher=%s", algs->c->name,
-          "cipher-keysz=%lu", (unsigned long)algs->cksz,
-          "cipher-blksz=%lu", (unsigned long)algs->c->blksz,
-          A_END);
-  }
+  algs->bulk->ops->alginfo(algs->bulk, a);
   a_info(a,
-        "cipher-data-limit=%lu", (unsigned long)algs->expsz,
+        "cipher-data-limit=%lu",
+        (unsigned long)algs->bulk->ops->expsz(algs->bulk),
         A_END);
-  if (algs->m) {
-    a_info(a,
-          "mac=%s", algs->m->name,
-          "mac-keysz=%lu", (unsigned long)algs->mksz,
-          "mac-tagsz=%lu", (unsigned long)algs->tagsz,
-          A_END);
-  }
-  if (algs->b) {
-    a_info(a,
-          "blkc=%.*s", strlen(algs->b->name) - 4, algs->b->name,
-          "blkc-keysz=%lu", (unsigned long)algs->bksz,
-          "blkc-blksz=%lu", (unsigned long)algs->b->blksz,
-          A_END);
-  }
   a_ok(a);
 }
 
@@ -2155,7 +2149,7 @@ static void a_line(char *p, size_t len, void *vp)
   char *av[16 + 1];
   size_t ac;
 
-  TIMER;
+  QUICKRAND;
   if (a->f & AF_DEAD)
     return;
   if (!p) {