chiark / gitweb /
catacomb-python.h: Formatting fix.
[catacomb-python] / algorithms.py
CommitLineData
d7ab1bab 1## -*-python-*-
2
3def cross(*seq):
4 if not len(seq):
5 return [(),]
6 x = seq[0]
7 if type(x) is not tuple and type(x) is not list:
8 x = x,
9 r = []
10 for i in x:
11 for j in cross(*seq[1:]):
12 r.append((i,) + j)
13 return r
14
15prps = '''
16des desx des3 mars
17idea safer safersk
18blowfish twofish
19tea xtea
20rc2 rc5
21skipjack
22cast128 cast256
23square rijndael rijndael192 rijndael256
24serpent noekeon
25'''.split()
26pmodes = '''
27ecb cbc cfb ofb counter
28'''.split()
29streamciphers = '''
30rc4 seal
31'''.split()
32hashes = '''
33md2 md4 md5 tiger has160
34sha sha224 sha256 sha384 sha512
35rmd128 rmd160 rmd256 rmd320
36whirlpool whirlpool256
37'''.split()
38hmodes = '''
39mgf hmac
40'''.split()
41
42print '/* algorithms.h [generated] */'
43print
44
45for i in prps:
46 print '#include <catacomb/%s.h>' % i
47 for j in pmodes:
48 print '#include <catacomb/%s-%s.h>' % (i, j)
49for i in streamciphers:
b2687a0a 50 print '#include <catacomb/%s.h>' % i
d7ab1bab 51print
52for i in hashes:
53 print '#include <catacomb/%s.h>' % i
54 for j in hmodes:
55 print '#include <catacomb/%s-%s.h>' % (i, j)
56print
57
03ed9abb 58print '#define PRPS(_) \\'
d7ab1bab 59for i in prps:
03ed9abb 60 print ' _(%s, %s) \\' % (i.upper(), i)
b2687a0a 61print ' /* end */'
d7ab1bab 62print
63
03ed9abb
MW
64print '#define RNGF_INT 1u'
65print
66
67print '#define RNGS(_) \\'
68for i in (cross(prps, ['ofb', 'counter'])):
69 print (' _("%(prim)s-%(mode)s", %(prim)s_keysz, ' +
b2687a0a
MW
70 '%(prim)s_%(mode)srand, 0) \\') % \
71 {'prim': i[0], 'mode': i[1]}
03ed9abb
MW
72for i in (cross(hashes, 'mgf')):
73 print (' _("%(prim)s-%(mode)s", %(prim)s_%(mode)skeysz, ' +
b2687a0a
MW
74 '%(prim)s_%(mode)srand, 0) \\') % \
75 {'prim': i[0], 'mode': i[1]}
76print ' _("rc4", rc4_keysz, rc4_rand, 0) \\'
77print ' _("seal", seal_keysz, seal_rand, RNGF_INT) \\'
78print ' /* end */'
d7ab1bab 79print