︙ | | |
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
+
|
int pass_len = 0, salt_len = 0, fn;
int iklen, ivlen, iter = 1;
unsigned char *pass = NULL, *salt = NULL;
const EVP_MD *md = NULL;
const EVP_CIPHER *cipher = NULL;
int buf_len = (EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH)*4, dk_len = buf_len;
unsigned char tmpkeyiv[(EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH)*4];
(void) clientData;
dprintf("Called");
/* Clear errors */
Tcl_ResetResult(interp);
ERR_clear_error();
|
︙ | | |
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
-
|
LAPPEND_BARRAY(interp, resultObj, "iv", tmpkeyiv+iklen, ivlen);
Tcl_SetObjResult(interp, resultObj);
}
/* Clear data */
memset(tmpkeyiv, 0, buf_len);
return TCL_OK;
clientData = clientData;
}
/*
*-------------------------------------------------------------------
*
* KDF_HKDF --
*
|
︙ | | |
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
+
|
EVP_PKEY_CTX *pctx = NULL;
const EVP_MD *md = NULL;
unsigned char *salt = NULL, *key = NULL, *info = NULL, *out = NULL;
int salt_len = 0, key_len = 0, info_len = 0, res = TCL_OK, fn;
int dk_len = EVP_MAX_KEY_LENGTH + EVP_MAX_IV_LENGTH;
size_t out_len;
Tcl_Obj *resultObj;
(void) clientData;
dprintf("Called");
/* Clear errors */
Tcl_ResetResult(interp);
ERR_clear_error();
|
︙ | | |
317
318
319
320
321
322
323
324
325
326
327
328
329
330
|
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
|
+
|
static int KDF_Scrypt(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) {
EVP_PKEY_CTX *pctx = NULL;
unsigned char *salt = NULL, *pass = NULL, *out = NULL;
int salt_len = 0, pass_len = 0, dk_len = 64, res = TCL_OK, fn;
uint64_t N = 0, p = 0, r = 0, maxmem = 0;
size_t out_len;
Tcl_Obj *resultObj;
(void) clientData;
dprintf("Called");
/* Clear errors */
Tcl_ResetResult(interp);
ERR_clear_error();
|
︙ | | |
464
465
466
467
468
469
470
471
472
473
474
475
476
|
466
467
468
469
470
471
472
473
474
475
476
477
478
|
-
-
-
+
+
+
|
*
* Side effects:
* Creates commands
*
*-------------------------------------------------------------------
*/
int Tls_KDFCommands(Tcl_Interp *interp) {
Tcl_CreateObjCommand(interp, "tls::hkdf", KDF_HKDF, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "tls::pbkdf2", KDF_PBKDF2, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "tls::scrypt", KDF_Scrypt, (ClientData) 0, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "tls::hkdf", KDF_HKDF, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "tls::pbkdf2", KDF_PBKDF2, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
Tcl_CreateObjCommand(interp, "tls::scrypt", KDF_Scrypt, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
return TCL_OK;
}
|