@@ -38,7 +38,7 @@ ERL_NIF_TERM encapsulate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
3838 ERL_NIF_TERM ret ;
3939
4040 if (!get_pkey_from_octet_string (env , argv [0 ], argv [1 ], PKEY_PUB ,
41- & peer_pkey , & ret )) {
41+ NULL , & peer_pkey , & ret )) {
4242 goto err ;
4343 }
4444
@@ -92,7 +92,7 @@ ERL_NIF_TERM decapsulate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
9292 assign_goto (ret , err , EXCP_ERROR_N (env , 2 , "Invalid encapsulated secret" ));
9393 }
9494 if (!get_pkey_from_octet_string (env , argv [0 ], argv [1 ], PKEY_PRIV ,
95- & my_pkey , & ret )) {
95+ NULL , & my_pkey , & ret )) {
9696 goto err ;
9797 }
9898
@@ -229,8 +229,12 @@ ERL_NIF_TERM evp_generate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM a
229229 ErlNifBinary prv_key ;
230230 size_t key_len ;
231231 unsigned char * out_pub = NULL , * out_priv = NULL ;
232+ struct pkey_type_t * pkey_type = get_pkey_type (argv [0 ]);
232233
233- if (argv [0 ] == atom_x25519 )
234+ if (pkey_type ) {
235+ type = pkey_type -> evp_pkey_id ;
236+ }
237+ else if (argv [0 ] == atom_x25519 )
234238 type = EVP_PKEY_X25519 ;
235239#ifdef HAVE_X448
236240 else if (argv [0 ] == atom_x448 )
@@ -242,15 +246,6 @@ ERL_NIF_TERM evp_generate_key_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM a
242246 else if (argv [0 ] == atom_ed448 )
243247 type = EVP_PKEY_ED448 ;
244248#endif
245- #ifdef HAVE_ML_DSA
246- else if (argv [0 ] == atom_mldsa44 ) {
247- type = EVP_PKEY_ML_DSA_44 ;
248- } else if (argv [0 ] == atom_mldsa65 ) {
249- type = EVP_PKEY_ML_DSA_65 ;
250- } else if (argv [0 ] == atom_mldsa87 ) {
251- type = EVP_PKEY_ML_DSA_87 ;
252- }
253- #endif
254249#ifdef HAVE_ML_KEM
255250 else if (argv [0 ] == atom_mlkem512 ) {
256251 type = NID_ML_KEM_512 ;
0 commit comments