@@ -28,10 +28,15 @@ typedef struct mlkem_key {
2828} mlkem_key ;
2929
3030int mlkem_make_key (prng_state * prng , int wprng , int alg , mlkem_key * key );
31+ int mlkem_make_key_from_seed (int alg , const unsigned char * seed , unsigned long seedlen , mlkem_key * key );
3132void mlkem_free (mlkem_key * key );
3233
34+ int mlkem_export (unsigned char * out , unsigned long * outlen , int which , const mlkem_key * key );
3335int mlkem_export_raw (unsigned char * out , unsigned long * outlen , int which , const mlkem_key * key );
36+ int mlkem_import (const unsigned char * in , unsigned long inlen , mlkem_key * key );
3437int mlkem_import_raw (const unsigned char * in , unsigned long inlen , int which , int alg , mlkem_key * key );
38+ int mlkem_import_x509 (const unsigned char * in , unsigned long inlen , mlkem_key * key );
39+ int mlkem_import_pkcs8 (const unsigned char * in , unsigned long inlen , const password_ctx * pw_ctx , mlkem_key * key );
3540
3641int mlkem_encaps (unsigned char * ct , unsigned long * ctlen ,
3742 unsigned char * shared_secret , unsigned long * sslen ,
@@ -72,10 +77,15 @@ typedef struct mldsa_key {
7277} mldsa_key ;
7378
7479int mldsa_make_key (prng_state * prng , int wprng , int alg , mldsa_key * key );
80+ int mldsa_make_key_from_seed (int alg , const unsigned char * seed , unsigned long seedlen , mldsa_key * key );
7581void mldsa_free (mldsa_key * key );
7682
83+ int mldsa_export (unsigned char * out , unsigned long * outlen , int which , const mldsa_key * key );
7784int mldsa_export_raw (unsigned char * out , unsigned long * outlen , int which , const mldsa_key * key );
85+ int mldsa_import (const unsigned char * in , unsigned long inlen , mldsa_key * key );
7886int mldsa_import_raw (const unsigned char * in , unsigned long inlen , int which , int alg , mldsa_key * key );
87+ int mldsa_import_x509 (const unsigned char * in , unsigned long inlen , mldsa_key * key );
88+ int mldsa_import_pkcs8 (const unsigned char * in , unsigned long inlen , const password_ctx * pw_ctx , mldsa_key * key );
7989
8090int mldsa_sign (const unsigned char * msg , unsigned long msglen ,
8191 unsigned char * sig , unsigned long * siglen ,
@@ -110,7 +120,19 @@ enum ltc_slhdsa_id {
110120 LTC_SLHDSA_SHAKE_192S = 8 ,
111121 LTC_SLHDSA_SHAKE_192F = 9 ,
112122 LTC_SLHDSA_SHAKE_256S = 10 ,
113- LTC_SLHDSA_SHAKE_256F = 11
123+ LTC_SLHDSA_SHAKE_256F = 11 ,
124+ LTC_SLHDSA_HASH_SHA2_128S_WITH_SHA256 = 12 ,
125+ LTC_SLHDSA_HASH_SHA2_128F_WITH_SHA256 = 13 ,
126+ LTC_SLHDSA_HASH_SHA2_192S_WITH_SHA512 = 14 ,
127+ LTC_SLHDSA_HASH_SHA2_192F_WITH_SHA512 = 15 ,
128+ LTC_SLHDSA_HASH_SHA2_256S_WITH_SHA512 = 16 ,
129+ LTC_SLHDSA_HASH_SHA2_256F_WITH_SHA512 = 17 ,
130+ LTC_SLHDSA_HASH_SHAKE_128S_WITH_SHAKE128 = 18 ,
131+ LTC_SLHDSA_HASH_SHAKE_128F_WITH_SHAKE128 = 19 ,
132+ LTC_SLHDSA_HASH_SHAKE_192S_WITH_SHAKE256 = 20 ,
133+ LTC_SLHDSA_HASH_SHAKE_192F_WITH_SHAKE256 = 21 ,
134+ LTC_SLHDSA_HASH_SHAKE_256S_WITH_SHAKE256 = 22 ,
135+ LTC_SLHDSA_HASH_SHAKE_256F_WITH_SHAKE256 = 23
114136};
115137
116138/** SLH-DSA key */
@@ -130,8 +152,12 @@ typedef struct slhdsa_key {
130152int slhdsa_make_key (prng_state * prng , int wprng , int alg , slhdsa_key * key );
131153void slhdsa_free (slhdsa_key * key );
132154
155+ int slhdsa_export (unsigned char * out , unsigned long * outlen , int which , const slhdsa_key * key );
133156int slhdsa_export_raw (unsigned char * out , unsigned long * outlen , int which , const slhdsa_key * key );
157+ int slhdsa_import (const unsigned char * in , unsigned long inlen , slhdsa_key * key );
134158int slhdsa_import_raw (const unsigned char * in , unsigned long inlen , int which , int alg , slhdsa_key * key );
159+ int slhdsa_import_x509 (const unsigned char * in , unsigned long inlen , slhdsa_key * key );
160+ int slhdsa_import_pkcs8 (const unsigned char * in , unsigned long inlen , const password_ctx * pw_ctx , slhdsa_key * key );
135161
136162int slhdsa_sign (const unsigned char * msg , unsigned long msglen ,
137163 unsigned char * sig , unsigned long * siglen ,
0 commit comments