in src/ecdh.js [254:305]
PBKDF2: function(sha, Pass, Salt, rep, olen) {
var F = new Array(sha),
U = [],
S = [],
K = [],
opt = 0,
i, j, k, d, N, key;
d = Math.floor(olen / sha);
if (olen % sha !== 0) {
d++;
}
opt = 0;
for (i = 1; i <= d; i++) {
for (j = 0; j < Salt.length; j++) {
S[j] = Salt[j];
}
N = this.inttobytes(i, 4);
for (j = 0; j < 4; j++) {
S[Salt.length + j] = N[j];
}
this.HMAC(sha, S, Pass, F);
for (j = 0; j < sha; j++) {
U[j] = F[j];
}
for (j = 2; j <= rep; j++) {
this.HMAC(sha, U, Pass, U);
for (k = 0; k < sha; k++) {
F[k] ^= U[k];
}
}
for (j = 0; j < sha; j++) {
K[opt++] = F[j];
}
}
key = [];
for (i = 0; i < olen; i++) {
key[i] = K[i];
}
return key;
},