7f31e604db30fa6bc19230228a46ff5be603c740
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
34 salsa20 salsa20/12 salsa20/8
35 salsa20-ietf salsa20/12-ietf salsa20/8-ietf
36 xsalsa20 xsalsa20/12 xsalsa20/8
37 chacha20 chacha12 chacha8
38 chacha20-ietf chacha12-ietf chacha8-ietf
39 xchacha20 xchacha12 xchacha8
41 streamciphers
+= map(lambda s
: s
.translate(None, '/'), latindances
)
43 md2 md4 md5 tiger has160
44 sha sha224 sha256 sha512/224 sha512/256 sha384 sha512
45 rmd128 rmd160 rmd256 rmd320
46 whirlpool whirlpool256
47 sha3-224 sha3-256 sha3-384 sha3-512
53 print '/* algorithms.h [generated] */'
57 print '#include <catacomb/%s.h>' % i
.replace('/', '-')
59 print '#include <catacomb/%s-%s.h>' %
(i
.replace('/', '-'), j
)
60 for i
in streamciphers
:
61 print '#include <catacomb/%s.h>' % i
.replace('/', '-')
64 print '#include <catacomb/%s.h>' % i
.replace('/', '-')
66 print '#include <catacomb/%s-%s.h>' %
(i
.replace('/', '-'), j
)
69 print '#define PRPS(_) \\'
71 print '\t_(%s, %s) \\' %
(i
.upper(), i
)
75 print '#define RNGS(_) \\'
76 for i
in (cross(prps
, ['ofb', 'counter'])):
77 print ('\t_("%(prim)s-%(mode)s", %(primid)s_keysz, ' +
78 '%(primid)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
79 {'prim': i
[0], 'mode': i
[1],
80 'primid': i
[0].replace('-', '_').replace('/', '_')}
81 for i
in (cross(hashes
, 'mgf')):
82 print ('\t_("%(prim)s-%(mode)s", %(primid)s_%(mode)skeysz, ' +
83 '%(primid)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
84 {'prim': i
[0], 'mode': i
[1],
85 'primid': i
[0].replace('-', '_').replace('/', '_')}
86 print '\t_("rc4", rc4_keysz, rc4_rand, 0, 0) \\'
87 print '\t_("seal", seal_keysz, seal_rand, RNG_SEAL, 0) \\'
89 for r
in ['salsa20', 'xsalsa20', 'chacha', 'xchacha']:
94 raise ValueError, 'failed to find root name for %s' % i
95 if i
.endswith('-ietf'): root
+= '_ietf'
96 print ('\t_("%(name)s", %(root)s_keysz, %(id)s_rand, ' +
97 'RNG_LATIN, %(ROOT)s_NONCESZ) \\') % \
98 {'name': i
, 'id': i
.translate(None, '/').replace('-', '_'),
99 'root': root
, 'ROOT': root
.upper()}
101 print ('\t_("shake%(w)d", shake%(w)d_keysz, cshake%(w)d_rand, ' +
102 'RNG_SHAKE, 0) \\') % \
104 print ('\t_("kmac%(w)d", kmac%(w)d_keysz, kmac%(w)d_rand, ' +
105 'RNG_KMAC, 0) \\') % \