Commit cb697d1ac5 for strongswan.org
commit cb697d1ac54c206c30dc0515c846b27d920903a1
Author: Andreas Steffen <andreas.steffen@strongswan.org>
Date: Mon Dec 9 16:11:59 2024 +0100
pki: Add ML-DSA support
diff --git a/src/pki/commands/gen.c b/src/pki/commands/gen.c
index bedde19014..89a2fa8c85 100644
--- a/src/pki/commands/gen.c
+++ b/src/pki/commands/gen.c
@@ -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,8 +173,8 @@ 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]",
- "[--shares n] [--threshold l] [--outform der|pem]"},
+ {"[--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"},
{"type", 't', 1, "type of key, default: rsa"},
diff --git a/src/pki/man/pki---gen.1.in b/src/pki/man/pki---gen.1.in
index 708f58a52c..1ea4cede8c 100644
--- a/src/pki/man/pki---gen.1.in
+++ b/src/pki/man/pki---gen.1.in
@@ -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.