comparison make_verify.py @ 2:e5383cd558e5

fuzzer-verify corpus
author Matt Johnston <matt@ucc.asn.au>
date Fri, 26 May 2017 00:20:12 +0800
parents
children
comparison
equal deleted inserted replaced
1:60619c0e8ac6 2:e5383cd558e5
1 #!/usr/bin/env python3
2
3 """ takes a pubkey, turns it into fuzzer-verify input """
4
5 import sys
6 import struct
7 import re
8 import binascii
9
10 BLOB_RE=re.compile(r'(?:ssh-rsa|ecdsa-\S+|ssh-dss) ([a-zA-Z0-9/+=]+)')
11
12 inp = sys.stdin.read()
13 b64blob = BLOB_RE.search(inp).groups(1)[0]
14
15 blob = binascii.a2b_base64(b64blob)
16
17 sigtypelen = struct.unpack('>I', blob[:4])[0]
18 sigtype = blob[4:4+sigtypelen]
19 print("Type is %s" % sigtype, file=sys.stderr)
20
21 # a bodgy key followed by signature
22 # eg rfc4253
23 # string "ssh-rsa"
24 # string rsa_signature_blob
25 sys.stdout.buffer.write(blob)
26 sys.stdout.buffer.write(struct.pack('>I', sigtypelen))
27 sys.stdout.buffer.write(sigtype)
28 sys.stdout.buffer.write(struct.pack('>II', 4, 20))
29