X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/catacomb-python/blobdiff_plain/b2687a0a4b3c5e45cad7c5815a6d3805bfc8d4f1..de3b64326f850d72b0cbbf269e9fa98dd4c093eb:/algorithms.py diff --git a/algorithms.py b/algorithms.py index 3aae0f0..3ceb207 100644 --- a/algorithms.py +++ b/algorithms.py @@ -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