summaryrefslogtreecommitdiffstats
path: root/src/ukify/ukify.py
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2023-12-06 11:41:56 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2023-12-06 11:46:04 +0100
commitf3d50fb2c6890c0036614786fb97f46eb561432e (patch)
treeb5c468d26d8f0087873a5c8aec56f3caed5f19dc /src/ukify/ukify.py
parentukify: remove stray line (diff)
downloadsystemd-f3d50fb2c6890c0036614786fb97f46eb561432e.tar.xz
systemd-f3d50fb2c6890c0036614786fb97f46eb561432e.zip
ukify: raise error if genkey is called with no output arguments
The idea is that genkey is called with either --secureboot-private-key= + --secureboot-certificate=, and then it writes those, or with --pcr-private-key + optionally --pcr-public-key and then it writes those, or both. But when called with no arguments whatsover, it did nothing. There is no implicit value for any of those parameters as input (unlike in mkosi), so we also don't want to have implicit values when used as output. But we shouldn't return success if no work was done, this is quite confusing.
Diffstat (limited to 'src/ukify/ukify.py')
-rwxr-xr-xsrc/ukify/ukify.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ukify/ukify.py b/src/ukify/ukify.py
index d04b6dfac0..b33c8cf744 100755
--- a/src/ukify/ukify.py
+++ b/src/ukify/ukify.py
@@ -932,6 +932,8 @@ def generate_priv_pub_key_pair(keylength : int = 2048) -> tuple[bytes]:
def generate_keys(opts):
+ work = False
+
# This will generate keys and certificates and write them to the paths that
# are specified as input paths.
if opts.sb_key or opts.sb_cert:
@@ -947,6 +949,8 @@ def generate_keys(opts):
print(f'Writing SecureBoot certificate to {opts.sb_cert}')
opts.sb_cert.write_bytes(cert_pem)
+ work = True
+
for priv_key, pub_key, _ in key_path_groups(opts):
priv_key_pem, pub_key_pem = generate_priv_pub_key_pair()
@@ -957,6 +961,11 @@ def generate_keys(opts):
print(f'Writing public key for PCR signing to {pub_key}')
pub_key.write_bytes(pub_key_pem)
+ work = True
+
+ if not work:
+ raise ValueError('genkey: --secureboot-private-key=/--secureboot-certificate= or --pcr-private-key/--pcr-public-key must be specified')
+
def inspect_section(opts, section):
name = section.Name.rstrip(b"\x00").decode()