]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
pki: Add ML-DSA support
authorAndreas Steffen <andreas.steffen@strongswan.org>
Mon, 9 Dec 2024 15:11:59 +0000 (16:11 +0100)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Fri, 18 Jul 2025 11:07:01 +0000 (13:07 +0200)
src/pki/commands/gen.c
src/pki/man/pki---gen.1.in

index bedde1901470b718ee508589dd961b69cdc93df3..87e674a98cf23beb814e88debdf1fc72af45dbdb 100644 (file)
@@ -53,6 +53,18 @@ static int gen()
                                {
                                        type = KEY_ED448;
                                }
+                               else if (streq(arg, "mldsa44"))
+                               {
+                                       type = KEY_ML_DSA_44;
+                               }
+                               else if (streq(arg, "mldsa65"))
+                               {
+                                       type = KEY_ML_DSA_65;
+                               }
+                               else if (streq(arg, "mldsa87"))
+                               {
+                                       type = KEY_ML_DSA_87;
+                               }
                                else
                                {
                                        return command_usage("invalid key type");
@@ -95,7 +107,7 @@ static int gen()
                }
                break;
        }
-       /* default key sizes */
+       /* default values for key types with variable key size */
        if (!size)
        {
                switch (type)
@@ -106,12 +118,6 @@ static int gen()
                        case KEY_ECDSA:
                                size = 384;
                                break;
-                       case KEY_ED25519:
-                               size = 256;
-                               break;
-                       case KEY_ED448:
-                               size = 456;
-                               break;
                        default:
                                break;
                }
@@ -167,7 +173,7 @@ static void __attribute__ ((constructor))reg()
 {
        command_register((command_t) {
                gen, 'g', "gen", "generate a new private key",
-               {"[--type rsa|ecdsa|ed25519|ed448] [--size bits] [--safe-primes]",
+               {"[--type rsa|ecdsa|ed25519|ed448|mldsa44|mldsa65|mldsa87] [--size bits] [--safe-primes]",
                 "[--shares n] [--threshold l] [--outform der|pem]"},
                {
                        {"help",                'h', 0, "show usage information"},
index 708f58a52c85de0d4b76a7e59b5e4ebb854250a5..1ea4cede8c4a584d4af90dd3829433b81098dac6 100644 (file)
@@ -46,7 +46,8 @@ Read command line options from \fIfile\fR.
 .TP
 .BI "\-t, \-\-type " type
 Type of key to generate. Either \fIrsa\fR, \fIecdsa\fR, \fIed25519\fR,
-or \fIed448\fR, defaults to \fIrsa\fR.
+\fIed448\fR, \fImldsa44\fR, \fImldsa65\fR or \fImldsa87\fR, defaults to
+\fIrsa\fR.
 .TP
 .BI "\-s, \-\-size " bits
 Key length in bits. Defaults to 2048 for \fIrsa\fR and 384 for \fIecdsa\fR.