12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/usr/bin/env python3
- import sys
- assert sys.version_info[:2] >= (3,0), "This is Python 3 code"
- def generate():
- import hashlib
- print("""\
- # DO NOT EDIT DIRECTLY! Autogenerated by agenttestgen.py
- #
- # To regenerate, run
- # python3 agenttestgen.py > agenttestdata.py
- #
- # agenttestgen.py depends on the testcrypt system, so you must also
- # have built testcrypt in the parent directory, or else set
- # PUTTY_TESTCRYPT to point at a working implementation of it.
- """)
- from testcrypt import (rsa_generate, dsa_generate, ecdsa_generate,
- eddsa_generate, random_clear, random_queue,
- ssh_key_public_blob, ssh_key_openssh_blob,
- ssh_key_sign, rsa1_generate, rsa_ssh1_encrypt,
- rsa_ssh1_public_blob, rsa_ssh1_private_blob_agent,
- mp_from_bytes_be)
- from agenttest import (Key2, TestSig2, test_message_to_sign,
- Key1, test_session_id)
- import ssh
- keygen2 = [
- ('RSA-1024', lambda: rsa_generate(1024, False),
- (ssh.SSH_AGENT_RSA_SHA2_256, ssh.SSH_AGENT_RSA_SHA2_512)),
- ('DSA-1024', lambda: dsa_generate(1024)),
- ('ECDSA-p256', lambda: ecdsa_generate(256)),
- ('Ed25519', lambda: eddsa_generate(256)),
- ]
- keys2 = []
- for record in keygen2:
- if len(record) == 2:
- record += ((),)
- comment, genfn, flaglist = record
- flaglist = (0,) + flaglist
- random_clear()
- random_queue(b''.join(hashlib.sha512('{}{:d}'.format(comment, j)
- .encode('ASCII')).digest()
- for j in range(1000)))
- key = genfn()
- sigs = [TestSig2(flags, ssh_key_sign(key, test_message_to_sign, flags))
- for flags in flaglist]
- keys2.append(Key2(comment.encode("ASCII"),
- ssh_key_public_blob(key),
- sigs,
- ssh_key_openssh_blob(key)))
- print("def key2examples(Key2, TestSig2):\n return {!r}".format(keys2))
- keygen1 = [
- ('RSA-1024a', 1024),
- ('RSA-1024b', 1024),
- ('RSA-768c', 768),
- ('RSA-768d', 768),
- ]
- keys1 = []
- for comment, bits in keygen1:
- random_clear()
- random_queue(b''.join(hashlib.sha512('{}{:d}'.format(comment, j)
- .encode('ASCII')).digest()
- for j in range(1000)))
- key = rsa1_generate(bits)
- preimage = b'Test128BitRSA1ChallengeCleartext'
- assert len(preimage) == 32
- challenge_bytes = rsa_ssh1_encrypt(preimage, key)
- assert len(challenge_bytes) > 0
- challenge = int(mp_from_bytes_be(challenge_bytes))
- response = hashlib.md5(preimage + test_session_id).digest()
- keys1.append(Key1(comment.encode("ASCII"),
- rsa_ssh1_public_blob(key, 'exponent_first'),
- challenge, response,
- rsa_ssh1_private_blob_agent(key)))
- print("def key1examples(Key1):\n return {!r}".format(keys1))
- if __name__ == "__main__":
- generate()
|