chiark / gitweb /
catacomb-python.h: Don't inhibit 64-bit type detection any more.
[catacomb-python] / algorithms.py
index 3aae0f0f9416064074d78d86da882e8dd08f3fa2..3ceb207b175fd4de8d7ab3c5c1401b5c790101a1 100644 (file)
@@ -29,6 +29,11 @@ ecb cbc cfb ofb counter
 streamciphers = '''
 rc4 seal
 '''.split()
+latindances = '''
+salsa20 salsa20/12 salsa20/8 xsalsa20 xsalsa20/12 xsalsa20/8
+chacha20 chacha12 chacha8 xchacha20 xchacha12 xchacha8
+'''.split()
+streamciphers += map(lambda s: s.translate(None, '/'), latindances)
 hashes = '''
 md2 md4 md5 tiger has160
 sha sha224 sha256 sha384 sha512
@@ -57,23 +62,31 @@ print
 
 print '#define PRPS(_) \\'
 for i in prps:
-  print '  _(%s, %s) \\' % (i.upper(), i)
-print '         /* end */'
-print
-
-print '#define RNGF_INT 1u'
+  print '\t_(%s, %s) \\' % (i.upper(), i)
+print '\t/* end */'
 print
 
 print '#define RNGS(_) \\'
 for i in (cross(prps, ['ofb', 'counter'])):
-  print ('  _("%(prim)s-%(mode)s", %(prim)s_keysz, ' +
-        '%(prim)s_%(mode)srand, 0) \\') % \
-        {'prim': i[0], 'mode': i[1]}
+  print ('\t_("%(prim)s-%(mode)s", %(prim)s_keysz, ' +
+         '%(prim)s_%(mode)srand, 0, 0) \\') % \
+         {'prim': i[0], 'mode': i[1]}
 for i in (cross(hashes, 'mgf')):
-  print ('  _("%(prim)s-%(mode)s", %(prim)s_%(mode)skeysz, ' +
-        '%(prim)s_%(mode)srand, 0) \\') % \
-        {'prim': i[0], 'mode': i[1]}
-print '         _("rc4", rc4_keysz, rc4_rand, 0) \\'
-print '         _("seal", seal_keysz, seal_rand, RNGF_INT) \\'
-print '         /* end */'
+  print ('\t_("%(prim)s-%(mode)s", %(prim)s_%(mode)skeysz, ' +
+         '%(prim)s_%(mode)srand, 0, 0) \\') % \
+         {'prim': i[0], 'mode': i[1]}
+print '\t_("rc4", rc4_keysz, rc4_rand, 0, 0) \\'
+print '\t_("seal", seal_keysz, seal_rand, RNGF_INT, 0) \\'
+for i in latindances:
+  for r in ['salsa20', 'xsalsa20', 'chacha', 'xchacha']:
+    if i.startswith(r):
+      root = r
+      break
+  else:
+    raise ValueError, 'failed to find root name for %s' % i
+  print ('\t_("%(name)s", %(root)s_keysz, %(id)s_rand, ' +
+         'RNGF_NONCE, %(ROOT)s_NONCESZ) \\') % \
+      {'name': i, 'id': i.translate(None, '/'),
+       'root': root, 'ROOT': root.upper()}
+print '\t/* end */'
 print