diff --git a/scripts/imgtool/keys/general.py b/scripts/imgtool/keys/general.py index 0393a9a5..45cddc6f 100644 --- a/scripts/imgtool/keys/general.py +++ b/scripts/imgtool/keys/general.py @@ -41,6 +41,13 @@ class KeyClass(object): len_format="const unsigned int {}_pub_key_len = {{}};".format(self.shortname()), file=file) + def emit_raw_public(self, file=sys.stdout): + if file and file is not sys.stdout: + with open(file, 'wb') as file: + file.write(self.get_public_bytes()) + else: + sys.stdout.buffer.write(self.get_public_bytes()) + def emit_rust_public(self, file=sys.stdout): self._emit( header="static {}_PUB_KEY: &[u8] = &[".format(self.shortname().upper()), diff --git a/scripts/imgtool/main.py b/scripts/imgtool/main.py index 53557075..896afdd3 100755 --- a/scripts/imgtool/main.py +++ b/scripts/imgtool/main.py @@ -61,7 +61,7 @@ def gen_x25519(keyfile, passwd): valid_langs = ['c', 'rust'] -valid_encodings = ['lang-c', 'lang-rust', 'pem'] +valid_encodings = ['lang-c', 'lang-rust', 'pem', 'raw'] keygens = { 'rsa-2048': gen_rsa2048, 'rsa-3072': gen_rsa3072, @@ -152,6 +152,8 @@ def getpub(key, encoding, lang, output): key.emit_rust_public(file=output) elif encoding == 'pem': key.emit_public_pem(file=output) + elif encoding == 'raw': + key.emit_raw_public(file=output) else: raise click.UsageError()