Skip to content

Commit 0177d61

Browse files
committed
fix(espsecure): Allow signing multiple files in one go
1 parent 66a1377 commit 0177d61

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

espsecure/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
2222
from cryptography.utils import int_to_bytes
2323

24+
from esptool.cli_util import OptionEatAll
2425
from esptool.logger import log
2526

2627
import esptool
@@ -1645,6 +1646,8 @@ def generate_signing_key_cli(version, scheme, keyfile):
16451646
"--keyfile",
16461647
"-k",
16471648
type=click.File("rb"),
1649+
cls=OptionEatAll,
1650+
required=True,
16481651
multiple=True,
16491652
help="Private key file for signing. Key is in PEM format.",
16501653
)
@@ -1677,13 +1680,15 @@ def generate_signing_key_cli(version, scheme, keyfile):
16771680
@click.option(
16781681
"--pub-key",
16791682
type=click.File("rb"),
1683+
cls=OptionEatAll,
16801684
multiple=True,
16811685
help="Public key files corresponding to the private key used to generate the "
16821686
"pre-calculated signatures. Keys should be in PEM format.",
16831687
)
16841688
@click.option(
16851689
"--signature",
16861690
type=click.File("rb"),
1691+
cls=OptionEatAll,
16871692
multiple=True,
16881693
default=None,
16891694
help="Pre-calculated signatures. Signatures generated using external private keys "

test/test_espsecure.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,33 @@ def test_sign_v2_data(self, scheme):
197197
output_file.close()
198198
os.unlink(output_file.name)
199199

200+
def test_sign_v2_multiple_keys_cli(self):
201+
keydir = os.path.join(TEST_DIR, "secure_images")
202+
with tempfile.NamedTemporaryFile(delete=False) as output_file:
203+
self.run_espsecure(
204+
"sign-data --version 2 --keyfile "
205+
f"{keydir}/rsa_secure_boot_signing_key.pem "
206+
f"{keydir}/rsa_secure_boot_signing_key2.pem "
207+
f"{keydir}/rsa_secure_boot_signing_key3.pem "
208+
f"--output {output_file.name} "
209+
f"{keydir}/bootloader_unsigned_v2.bin"
210+
)
211+
self.run_espsecure(
212+
"verify-signature --version 2 --keyfile "
213+
f"{keydir}/rsa_secure_boot_signing_key.pem "
214+
f"{output_file.name}"
215+
)
216+
self.run_espsecure(
217+
"verify-signature --version 2 --keyfile "
218+
f"{keydir}/rsa_secure_boot_signing_key2.pem "
219+
f"{output_file.name}"
220+
)
221+
self.run_espsecure(
222+
"verify-signature --version 2 --keyfile "
223+
f"{keydir}/rsa_secure_boot_signing_key3.pem "
224+
f"{output_file.name}"
225+
)
226+
200227
def test_sign_v2_multiple_keys(self):
201228
# 3 keys + Verify with 3rd key
202229
try:

0 commit comments

Comments
 (0)