hashsum.c: Document `--progress' in the `--help' display.
[u/mdw/catacomb] / mkpgroups
CommitLineData
d7f3f07d
MW
1#! /usr/bin/python
2
3import catacomb as C
4import mLib as M
5from sys import stdin
6
7kf = C.KeyFile('pgroups.kr', C.KOPEN_WRITE)
8
9for 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':
45c0fd36 29 break
d7f3f07d
MW
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'
42kf.save()