]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Generate key-cert pair in config directory (fixes #3655)
authorSeptatrix <24257556+Septatrix@users.noreply.github.com>
Tue, 8 Apr 2025 13:59:30 +0000 (15:59 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 9 Apr 2025 14:25:30 +0000 (16:25 +0200)
mkosi/__init__.py
mkosi/config.py

index 57a759c627b5992a602b2b8c397956e583e1cf90..9187e1b3acecc5c4c408f8d0910213e24aba1ef6 100644 (file)
@@ -71,6 +71,7 @@ from mkosi.config import (
     cat_config,
     expand_delayed_specifiers,
     format_bytes,
+    get_configdir,
     have_history,
     in_sandbox,
     parse_boolean,
@@ -4482,8 +4483,10 @@ def generate_key_cert_pair(args: Args) -> None:
     keylength = 2048
     expiration_date = datetime.date.today() + datetime.timedelta(int(args.genkey_valid_days))
 
-    for f in ("mkosi.key", "mkosi.crt"):
-        if Path(f).exists() and not args.force:
+    configdir = get_configdir(args)
+
+    for f in (configdir / "mkosi.key", configdir / "mkosi.crt"):
+        if f.exists() and not args.force:
             die(
                 f"{f} already exists",
                 hint="To generate new keys, first remove mkosi.key and mkosi.crt",
@@ -4506,8 +4509,8 @@ def generate_key_cert_pair(args: Args) -> None:
             "-new",
             "-x509",
             "-newkey", f"rsa:{keylength}",
-            "-keyout", "mkosi.key",
-            "-out", "mkosi.crt",
+            "-keyout", configdir / "mkosi.key",
+            "-out", configdir / "mkosi.crt",
             "-days", str(args.genkey_valid_days),
             "-subj", f"/CN={args.genkey_common_name}/",
             "-nodes"
index 93eb94d3601f73926e818540c57f55a47b3c1c76..b3fc419924f9720df94a289f3286903044e8d79d 100644 (file)
@@ -4964,6 +4964,20 @@ def finalize_default_tools(
     return Config.from_dict(context.finalize())
 
 
+def get_configdir(args: Args) -> Path:
+    """Allow locating all mkosi configuration in a mkosi/ subdirectory
+    instead of in the top-level directory of a git repository.
+    """
+    if (
+        args.directory is not None
+        and not (Path("mkosi.conf").exists() or Path("mkosi.tools.conf").exists())
+        and (Path("mkosi/mkosi.conf").is_file() or Path("mkosi/mkosi.tools.conf").exists())
+    ):
+        return Path.cwd() / "mkosi"
+
+    return Path.cwd()
+
+
 def parse_config(
     argv: Sequence[str] = (),
     *,
@@ -5050,16 +5064,7 @@ def parse_config(
 
     context.config["files"] = []
 
-    # Allow locating all mkosi configuration in a mkosi/ subdirectory instead of in the top-level directory
-    # of a git repository.
-    if (
-        args.directory is not None
-        and not (Path("mkosi.conf").exists() or Path("mkosi.tools.conf").exists())
-        and (Path("mkosi/mkosi.conf").is_file() or Path("mkosi/mkosi.tools.conf").exists())
-    ):
-        configdir = Path.cwd() / "mkosi"
-    else:
-        configdir = Path.cwd()
+    configdir = get_configdir(args)
 
     # Parse the global configuration unless the user explicitly asked us not to.
     if args.directory is not None: