Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/sig/slh_dsa/sig_slh_dsa.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_128s_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -27,6 +28,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_verify_with_ctx_str(const uint

OQS_SIG *OQS_SIG_slh_dsa_pure_shake_128s_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128s_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128s_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128s_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128s_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128s_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -41,6 +43,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128s_verify_with_ctx_str(const uin

OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_128f_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -55,6 +58,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_verify_with_ctx_str(const uint

OQS_SIG *OQS_SIG_slh_dsa_pure_shake_128f_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128f_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128f_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128f_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128f_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128f_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -69,6 +73,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_128f_verify_with_ctx_str(const uin

OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_192s_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -83,6 +88,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_verify_with_ctx_str(const uint

OQS_SIG *OQS_SIG_slh_dsa_pure_shake_192s_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192s_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192s_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192s_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192s_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192s_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -97,6 +103,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192s_verify_with_ctx_str(const uin

OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_192f_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -111,6 +118,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_verify_with_ctx_str(const uint

OQS_SIG *OQS_SIG_slh_dsa_pure_shake_192f_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192f_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192f_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192f_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192f_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192f_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -125,6 +133,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_192f_verify_with_ctx_str(const uin

OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_256s_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -139,6 +148,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_verify_with_ctx_str(const uint

OQS_SIG *OQS_SIG_slh_dsa_pure_shake_256s_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256s_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256s_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256s_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256s_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256s_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -153,6 +163,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256s_verify_with_ctx_str(const uin

OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_256f_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand All @@ -167,6 +178,7 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_verify_with_ctx_str(const uint

OQS_SIG *OQS_SIG_slh_dsa_pure_shake_256f_new(void);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256f_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256f_keypair_from_seed(uint8_t *public_key, uint8_t *secret_key, const uint8_t *seed, size_t seed_len);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256f_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256f_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_shake_256f_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx, size_t ctxlen, const uint8_t *secret_key);
Expand Down
15 changes: 14 additions & 1 deletion src/sig/slh_dsa/wrappers/pure/slh_dsa_pure_sha2_128f.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "../../sig_slh_dsa.h"
#include "../../slh_dsa_c/slh_dsa.h"
#include "../../slh_dsa_c/slh_param.h"
#include "../../slh_dsa_c/slh_prehash.h"
#include <oqs/oqs.h>

Expand All @@ -29,7 +30,7 @@ OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_128f_new(void) {
sig->length_signature = OQS_SIG_slh_dsa_pure_sha2_128f_length_signature;

sig->keypair = OQS_SIG_slh_dsa_pure_sha2_128f_keypair;
sig->keypair_from_seed = NULL;
sig->keypair_from_seed = OQS_SIG_slh_dsa_pure_sha2_128f_keypair_from_seed;
sig->sign = OQS_SIG_slh_dsa_pure_sha2_128f_sign;
sig->verify = OQS_SIG_slh_dsa_pure_sha2_128f_verify;
sig->sign_with_ctx_str = OQS_SIG_slh_dsa_pure_sha2_128f_sign_with_ctx_str;
Expand All @@ -51,6 +52,18 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_keypair(uint8_t *public_key, u
return slh_keygen(secret_key, public_key, rbg, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_keypair_from_seed(
uint8_t *public_key, uint8_t *secret_key,
const uint8_t *seed, size_t seed_len) {

const slh_param_t *prm = &slh_dsa_sha2_128f;
if (seed_len != 3 * prm->n) {
return OQS_ERROR;
}
return slh_keygen_internal(secret_key, public_key,
seed, seed + prm->n, seed + 2 * prm->n, prm);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if we have variables for seed, seed + prm->n, seed + 2 * prm->n? Maybe its not so idiomatic but improves readability.

}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128f_sign(uint8_t *signature, size_t *signature_len,
const uint8_t *message, size_t message_len, const uint8_t *secret_key) {

Expand Down
15 changes: 14 additions & 1 deletion src/sig/slh_dsa/wrappers/pure/slh_dsa_pure_sha2_128s.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "../../sig_slh_dsa.h"
#include "../../slh_dsa_c/slh_dsa.h"
#include "../../slh_dsa_c/slh_param.h"
#include "../../slh_dsa_c/slh_prehash.h"
#include <oqs/oqs.h>

Expand All @@ -29,7 +30,7 @@ OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_128s_new(void) {
sig->length_signature = OQS_SIG_slh_dsa_pure_sha2_128s_length_signature;

sig->keypair = OQS_SIG_slh_dsa_pure_sha2_128s_keypair;
sig->keypair_from_seed = NULL;
sig->keypair_from_seed = OQS_SIG_slh_dsa_pure_sha2_128s_keypair_from_seed;
sig->sign = OQS_SIG_slh_dsa_pure_sha2_128s_sign;
sig->verify = OQS_SIG_slh_dsa_pure_sha2_128s_verify;
sig->sign_with_ctx_str = OQS_SIG_slh_dsa_pure_sha2_128s_sign_with_ctx_str;
Expand All @@ -51,6 +52,18 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_keypair(uint8_t *public_key, u
return slh_keygen(secret_key, public_key, rbg, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_keypair_from_seed(
uint8_t *public_key, uint8_t *secret_key,
const uint8_t *seed, size_t seed_len) {

const slh_param_t *prm = &slh_dsa_sha2_128s;
if (seed_len != 3 * prm->n) {
return OQS_ERROR;
}
return slh_keygen_internal(secret_key, public_key,
seed, seed + prm->n, seed + 2 * prm->n, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_128s_sign(uint8_t *signature, size_t *signature_len,
const uint8_t *message, size_t message_len, const uint8_t *secret_key) {

Expand Down
15 changes: 14 additions & 1 deletion src/sig/slh_dsa/wrappers/pure/slh_dsa_pure_sha2_192f.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "../../sig_slh_dsa.h"
#include "../../slh_dsa_c/slh_dsa.h"
#include "../../slh_dsa_c/slh_param.h"
#include "../../slh_dsa_c/slh_prehash.h"
#include <oqs/oqs.h>

Expand All @@ -29,7 +30,7 @@ OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_192f_new(void) {
sig->length_signature = OQS_SIG_slh_dsa_pure_sha2_192f_length_signature;

sig->keypair = OQS_SIG_slh_dsa_pure_sha2_192f_keypair;
sig->keypair_from_seed = NULL;
sig->keypair_from_seed = OQS_SIG_slh_dsa_pure_sha2_192f_keypair_from_seed;
sig->sign = OQS_SIG_slh_dsa_pure_sha2_192f_sign;
sig->verify = OQS_SIG_slh_dsa_pure_sha2_192f_verify;
sig->sign_with_ctx_str = OQS_SIG_slh_dsa_pure_sha2_192f_sign_with_ctx_str;
Expand All @@ -51,6 +52,18 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_keypair(uint8_t *public_key, u
return slh_keygen(secret_key, public_key, rbg, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_keypair_from_seed(
uint8_t *public_key, uint8_t *secret_key,
const uint8_t *seed, size_t seed_len) {

const slh_param_t *prm = &slh_dsa_sha2_192f;
if (seed_len != 3 * prm->n) {
return OQS_ERROR;
}
return slh_keygen_internal(secret_key, public_key,
seed, seed + prm->n, seed + 2 * prm->n, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192f_sign(uint8_t *signature, size_t *signature_len,
const uint8_t *message, size_t message_len, const uint8_t *secret_key) {

Expand Down
15 changes: 14 additions & 1 deletion src/sig/slh_dsa/wrappers/pure/slh_dsa_pure_sha2_192s.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "../../sig_slh_dsa.h"
#include "../../slh_dsa_c/slh_dsa.h"
#include "../../slh_dsa_c/slh_param.h"
#include "../../slh_dsa_c/slh_prehash.h"
#include <oqs/oqs.h>

Expand All @@ -29,7 +30,7 @@ OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_192s_new(void) {
sig->length_signature = OQS_SIG_slh_dsa_pure_sha2_192s_length_signature;

sig->keypair = OQS_SIG_slh_dsa_pure_sha2_192s_keypair;
sig->keypair_from_seed = NULL;
sig->keypair_from_seed = OQS_SIG_slh_dsa_pure_sha2_192s_keypair_from_seed;
sig->sign = OQS_SIG_slh_dsa_pure_sha2_192s_sign;
sig->verify = OQS_SIG_slh_dsa_pure_sha2_192s_verify;
sig->sign_with_ctx_str = OQS_SIG_slh_dsa_pure_sha2_192s_sign_with_ctx_str;
Expand All @@ -51,6 +52,18 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_keypair(uint8_t *public_key, u
return slh_keygen(secret_key, public_key, rbg, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_keypair_from_seed(
uint8_t *public_key, uint8_t *secret_key,
const uint8_t *seed, size_t seed_len) {

const slh_param_t *prm = &slh_dsa_sha2_192s;
if (seed_len != 3 * prm->n) {
return OQS_ERROR;
}
return slh_keygen_internal(secret_key, public_key,
seed, seed + prm->n, seed + 2 * prm->n, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_192s_sign(uint8_t *signature, size_t *signature_len,
const uint8_t *message, size_t message_len, const uint8_t *secret_key) {

Expand Down
15 changes: 14 additions & 1 deletion src/sig/slh_dsa/wrappers/pure/slh_dsa_pure_sha2_256f.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "../../sig_slh_dsa.h"
#include "../../slh_dsa_c/slh_dsa.h"
#include "../../slh_dsa_c/slh_param.h"
#include "../../slh_dsa_c/slh_prehash.h"
#include <oqs/oqs.h>

Expand All @@ -29,7 +30,7 @@ OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_256f_new(void) {
sig->length_signature = OQS_SIG_slh_dsa_pure_sha2_256f_length_signature;

sig->keypair = OQS_SIG_slh_dsa_pure_sha2_256f_keypair;
sig->keypair_from_seed = NULL;
sig->keypair_from_seed = OQS_SIG_slh_dsa_pure_sha2_256f_keypair_from_seed;
sig->sign = OQS_SIG_slh_dsa_pure_sha2_256f_sign;
sig->verify = OQS_SIG_slh_dsa_pure_sha2_256f_verify;
sig->sign_with_ctx_str = OQS_SIG_slh_dsa_pure_sha2_256f_sign_with_ctx_str;
Expand All @@ -51,6 +52,18 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_keypair(uint8_t *public_key, u
return slh_keygen(secret_key, public_key, rbg, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_keypair_from_seed(
uint8_t *public_key, uint8_t *secret_key,
const uint8_t *seed, size_t seed_len) {

const slh_param_t *prm = &slh_dsa_sha2_256f;
if (seed_len != 3 * prm->n) {
return OQS_ERROR;
}
return slh_keygen_internal(secret_key, public_key,
seed, seed + prm->n, seed + 2 * prm->n, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256f_sign(uint8_t *signature, size_t *signature_len,
const uint8_t *message, size_t message_len, const uint8_t *secret_key) {

Expand Down
15 changes: 14 additions & 1 deletion src/sig/slh_dsa/wrappers/pure/slh_dsa_pure_sha2_256s.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "../../sig_slh_dsa.h"
#include "../../slh_dsa_c/slh_dsa.h"
#include "../../slh_dsa_c/slh_param.h"
#include "../../slh_dsa_c/slh_prehash.h"
#include <oqs/oqs.h>

Expand All @@ -29,7 +30,7 @@ OQS_SIG *OQS_SIG_slh_dsa_pure_sha2_256s_new(void) {
sig->length_signature = OQS_SIG_slh_dsa_pure_sha2_256s_length_signature;

sig->keypair = OQS_SIG_slh_dsa_pure_sha2_256s_keypair;
sig->keypair_from_seed = NULL;
sig->keypair_from_seed = OQS_SIG_slh_dsa_pure_sha2_256s_keypair_from_seed;
sig->sign = OQS_SIG_slh_dsa_pure_sha2_256s_sign;
sig->verify = OQS_SIG_slh_dsa_pure_sha2_256s_verify;
sig->sign_with_ctx_str = OQS_SIG_slh_dsa_pure_sha2_256s_sign_with_ctx_str;
Expand All @@ -51,6 +52,18 @@ OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_keypair(uint8_t *public_key, u
return slh_keygen(secret_key, public_key, rbg, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_keypair_from_seed(
uint8_t *public_key, uint8_t *secret_key,
const uint8_t *seed, size_t seed_len) {

const slh_param_t *prm = &slh_dsa_sha2_256s;
if (seed_len != 3 * prm->n) {
return OQS_ERROR;
}
return slh_keygen_internal(secret_key, public_key,
seed, seed + prm->n, seed + 2 * prm->n, prm);
}

OQS_API OQS_STATUS OQS_SIG_slh_dsa_pure_sha2_256s_sign(uint8_t *signature, size_t *signature_len,
const uint8_t *message, size_t message_len, const uint8_t *secret_key) {

Expand Down
Loading