utils/gcm-ref (poly64_mul_simple): Pad v based on the length of v.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 16 Jan 2024 13:36:33 +0000 (13:36 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 16 Jan 2024 13:44:00 +0000 (13:44 +0000)
Not the already-padded length of u, which doesn't make any sense.  Now
we actually calculate 96-bit products correctly using the `poly64'
multiplication machinery.

utils/gcm-ref

index ec25bb8..0367241 100755 (executable)
@@ -281,7 +281,7 @@ def poly64_mul_simple(u, v, presfn, wd, dispwd, mulwd, uwhat, vwhat):
   ## straightforward except for the 96-bit case, where we end up with two
   ## short pieces which we pad at the beginning.
   if uw%mulwd: pad = (-uw)%mulwd; u += C.ByteString.zero(pad); uw += pad
-  if vw%mulwd: pad = (-uw)%mulwd; v += C.ByteString.zero(pad); vw += pad
+  if vw%mulwd: pad = (-vw)%mulwd; v += C.ByteString.zero(pad); vw += pad
   uu = split_gf(u, mulwd)
   vv = split_gf(v, mulwd)