chiark / gitweb /
algorithms.c: Add a Keccak `set' method now there's upstream support.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 14 Oct 2019 00:01:05 +0000 (01:01 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 11 Apr 2020 11:56:18 +0000 (12:56 +0100)
Bump dependency on Catacomb.

algorithms.c
debian/control
setup.py
t/t-algorithms.py

index 48bd480058bc3ed69f51c9102a018cd26afc47de..be07fb7f53a749914533e264585d50ecf60be019 100644 (file)
@@ -2912,6 +2912,27 @@ end:
   return (0);
 }
 
+static PyObject *kxvikmeth_set(PyObject *me, PyObject *arg)
+{
+  kxvik_pyobj *k = (kxvik_pyobj *)me;
+  kludge64 t[25];
+  const octet *q;
+  unsigned i;
+  struct bin in;
+  size_t n;
+
+  if (!PyArg_ParseTuple(arg, "O&:set", convbin, &in)) goto end;
+  if (in.sz > 200) VALERR("out of range");
+  q = in.p; n = in.sz;
+  i = 0;
+  while (n >= 8) { LOAD64_L_(t[i], q); i++; q += 8; n -= 8; }
+  if (n) VALERR("not 64-bit aligned");
+  keccak1600_set(&k->s, t, i);
+  RETURN_ME;
+end:
+  return (0);
+}
+
 static PyObject *kxvikmeth_extract(PyObject *me, PyObject *arg)
 {
   kxvik_pyobj *k = (kxvik_pyobj *)me;
@@ -2951,6 +2972,7 @@ static const PyMethodDef kxvik_pymethods[] = {
 #define METHNAME(func) kxvikmeth_##func
   NAMETH(copy,         "KECCAK.copy() -> KECCAK'")
   METH (mix,           "KECCAK.mix(DATA)")
+  METH (set,           "KECCAK.set(DATA)")
   METH (extract,       "KECCAK.extract(NOCTETS)")
   NAMETH(step,         "KECCAK.step()")
 #undef METHNAME
index 2957d2e43d64854d9133c21fd79cf3c83272fdfb..66a2caad7693f953f9100dcc7036ed6de4c6f2f0 100644 (file)
@@ -6,7 +6,7 @@ XS-Python3-Version: >= 3.0
 Maintainer: Mark Wooding <mdw@distorted.org.uk>
 Build-Depends: debhelper (>= 10), dh-python, pkg-config,
        python (>= 2.6.6-3~), python-all-dev, python3-all-dev,
-       mlib-dev (>= 2.4.99~), catacomb-dev (>= 2.5.0)
+       mlib-dev (>= 2.4.99~), catacomb-dev (>= 2.5.99~)
 Standards-Version: 3.8.0
 
 Package: python-catacomb
index 87a321c894d2a7aefbbb9f17a13b5117e90341c3..045ee3e172af683a65f240eff75f673706e6682d 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@
 import distutils.core as DC
 import mdwsetup as MS
 
-MS.pkg_config('catacomb', '2.5.0')
+MS.pkg_config('catacomb', '2.5.99~')
 MS.pkg_config('mLib', '2.4.99~')
 
 cat = DC.Extension('catacomb._base',
index 593e6cf2e9524c21611e37b397b83261dbc58d35..455e947f245b8053d0e583c01b379a010a566084 100644 (file)
@@ -746,11 +746,11 @@ class TestKeccak (HashBufferTestMixin):
     st1.mix(m0).step()
     me.assertNotEqual(st0.extract(32), st1.extract(32))
 
-    ## Check state copying.
+    ## Check state copying and `mix' vs `set'.
     st1 = st0.copy()
     mask = st1.extract(len(m1))
     st0.mix(m1)
-    st1.mix(m1)
+    st1.set(m1 ^ mask)
     me.assertEqual(st0.extract(32), st1.extract(32))
 
     ## Check error conditions.
@@ -758,6 +758,9 @@ class TestKeccak (HashBufferTestMixin):
     me.assertRaises(ValueError, st0.extract, 201)
     st0.mix(T.span(200))
     me.assertRaises(ValueError, st0.mix, T.span(201))
+    st0.set(T.span(200))
+    me.assertRaises(ValueError, st0.set, T.span(201))
+    me.assertRaises(ValueError, st0.set, T.span(199))
 
   def check_shake(me, xcls, c, done_matches_xof = True):
     """