2025-03-18 19:28:35 +01:00
|
|
|
<!DOCTYPE html>
|
2024-01-23 11:44:23 -07:00
|
|
|
<script src="../include.js"></script>
|
|
|
|
|
<script>
|
|
|
|
|
function bufferToHex(buffer) {
|
|
|
|
|
return [...new Uint8Array(buffer)].map(b => b.toString(16).padStart(2, "0")).join("");
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-21 18:52:06 -06:00
|
|
|
asyncTest(async (done) => {
|
2024-01-23 11:44:23 -07:00
|
|
|
let key_material = "password";
|
|
|
|
|
let enc = new TextEncoder();
|
|
|
|
|
let key = await window.crypto.subtle.importKey(
|
|
|
|
|
"raw",
|
|
|
|
|
enc.encode(key_material),
|
|
|
|
|
{ name: "PBKDF2" },
|
|
|
|
|
false,
|
|
|
|
|
["deriveBits", "deriveKey"]
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
println(`imported key: ${key}`);
|
|
|
|
|
println(`imported key.type: ${key.type}`);
|
|
|
|
|
println(`imported key.extractable: ${key.extractable}`);
|
|
|
|
|
println(`imported key.algorithm: ${JSON.stringify(key.algorithm)}`);
|
2024-03-06 19:11:08 -07:00
|
|
|
println(`imported key.usages: ${key.usages}`);
|
2024-01-23 11:44:23 -07:00
|
|
|
|
|
|
|
|
let message = "Hello, world!";
|
|
|
|
|
let encoded_message = enc.encode(message);
|
|
|
|
|
|
|
|
|
|
let digest = await window.crypto.subtle.digest("SHA-256", encoded_message);
|
|
|
|
|
|
|
|
|
|
println(`SHA-256 digest: ${bufferToHex(digest)}`);
|
2024-03-21 18:52:06 -06:00
|
|
|
done();
|
2024-01-23 11:44:23 -07:00
|
|
|
});
|
|
|
|
|
</script>
|