blob: ceb5cc6fa1ccf53c7143ca0c7fd598f4aea14282 [file] [log] [blame]
#!/usr/bin/env python3
# -----------------------------------------------------------------------------
# Copyright (c) 2019, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# -----------------------------------------------------------------------------
import argparse
from ecdsa import SigningKey, NIST256p, NIST384p
from pycose.keys import EC2Key, CoseKey
from ecdsa.curves import curve_by_name
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='generate an ECDSA key')
parser.add_argument('outfile', type=str, help='output file')
parser.add_argument('--crv', type=str, help='ECDSA curve',
choices=[NIST256p.name, NIST384p.name], default='NIST256p')
parser.add_argument('--fmt', type=str, help='key format',
choices=['PEM', 'COSE'], default='PEM')
args = parser.parse_args()
sk = SigningKey.generate(curve_by_name(args.crv))
pem_key = sk.to_pem().decode('utf-8')
if args.fmt == 'PEM':
o = pem_key
elif args.fmt == 'COSE':
o = CoseKey.from_pem_private_key(pem_key)
with open(args.outfile, 'wb') as wfh:
wfh.write(o.encode())