diff options
Diffstat (limited to 'tools/ssl-keygen.py')
-rwxr-xr-x | tools/ssl-keygen.py | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/tools/ssl-keygen.py b/tools/ssl-keygen.py deleted file mode 100755 index 555b379..0000000 --- a/tools/ssl-keygen.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import sys -import os.path -import subprocess -from functools import partial - -def generate_private_key(out_pem='privateKey.pem'): - subprocess.run(['openssl', 'genrsa', '-out', out_pem, '4096'], check=True) - -def generate_public_key(in_pem='privateKey.pem', out_pem='publicKey.pem'): - subprocess.run(['openssl', 'rsa', '-in', in_pem, '-pubout', '-out', out_pem], check=True) - -def hexdump(array_type, array_name, length_type, in_pem, out_h): - n = 0 - - print("// Autogenerated hex dump of OpenSSL public key, do not edit", file=out_h) - print("{} {}[] = {{".format(array_type, array_name), file=out_h) - - for line in iter(partial(in_pem.read, 16), b''): - l = list(line) - for n, i in enumerate(l): - l[n] = '0x{:02X}'.format(i) - - print(" {},".format(", ".join(l)), file=out_h) - - n += 1 - - print("};", file=out_h) - print("{} {}_len = {};".format(length_type, array_name, n), file=out_h) - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Generate OpenSSL key and hexdump') - - parser.add_argument('--private', default='privateKey.pem', type=str, help='Private key input') - parser.add_argument('--public', default='publicKey.pem', type=str, help='Public key input') - - parser.add_argument('--output', type=argparse.FileType('wt'), default=sys.stdout, help='Output file') - - parser.add_argument('--array-type', type=str, default='const unsigned char', help='Array type') - parser.add_argument('--length-type', type=str, default='const unsigned int', help='Length type') - parser.add_argument('--array-name', type=str, default='a', help='Array name') - - args=parser.parse_args() - - # check if public key exists - if not os.path.isfile(args.public): - # if there is no private key, generate one - if not os.path.isfile(args.private): - generate_private_key(args.private) - - # export public key from private - generate_public_key(args.private, args.public) - - with open(args.public, "rb") as public_pem: - hexdump(args.array_type, args.array_name, args.length_type, public_pem, args.output) - - |