2023-03-26 06:03:10 -04:00
|
|
|
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { scrypt, scryptSync } from "node:crypto";
|
|
|
|
import { Buffer } from "node:buffer";
|
2023-11-21 23:13:56 -05:00
|
|
|
import { assertEquals } from "../../../../test_util/std/testing/asserts.ts";
|
2023-04-18 08:29:10 -04:00
|
|
|
|
|
|
|
Deno.test("scrypt works correctly", async () => {
|
2023-11-22 06:11:20 -05:00
|
|
|
const { promise, resolve } = Promise.withResolvers<boolean>();
|
2023-03-26 06:03:10 -04:00
|
|
|
|
|
|
|
scrypt("password", "salt", 32, (err, key) => {
|
|
|
|
if (err) throw err;
|
|
|
|
assertEquals(
|
|
|
|
key,
|
|
|
|
Buffer.from([
|
|
|
|
116,
|
|
|
|
87,
|
|
|
|
49,
|
|
|
|
175,
|
|
|
|
68,
|
|
|
|
132,
|
|
|
|
243,
|
|
|
|
35,
|
|
|
|
150,
|
|
|
|
137,
|
|
|
|
105,
|
|
|
|
237,
|
|
|
|
162,
|
|
|
|
137,
|
|
|
|
174,
|
|
|
|
238,
|
|
|
|
0,
|
|
|
|
91,
|
|
|
|
89,
|
|
|
|
3,
|
|
|
|
172,
|
|
|
|
86,
|
|
|
|
30,
|
|
|
|
100,
|
|
|
|
165,
|
|
|
|
172,
|
|
|
|
161,
|
|
|
|
33,
|
|
|
|
121,
|
|
|
|
123,
|
|
|
|
247,
|
|
|
|
115,
|
|
|
|
]),
|
|
|
|
);
|
2023-11-22 06:11:20 -05:00
|
|
|
resolve(true);
|
2023-03-26 06:03:10 -04:00
|
|
|
});
|
2023-04-18 08:29:10 -04:00
|
|
|
|
|
|
|
await promise;
|
2023-03-26 06:03:10 -04:00
|
|
|
});
|
|
|
|
|
2023-04-18 08:29:10 -04:00
|
|
|
Deno.test("scrypt works with options", async () => {
|
2023-11-22 06:11:20 -05:00
|
|
|
const { promise, resolve } = Promise.withResolvers<boolean>();
|
2023-04-18 08:29:10 -04:00
|
|
|
|
2023-03-26 06:03:10 -04:00
|
|
|
scrypt(
|
|
|
|
"password",
|
|
|
|
"salt",
|
|
|
|
32,
|
|
|
|
{
|
|
|
|
N: 512,
|
|
|
|
},
|
|
|
|
(err, key) => {
|
|
|
|
if (err) throw err;
|
|
|
|
assertEquals(
|
|
|
|
key,
|
|
|
|
Buffer.from([
|
|
|
|
57,
|
|
|
|
134,
|
|
|
|
165,
|
|
|
|
72,
|
|
|
|
236,
|
|
|
|
9,
|
|
|
|
166,
|
|
|
|
182,
|
|
|
|
42,
|
|
|
|
46,
|
|
|
|
138,
|
|
|
|
230,
|
|
|
|
251,
|
|
|
|
154,
|
|
|
|
25,
|
|
|
|
15,
|
|
|
|
214,
|
|
|
|
209,
|
|
|
|
57,
|
|
|
|
208,
|
|
|
|
31,
|
|
|
|
163,
|
|
|
|
203,
|
|
|
|
87,
|
|
|
|
251,
|
|
|
|
42,
|
|
|
|
144,
|
|
|
|
179,
|
|
|
|
98,
|
|
|
|
92,
|
|
|
|
193,
|
|
|
|
71,
|
|
|
|
]),
|
|
|
|
);
|
2023-11-22 06:11:20 -05:00
|
|
|
resolve(true);
|
2023-03-26 06:03:10 -04:00
|
|
|
},
|
|
|
|
);
|
2023-04-18 08:29:10 -04:00
|
|
|
|
|
|
|
await promise;
|
2023-03-26 06:03:10 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("scryptSync works correctly", () => {
|
|
|
|
const key = scryptSync("password", "salt", 32);
|
|
|
|
assertEquals(
|
|
|
|
key,
|
|
|
|
Buffer.from([
|
|
|
|
116,
|
|
|
|
87,
|
|
|
|
49,
|
|
|
|
175,
|
|
|
|
68,
|
|
|
|
132,
|
|
|
|
243,
|
|
|
|
35,
|
|
|
|
150,
|
|
|
|
137,
|
|
|
|
105,
|
|
|
|
237,
|
|
|
|
162,
|
|
|
|
137,
|
|
|
|
174,
|
|
|
|
238,
|
|
|
|
0,
|
|
|
|
91,
|
|
|
|
89,
|
|
|
|
3,
|
|
|
|
172,
|
|
|
|
86,
|
|
|
|
30,
|
|
|
|
100,
|
|
|
|
165,
|
|
|
|
172,
|
|
|
|
161,
|
|
|
|
33,
|
|
|
|
121,
|
|
|
|
123,
|
|
|
|
247,
|
|
|
|
115,
|
|
|
|
]),
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("scryptSync with options works correctly", () => {
|
|
|
|
const key = scryptSync("password", "salt", 32, { N: 512 });
|
|
|
|
assertEquals(
|
|
|
|
key,
|
|
|
|
Buffer.from([
|
|
|
|
57,
|
|
|
|
134,
|
|
|
|
165,
|
|
|
|
72,
|
|
|
|
236,
|
|
|
|
9,
|
|
|
|
166,
|
|
|
|
182,
|
|
|
|
42,
|
|
|
|
46,
|
|
|
|
138,
|
|
|
|
230,
|
|
|
|
251,
|
|
|
|
154,
|
|
|
|
25,
|
|
|
|
15,
|
|
|
|
214,
|
|
|
|
209,
|
|
|
|
57,
|
|
|
|
208,
|
|
|
|
31,
|
|
|
|
163,
|
|
|
|
203,
|
|
|
|
87,
|
|
|
|
251,
|
|
|
|
42,
|
|
|
|
144,
|
|
|
|
179,
|
|
|
|
98,
|
|
|
|
92,
|
|
|
|
193,
|
|
|
|
71,
|
|
|
|
]),
|
|
|
|
);
|
|
|
|
});
|