7 if type(x) is not tuple and type(x) is not list:
11 for j in cross(*seq[1:]):
23 square rijndael rijndael192 rijndael256
27 ecb cbc cfb ofb counter
35 salsa20 salsa20/12 salsa20/8
36 salsa20-ietf salsa20/12-ietf salsa20/8-ietf
37 xsalsa20 xsalsa20/12 xsalsa20/8
38 chacha20 chacha12 chacha8
39 chacha20-ietf chacha12-ietf chacha8-ietf
40 xchacha20 xchacha12 xchacha8
42 streamciphers += map(lambda s: s.translate(None, '/'), latindances)
44 md2 md4 md5 tiger has160
45 sha sha224 sha256 sha512/224 sha512/256 sha384 sha512
46 rmd128 rmd160 rmd256 rmd320
47 whirlpool whirlpool256
48 sha3-224 sha3-256 sha3-384 sha3-512
54 print '/* algorithms.h [generated] */'
58 print '#include <catacomb/%s.h>' % i.replace('/', '-')
60 print '#include <catacomb/%s-%s.h>' % (i.replace('/', '-'), j)
61 for i in streamciphers:
62 print '#include <catacomb/%s.h>' % i.replace('/', '-')
65 print '#include <catacomb/%s.h>' % i.replace('/', '-')
67 print '#include <catacomb/%s-%s.h>' % (i.replace('/', '-'), j)
70 print '#define PRPS(_) \\'
72 print '\t_(%s, %s) \\' % (i.upper(), i)
76 print '#define RNGS(_) \\'
77 for i in (cross(prps, ['ofb', 'counter'])):
78 print ('\t_("%(prim)s-%(mode)s", %(primid)s_keysz, ' +
79 '%(primid)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
80 {'prim': i[0], 'mode': i[1],
81 'primid': i[0].replace('-', '_').replace('/', '_')}
82 for i in (cross(hashes, 'mgf')):
83 print ('\t_("%(prim)s-%(mode)s", %(primid)s_%(mode)skeysz, ' +
84 '%(primid)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
85 {'prim': i[0], 'mode': i[1],
86 'primid': i[0].replace('-', '_').replace('/', '_')}
87 print '\t_("rc4", rc4_keysz, rc4_rand, 0, 0) \\'
88 print '\t_("seal", seal_keysz, seal_rand, RNG_SEAL, 0) \\'
90 for r in ['salsa20', 'xsalsa20', 'chacha', 'xchacha']:
95 raise ValueError, 'failed to find root name for %s' % i
96 if i.endswith('-ietf'): root += '_ietf'
97 print ('\t_("%(name)s", %(root)s_keysz, %(id)s_rand, ' +
98 'RNG_LATIN, %(ROOT)s_NONCESZ) \\') % \
99 {'name': i, 'id': i.translate(None, '/').replace('-', '_'),
100 'root': root, 'ROOT': root.upper()}
102 print ('\t_("shake%(w)d", shake%(w)d_keysz, cshake%(w)d_rand, ' +
103 'RNG_SHAKE, 0) \\') % \
105 print ('\t_("kmac%(w)d", kmac%(w)d_keysz, kmac%(w)d_rand, ' +
106 'RNG_KMAC, 0) \\') % \