keyutil.c: Remove stray tabs and trailing space from the list format.
[u/mdw/catacomb] / mkpgroups
1 #! /usr/bin/python
2
3 import catacomb as C
4 import mLib as M
5 from sys import stdin
6
7 kf = C.KeyFile('pgroups.kr', C.KOPEN_WRITE)
8
9 for line in stdin:
10 line = line.strip()
11 if line == '' or (line.startswith('#') and not line.startswith('#:')):
12 continue
13 F = line.split()
14 if F[0] == 'group':
15 name = F[1]
16 if not name.startswith('catacomb'):
17 continue
18 def snarf(what):
19 F = stdin.next().split()
20 assert F[0] == what
21 return F[1]
22 p = C.MP(snarf('p'))
23 q = C.MP(snarf('q'))
24 g = C.MP(snarf('g'))
25 ff = []
26 while True:
27 F = stdin.next().split()
28 if not F or F[0] != '#:factor':
29 break
30 ff.append(C.MP(F[1]))
31 seed = C.rmd160().hash(name).done()
32 k = kf.newkey(C.ReadBuffer(seed).getu32(), 'dh-param')
33 k.tag = name
34 k.data = C.KeyDataStructured({
35 'p': C.KeyDataMP(p, 'shared'),
36 'q': C.KeyDataMP(q, 'shared'),
37 'g': C.KeyDataMP(g, 'shared')
38 })
39 k.attr['factor'] = ', '.join([f.tostring() for f in ff])
40 k.attr['genseed'] = M.base64_encode(seed)
41 k.attr['seedalg'] = 'rmd160-mgf'
42 kf.save()