view 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
line wrap: on
line source

#!/usr/bin/env python3

""" takes a pubkey, turns it into fuzzer-verify input """

import sys
import struct
import re
import binascii

BLOB_RE=re.compile(r'(?:ssh-rsa|ecdsa-\S+|ssh-dss) ([a-zA-Z0-9/+=]+)')

inp = sys.stdin.read()
b64blob = BLOB_RE.search(inp).groups(1)[0]

blob = binascii.a2b_base64(b64blob)

sigtypelen = struct.unpack('>I', blob[:4])[0]
sigtype = blob[4:4+sigtypelen]
print("Type is %s" % sigtype, file=sys.stderr)

# a bodgy key followed by signature
# eg rfc4253
#      string    "ssh-rsa"
#      string    rsa_signature_blob
sys.stdout.buffer.write(blob)
sys.stdout.buffer.write(struct.pack('>I', sigtypelen))
sys.stdout.buffer.write(sigtype)
sys.stdout.buffer.write(struct.pack('>II', 4, 20))