Skip to content

Commit 66e1e06

Browse files
committed
crypto: add crypto:kdf/4
1 parent 34baca9 commit 66e1e06

10 files changed

Lines changed: 1567 additions & 9 deletions

File tree

lib/crypto/c_src/Makefile.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ CRYPTO_OBJS = $(OBJDIR)/crypto$(TYPEMARKER).o \
109109
$(OBJDIR)/hash$(TYPEMARKER).o \
110110
$(OBJDIR)/hmac$(TYPEMARKER).o \
111111
$(OBJDIR)/info$(TYPEMARKER).o \
112+
$(OBJDIR)/kdf$(TYPEMARKER).o \
112113
$(OBJDIR)/mac$(TYPEMARKER).o \
113114
$(OBJDIR)/math$(TYPEMARKER).o \
114115
$(OBJDIR)/pkey$(TYPEMARKER).o \

lib/crypto/c_src/atoms.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,27 @@ ERL_NIF_TERM atom_mlkem768;
163163
ERL_NIF_TERM atom_mlkem1024;
164164
#endif
165165

166+
#ifdef HAVE_KDF
167+
ERL_NIF_TERM atom_salt;
168+
ERL_NIF_TERM atom_info;
169+
ERL_NIF_TERM atom_iterations;
170+
ERL_NIF_TERM atom_n;
171+
ERL_NIF_TERM atom_r;
172+
ERL_NIF_TERM atom_p;
173+
ERL_NIF_TERM atom_maxmem;
174+
ERL_NIF_TERM atom_mac;
175+
ERL_NIF_TERM atom_extract_and_expand;
176+
ERL_NIF_TERM atom_extract_only;
177+
ERL_NIF_TERM atom_expand_only;
178+
#endif
179+
180+
#ifdef HAVE_ARGON2
181+
ERL_NIF_TERM atom_memory;
182+
ERL_NIF_TERM atom_parallelism;
183+
ERL_NIF_TERM atom_secret;
184+
ERL_NIF_TERM atom_ad;
185+
#endif
186+
166187
int init_atoms(ErlNifEnv *env) {
167188
atom_true = enif_make_atom(env,"true");
168189
atom_false = enif_make_atom(env,"false");
@@ -296,5 +317,26 @@ int init_atoms(ErlNifEnv *env) {
296317
atom_mlkem768 = enif_make_atom(env,"mlkem768");
297318
atom_mlkem1024 = enif_make_atom(env,"mlkem1024");
298319
#endif
320+
321+
#ifdef HAVE_KDF
322+
atom_salt = enif_make_atom(env,"salt");
323+
atom_info = enif_make_atom(env,"info");
324+
atom_iterations = enif_make_atom(env,"iterations");
325+
atom_n = enif_make_atom(env,"n");
326+
atom_r = enif_make_atom(env,"r");
327+
atom_p = enif_make_atom(env,"p");
328+
atom_maxmem = enif_make_atom(env,"maxmem");
329+
atom_mac = enif_make_atom(env,"mac");
330+
atom_extract_and_expand = enif_make_atom(env,"extract_and_expand");
331+
atom_extract_only = enif_make_atom(env,"extract_only");
332+
atom_expand_only = enif_make_atom(env,"expand_only");
333+
#endif
334+
335+
#ifdef HAVE_ARGON2
336+
atom_memory = enif_make_atom(env,"memory");
337+
atom_parallelism = enif_make_atom(env,"parallelism");
338+
atom_secret = enif_make_atom(env,"secret");
339+
atom_ad = enif_make_atom(env,"ad");
340+
#endif
299341
return 1;
300342
}

lib/crypto/c_src/atoms.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,27 @@ extern ERL_NIF_TERM atom_mlkem768;
161161
extern ERL_NIF_TERM atom_mlkem1024;
162162
#endif
163163

164+
#ifdef HAVE_KDF
165+
extern ERL_NIF_TERM atom_salt;
166+
extern ERL_NIF_TERM atom_info;
167+
extern ERL_NIF_TERM atom_iterations;
168+
extern ERL_NIF_TERM atom_n;
169+
extern ERL_NIF_TERM atom_r;
170+
extern ERL_NIF_TERM atom_p;
171+
extern ERL_NIF_TERM atom_maxmem;
172+
extern ERL_NIF_TERM atom_mac;
173+
extern ERL_NIF_TERM atom_extract_and_expand;
174+
extern ERL_NIF_TERM atom_extract_only;
175+
extern ERL_NIF_TERM atom_expand_only;
176+
#endif
177+
178+
#ifdef HAVE_ARGON2
179+
extern ERL_NIF_TERM atom_memory;
180+
extern ERL_NIF_TERM atom_parallelism;
181+
extern ERL_NIF_TERM atom_secret;
182+
extern ERL_NIF_TERM atom_ad;
183+
#endif
184+
164185
int init_atoms(ErlNifEnv *env);
165186

166187
#endif /* E_ATOMS_H__ */

lib/crypto/c_src/crypto.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include "hash_equals.h"
4848
#include "hmac.h"
4949
#include "info.h"
50+
#include "kdf.h"
5051
#include "math.h"
5152
#include "pbkdf2_hmac.h"
5253
#include "pkey.h"
@@ -101,6 +102,8 @@ static ErlNifFunc nif_funcs[] = {
101102
{"hash_equals_nif", 2, hash_equals_nif, 0},
102103

103104
{"pbkdf2_hmac_nif", 5, pbkdf2_hmac_nif, 0},
105+
{"kdf_nif", 4, kdf_nif, 0},
106+
{"kdf_algorithms", 0, kdf_algorithms, 0},
104107
{"pkey_sign_nif", 5, pkey_sign_nif, 0},
105108
{"pkey_sign_heavy_nif", 5, pkey_sign_heavy_nif, ERL_NIF_DIRTY_JOB_CPU_BOUND},
106109
{"pkey_verify_nif", 6, pkey_verify_nif, 0},
@@ -341,6 +344,7 @@ static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info)
341344
init_mac_types(env);
342345
init_cipher_types(env);
343346
init_algorithms_types(env);
347+
init_kdf_types(env);
344348

345349
library_initialized = 1;
346350
ret = 0;

0 commit comments

Comments
 (0)