Skip to content

Commit

Permalink
Add multi level LMS variants supported by other libraried
Browse files Browse the repository at this point in the history
  • Loading branch information
ashman-p committed Dec 2, 2023
1 parent 90c009b commit af5485f
Show file tree
Hide file tree
Showing 5 changed files with 268 additions and 35 deletions.
164 changes: 164 additions & 0 deletions src/sig_stfl/lms/sig_stfl_lms.c
Original file line number Diff line number Diff line change
Expand Up @@ -1839,6 +1839,170 @@ OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H5_W8_H5_W8_new(void) {
return sk;
}

// ======================== LMS-SHA256 H10/W2, H10/W2 ======================== //

OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key) {
if (secret_key == NULL || public_key == NULL) {
return OQS_ERROR;
}

if (oqs_sig_stfl_lms_keypair(public_key, secret_key, (const uint32_t)OQS_LMS_ID_sha256_n32_h10_w2_h10_w2) != 0) {
return OQS_ERROR;
}
return OQS_SUCCESS;
}

OQS_SIG_STFL *OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_new(void) {

OQS_SIG_STFL *sig = (OQS_SIG_STFL *)malloc(sizeof(OQS_SIG_STFL));
if (sig == NULL) {
return NULL;
}
memset(sig, 0, sizeof(OQS_SIG_STFL));

sig->oid = OQS_LMS_ID_sha256_n32_h10_w2_h10_w2;
sig->method_name = OQS_SIG_STFL_alg_lms_sha256_n32_h10_w2_h10_w2;
sig->alg_version = "https://datatracker.ietf.org/doc/html/rfc8554";
sig->euf_cma = true;

sig->length_public_key = OQS_SIG_STFL_alg_lms_length_public_key;
sig->length_signature = OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_length_signature;
sig->length_secret_key = OQS_SIG_STFL_alg_lms_length_private_key;

sig->keypair = OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_keypair;
sig->sign = OQS_SIG_STFL_alg_lms_sign;
sig->verify = OQS_SIG_STFL_alg_lms_verify;

sig->sigs_remaining = OQS_SIG_STFL_lms_sigs_left;
sig->sigs_total = OQS_SIG_STFL_lms_sigs_total;

return sig;
}

OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H10_W2_H10_W2_new(void) {

// Initialize the secret key in the heap with adequate memory
OQS_SIG_STFL_SECRET_KEY *sk = malloc(sizeof(OQS_SIG_STFL_SECRET_KEY));
if (sk == NULL) {
return NULL;
}
memset(sk, 0, sizeof(OQS_SIG_STFL_SECRET_KEY));

// Initialize the key with length_secret_key amount of bytes.
sk->length_secret_key = OQS_SIG_STFL_alg_lms_length_private_key;

/*
* Secret Key retrieval Function
*/
sk->serialize_key = OQS_SECRET_KEY_LMS_serialize_key;

/*
* set Secret Key to internal structure Function
*/
sk->deserialize_key = OQS_SECRET_KEY_LMS_deserialize_key;

/*
* Set Secret Key Locking Function
*/
sk->lock_key = NULL;

/*
* Set Secret Key Saving Function
*/
sk->secure_store_scrt_key = NULL;

/*
* Set Secret Key free function
*/
sk->free_key = OQS_SECRET_KEY_LMS_free;

sk->set_scrt_key_store_cb = OQS_SECRET_KEY_LMS_set_store_cb;

return sk;
}

// ======================== LMS-SHA256 H10/W4, H10/W4 ======================== //

OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key) {
if (secret_key == NULL || public_key == NULL) {
return OQS_ERROR;
}

if (oqs_sig_stfl_lms_keypair(public_key, secret_key, (const uint32_t)OQS_LMS_ID_sha256_n32_h10_w4_h10_w4) != 0) {
return OQS_ERROR;
}
return OQS_SUCCESS;
}

OQS_SIG_STFL *OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_new(void) {

OQS_SIG_STFL *sig = (OQS_SIG_STFL *)malloc(sizeof(OQS_SIG_STFL));
if (sig == NULL) {
return NULL;
}
memset(sig, 0, sizeof(OQS_SIG_STFL));

sig->oid = OQS_LMS_ID_sha256_n32_h10_w4_h10_w4;
sig->method_name = OQS_SIG_STFL_alg_lms_sha256_n32_h10_w4_h10_w4;
sig->alg_version = "https://datatracker.ietf.org/doc/html/rfc8554";
sig->euf_cma = true;

sig->length_public_key = OQS_SIG_STFL_alg_lms_length_public_key;
sig->length_signature = OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_length_signature;
sig->length_secret_key = OQS_SIG_STFL_alg_lms_length_private_key;

sig->keypair = OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_keypair;
sig->sign = OQS_SIG_STFL_alg_lms_sign;
sig->verify = OQS_SIG_STFL_alg_lms_verify;

sig->sigs_remaining = OQS_SIG_STFL_lms_sigs_left;
sig->sigs_total = OQS_SIG_STFL_lms_sigs_total;

return sig;
}

OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H10_W4_H10_W4_new(void) {

// Initialize the secret key in the heap with adequate memory
OQS_SIG_STFL_SECRET_KEY *sk = malloc(sizeof(OQS_SIG_STFL_SECRET_KEY));
if (sk == NULL) {
return NULL;
}
memset(sk, 0, sizeof(OQS_SIG_STFL_SECRET_KEY));

// Initialize the key with length_secret_key amount of bytes.
sk->length_secret_key = OQS_SIG_STFL_alg_lms_length_private_key;

/*
* Secret Key retrieval Function
*/
sk->serialize_key = OQS_SECRET_KEY_LMS_serialize_key;

/*
* set Secret Key to internal structure Function
*/
sk->deserialize_key = OQS_SECRET_KEY_LMS_deserialize_key;

/*
* Set Secret Key Locking Function
*/
sk->lock_key = NULL;

/*
* Set Secret Key Saving Function
*/
sk->secure_store_scrt_key = NULL;

/*
* Set Secret Key free function
*/
sk->free_key = OQS_SECRET_KEY_LMS_free;

sk->set_scrt_key_store_cb = OQS_SECRET_KEY_LMS_set_store_cb;

return sk;
}

// ======================== LMS-SHA256 H10/W8, H5/W8 ======================== //

OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w8_h5_w8_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key) {
Expand Down
107 changes: 73 additions & 34 deletions src/sig_stfl/lms/sig_stfl_lms.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,70 @@

//OQS LMS parameter identifiers
/* Defined LM parameter sets */
#define OQS_LMS_ID_sha256_n32_h5_w1 0x1 //"5/1"
#define OQS_LMS_ID_sha256_n32_h5_w2 0x2 //"5/2"
#define OQS_LMS_ID_sha256_n32_h5_w4 0x3 //"5/4"
#define OQS_LMS_ID_sha256_n32_h5_w8 0x4 //"5/8"

#define OQS_LMS_ID_sha256_n32_h10_w1 0x5 //"10/1"
#define OQS_LMS_ID_sha256_n32_h10_w2 0x7 //"10/2"
#define OQS_LMS_ID_sha256_n32_h10_w4 0x8 //"10/4"
#define OQS_LMS_ID_sha256_n32_h10_w8 0x9 //"10/8"

#define OQS_LMS_ID_sha256_n32_h15_w1 0xa //"15/1"
#define OQS_LMS_ID_sha256_n32_h15_w2 0xb //"15/2"
#define OQS_LMS_ID_sha256_n32_h15_w4 0xc//"15/4"
#define OQS_LMS_ID_sha256_n32_h15_w8 0xd //"15/8"

#define OQS_LMS_ID_sha256_n32_h20_w1 0xe //"20/1"
#define OQS_LMS_ID_sha256_n32_h20_w2 0xf //"20/2"
#define OQS_LMS_ID_sha256_n32_h20_w4 0x10 //"20/4"
#define OQS_LMS_ID_sha256_n32_h20_w8 0x11 //"20/8"

#define OQS_LMS_ID_sha256_n32_h25_w1 0x12 //"25/1"
#define OQS_LMS_ID_sha256_n32_h25_w2 0x13 //"25/2"
#define OQS_LMS_ID_sha256_n32_h25_w4 0x14 //"25/4"
#define OQS_LMS_ID_sha256_n32_h25_w8 0x15 //"25/8"
/*
* Convention
* Where ...
* L = number of Levels
* H = LMS H ID
* LMS_SHA256_M32_H5 0x05
* LMS_SHA256_M32_H10 0x06
* LMS_SHA256_M32_H15 0x07
* LMS_SHA256_M32_H20 0x08
* LMS_SHA256_M32_H25 0x09
*
* W = Winternitz value
* LMOTS_SHA256_N32_W1 0x01
* LMOTS_SHA256_N32_W2 0x02
* LMOTS_SHA256_N32_W4 0x03
* LMOTS_SHA256_N32_W8 0x04
*
* e.g.
* OQS_LMS_ID_sha256_n32_h5_w1 -- "5/1" ----- 0x0151
* "5/1,5/2" ----- 0x025152
0x0LHS0H0W
*/
#define OQS_LMS_ID_sha256_n32_h5_w1 0x0151 //"5/1"
#define OQS_LMS_ID_sha256_n32_h5_w2 0x0152 //"5/2"
#define OQS_LMS_ID_sha256_n32_h5_w4 0x0153 //"5/4"
#define OQS_LMS_ID_sha256_n32_h5_w8 0x0154 //"5/8"

#define OQS_LMS_ID_sha256_n32_h10_w1 0x0161 //"10/1"
#define OQS_LMS_ID_sha256_n32_h10_w2 0x0162 //"10/2"
#define OQS_LMS_ID_sha256_n32_h10_w4 0x0163 //"10/4"
#define OQS_LMS_ID_sha256_n32_h10_w8 0x0164 //"10/8"

#define OQS_LMS_ID_sha256_n32_h15_w1 0x0171 //"15/1"
#define OQS_LMS_ID_sha256_n32_h15_w2 0x0172 //"15/2"
#define OQS_LMS_ID_sha256_n32_h15_w4 0x0173 //"15/4"
#define OQS_LMS_ID_sha256_n32_h15_w8 0x0174 //"15/8"

#define OQS_LMS_ID_sha256_n32_h20_w1 0x0181 //"20/1"
#define OQS_LMS_ID_sha256_n32_h20_w2 0x0182 //"20/2"
#define OQS_LMS_ID_sha256_n32_h20_w4 0x0183 //"20/4"
#define OQS_LMS_ID_sha256_n32_h20_w8 0x0184 //"20/8"

#define OQS_LMS_ID_sha256_n32_h25_w1 0x0191 //"25/1"
#define OQS_LMS_ID_sha256_n32_h25_w2 0x0192 //"25/2"
#define OQS_LMS_ID_sha256_n32_h25_w4 0x0193 //"25/4"
#define OQS_LMS_ID_sha256_n32_h25_w8 0x0194 //"25/8"

//2-Level LMS
#define OQS_LMS_ID_sha256_n32_h5_w8_h5_w8 0x50 //"5/8,5/8"
#define OQS_LMS_ID_sha256_n32_h10_w8_h5_w8 0xA0 //"10/8,5/8"
#define OQS_LMS_ID_sha256_n32_h10_w8_h10_w8 0xA1 //"10/8,10/8"
#define OQS_LMS_ID_sha256_n32_h15_w8_h5_w8 0xF0 //"15/8,5/8"
#define OQS_LMS_ID_sha256_n32_h15_w8_h10_w8 0xF1 //"15/8,10/8"
#define OQS_LMS_ID_sha256_n32_h15_w8_h15_w8 0xF2 //"15/8,15/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h5_w8 0x140 //"20/8,5/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h10_w8 0x141 //"20/8,10/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h15_w8 0x142 //"20/8,15/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h20_w8 0x143 //"20/8,20/8"
#define OQS_LMS_ID_sha256_n32_h5_w8_h5_w8 0x025454 //"5/8,5/8"

//Wolf
#define OQS_LMS_ID_sha256_n32_h10_w2_h10_w2 0x026262 //"10/2,10/2"
#define OQS_LMS_ID_sha256_n32_h10_w4_h10_w4 0x026363 //"10/4,10/4"

#define OQS_LMS_ID_sha256_n32_h10_w8_h5_w8 0x026454 //"10/8,5/8"
//Wolf
#define OQS_LMS_ID_sha256_n32_h10_w8_h10_w8 0x026464 //"10/8,10/8"
#define OQS_LMS_ID_sha256_n32_h15_w8_h5_w8 0x027454 //"15/8,5/8"
#define OQS_LMS_ID_sha256_n32_h15_w8_h10_w8 0x027464 //"15/8,10/8"
#define OQS_LMS_ID_sha256_n32_h15_w8_h15_w8 0x027474 //"15/8,15/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h5_w8 0x028454 //"20/8,5/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h10_w8 0x028464 //"20/8,10/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h15_w8 0x028474 //"20/8,15/8"
#define OQS_LMS_ID_sha256_n32_h20_w8_h20_w8 0x028484 //"20/8,20/8"

//H5
#define OQS_SIG_STFL_alg_lms_sha256_h5_w1_length_signature 8688
Expand Down Expand Up @@ -217,6 +245,9 @@ void OQS_SECRET_KEY_LMS_free(OQS_SIG_STFL_SECRET_KEY *sk);
#define OQS_SIG_STFL_alg_lms_sha256_h5_w8_h5_w8_length_signature 2644

#define OQS_SIG_STFL_alg_lms_sha256_h10_w8_h5_w8_length_signature 2804

#define OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_length_signature 9300
#define OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_length_signature 5076
#define OQS_SIG_STFL_alg_lms_sha256_h10_w8_h10_w8_length_signature 2964

#define OQS_SIG_STFL_alg_lms_sha256_h15_w8_h5_w8_length_signature 2964
Expand All @@ -236,6 +267,14 @@ OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w8_h5_w8_keypair(uint8_t *pub
OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H10_W8_H5_W8_new(void);
OQS_SIG_STFL *OQS_SIG_STFL_alg_lms_sha256_h10_w8_h5_w8_new(void);

OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key);
OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H10_W2_H10_W2_new(void);
OQS_SIG_STFL *OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_new(void);

OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key);
OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H10_W4_H10_W4_new(void);
OQS_SIG_STFL *OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_new(void);

OQS_API OQS_STATUS OQS_SIG_STFL_alg_lms_sha256_h10_w8_h10_w8_keypair(uint8_t *public_key, OQS_SIG_STFL_SECRET_KEY *secret_key);
OQS_SIG_STFL_SECRET_KEY *OQS_SECRET_KEY_LMS_SHA256_H10_W8_H10_W8_new(void);
OQS_SIG_STFL *OQS_SIG_STFL_alg_lms_sha256_h10_w8_h10_w8_new(void);
Expand Down
14 changes: 14 additions & 0 deletions src/sig_stfl/lms/sig_stfl_lms_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,20 @@ int oqs_sig_stfl_lms_keypair(uint8_t *pk, OQS_SIG_STFL_SECRET_KEY *sk, const uin
oqs_key_data->lm_type[1] = LMS_SHA256_N32_H5;
oqs_key_data->lm_ots_type[1] = LMOTS_SHA256_N32_W8;
break;
case OQS_LMS_ID_sha256_n32_h10_w2_h10_w2:
oqs_key_data->levels = 2;
oqs_key_data->lm_type[0] = LMS_SHA256_N32_H10;
oqs_key_data->lm_ots_type[0] = LMOTS_SHA256_N32_W2;
oqs_key_data->lm_type[1] = LMS_SHA256_N32_H10;
oqs_key_data->lm_ots_type[1] = LMOTS_SHA256_N32_W2;
break;
case OQS_LMS_ID_sha256_n32_h10_w4_h10_w4:
oqs_key_data->levels = 2;
oqs_key_data->lm_type[0] = LMS_SHA256_N32_H10;
oqs_key_data->lm_ots_type[0] = LMOTS_SHA256_N32_W4;
oqs_key_data->lm_type[1] = LMS_SHA256_N32_H10;
oqs_key_data->lm_ots_type[1] = LMOTS_SHA256_N32_W4;
break;
case OQS_LMS_ID_sha256_n32_h10_w8_h10_w8:
oqs_key_data->levels = 2;
oqs_key_data->lm_type[0] = LMS_SHA256_N32_H10;
Expand Down
14 changes: 14 additions & 0 deletions src/sig_stfl/sig_stfl.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ OQS_API const char *OQS_SIG_STFL_alg_identifier(size_t i) {
OQS_SIG_STFL_alg_lms_sha256_n32_h5_w8_h5_w8,

OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h5_w8,
OQS_SIG_STFL_alg_lms_sha256_n32_h10_w2_h10_w2,
OQS_SIG_STFL_alg_lms_sha256_n32_h10_w4_h10_w4,
OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h10_w8,

OQS_SIG_STFL_alg_lms_sha256_n32_h15_w8_h5_w8,
Expand Down Expand Up @@ -323,6 +325,10 @@ OQS_API int OQS_SIG_STFL_alg_is_enabled(const char *method_name) {
return 1;
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h5_w8)) {
return 1;
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w2_h10_w2)) {
return 1;
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w4_h10_w4)) {
return 1;
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h10_w8)) {
return 1;
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h15_w8_h5_w8)) {
Expand Down Expand Up @@ -567,6 +573,10 @@ OQS_API OQS_SIG_STFL *OQS_SIG_STFL_new(const char *method_name) {
return OQS_SIG_STFL_alg_lms_sha256_h5_w8_h5_w8_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h5_w8)) {
return OQS_SIG_STFL_alg_lms_sha256_h10_w8_h5_w8_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w2_h10_w2)) {
return OQS_SIG_STFL_alg_lms_sha256_h10_w2_h10_w2_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w4_h10_w4)) {
return OQS_SIG_STFL_alg_lms_sha256_h10_w4_h10_w4_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h10_w8)) {
return OQS_SIG_STFL_alg_lms_sha256_h10_w8_h10_w8_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h15_w8_h5_w8)) {
Expand Down Expand Up @@ -859,6 +869,10 @@ OQS_API OQS_SIG_STFL_SECRET_KEY *OQS_SIG_STFL_SECRET_KEY_new(const char *method_
return OQS_SECRET_KEY_LMS_SHA256_H5_W8_H5_W8_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h5_w8)) {
return OQS_SECRET_KEY_LMS_SHA256_H10_W8_H5_W8_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w2_h10_w2)) {
return OQS_SECRET_KEY_LMS_SHA256_H10_W2_H10_W2_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w4_h10_w4)) {
return OQS_SECRET_KEY_LMS_SHA256_H10_W4_H10_W4_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h10_w8)) {
return OQS_SECRET_KEY_LMS_SHA256_H10_W8_H10_W8_new();
} else if (0 == strcasecmp(method_name, OQS_SIG_STFL_alg_lms_sha256_n32_h15_w8_h5_w8)) {
Expand Down
4 changes: 3 additions & 1 deletion src/sig_stfl/sig_stfl.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ extern "C" {
#define OQS_SIG_STFL_alg_lms_sha256_n32_h5_w8_h5_w8 "LMS_SHA256_H5_W8_H5_W8" //"5/8, 5/8"

#define OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h5_w8 "LMS_SHA256_H10_W8_H5_W8" //"10/8, 5/8"
#define OQS_SIG_STFL_alg_lms_sha256_n32_h10_w2_h10_w2 "LMS_SHA256_H10_W2_H10_W2" //"10/2, 10/2"
#define OQS_SIG_STFL_alg_lms_sha256_n32_h10_w4_h10_w4 "LMS_SHA256_H10_W4_H10_W4" //"10/4, 10/4"
#define OQS_SIG_STFL_alg_lms_sha256_n32_h10_w8_h10_w8 "LMS_SHA256_H10_W8_H10_W8" //"10/8, 10/8"

#define OQS_SIG_STFL_alg_lms_sha256_n32_h15_w8_h5_w8 "LMS_SHA256_H15_W8_H5_W8" //"15/8, 5/8"
Expand All @@ -113,7 +115,7 @@ extern "C" {
#define OQS_SIG_STFL_alg_lms_sha256_n32_h20_w8_h15_w8 "LMS_SHA256_H20_W8_H15_W8" //"20/8, 15/8"
#define OQS_SIG_STFL_alg_lms_sha256_n32_h20_w8_h20_w8 "LMS_SHA256_H20_W8_H20_W8" //"20/8, 20/8"

#define OQS_SIG_STFL_algs_length 58
#define OQS_SIG_STFL_algs_length 60

/* Defined LM parameter identifiers */
/* Algorithm identifier for LMS-SHA256_N32_H5 */
Expand Down

0 comments on commit af5485f

Please sign in to comment.