symm/seal.c: Fix IV handling through `gcipher' interface.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 22 Dec 2014 20:32:58 +0000 (20:32 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 22 Mar 2015 01:02:46 +0000 (01:02 +0000)
  * Read the IV as octets (big-endian) rather than as a machine word.

  * Advertise a `block size' of 4 octets.

This is a compatibility break, but I don't think anyone was using SEAL,
and it was nearly impossible to use correctly through this interface
anyway.

symm/seal.c

index da9d084..57cfc10 100644 (file)
@@ -413,8 +413,8 @@ static void gencrypt(gcipher *c, const void *s, void *t, size_t sz)
 static void gsetiv(gcipher *c, const void *iv)
 {
   gctx *g = (gctx *)c;
-  uint32 n = *(const uint32 *)iv;
-  seal_initctx(&g->cc, &g->k, n);
+  const octet *ivp = iv;
+  seal_initctx(&g->cc, &g->k, LOAD32(ivp));
 }
 
 static void gdestroy(gcipher *c)
@@ -430,7 +430,7 @@ static const gcipher_ops gops = {
 };
 
 const gccipher seal = {
-  "seal", seal_keysz, 0,
+  "seal", seal_keysz, 4,
   ginit
 };