mirror of
https://github.com/kou029w/websri.git
synced 2025-01-18 16:08:16 +00:00
add strongestHashAlgorithms getter
This commit is contained in:
parent
c085fcbe8f
commit
ab57344af3
2 changed files with 47 additions and 0 deletions
|
@ -183,6 +183,14 @@ export class IntegrityMetadataSet {
|
||||||
return this.#set.length;
|
return this.#set.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get strongestHashAlgorithms(): ReadonlyArray<HashAlgorithm> {
|
||||||
|
const strongestHashAlgorithms = this.strongest
|
||||||
|
.map(({ alg }) => alg as HashAlgorithm)
|
||||||
|
.filter(Boolean);
|
||||||
|
|
||||||
|
return [...new Set(strongestHashAlgorithms)];
|
||||||
|
}
|
||||||
|
|
||||||
join(separator = " "): string {
|
join(separator = " "): string {
|
||||||
return this.#set.map(String).join(separator);
|
return this.#set.map(String).join(separator);
|
||||||
}
|
}
|
||||||
|
|
39
test/integrity-metadata-set/strongest-hash-algorithms.js
Normal file
39
test/integrity-metadata-set/strongest-hash-algorithms.js
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
import assert from "node:assert";
|
||||||
|
import { test } from "node:test";
|
||||||
|
import { IntegrityMetadataSet } from "../../dist/index.js";
|
||||||
|
|
||||||
|
test("pick the strongest hash algorithms", function () {
|
||||||
|
const integrityMetadataSet = new IntegrityMetadataSet(`
|
||||||
|
sha256-MV9b23bQeMQ7isAGTkoBZGErH853yGk0W/yUx1iU7dM=
|
||||||
|
sha384-VbxVaw0v4Pzlgrpf4Huq//A1ZTY4x6wNVJTCpkwL6hzFczHHwSpFzbyn9MNKCJ7r
|
||||||
|
sha512-wVJ82JPBJHc9gRkRlwyP5uhX1t9dySJr2KFgYUwM2WOk3eorlLt9NgIe+dhl1c6ilKgt1JoLsmn1H256V/eUIQ==
|
||||||
|
`);
|
||||||
|
|
||||||
|
assert.deepEqual(integrityMetadataSet.strongestHashAlgorithms, ["sha512"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("if there are no supported algorithms, return the empty set", function () {
|
||||||
|
const integrityMetadataSet = new IntegrityMetadataSet(`
|
||||||
|
sha1-lDpwLQbzRZmu4fjajvn3KWAx1pk=
|
||||||
|
md5-bNNVbesNpUvKBgtMOUeYOQ==
|
||||||
|
`);
|
||||||
|
|
||||||
|
assert.deepEqual(integrityMetadataSet.strongestHashAlgorithms, []);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("custom getPrioritizedHashAlgorithm function can be used", function () {
|
||||||
|
const integrityMetadataSet = new IntegrityMetadataSet(
|
||||||
|
`
|
||||||
|
sha256-MV9b23bQeMQ7isAGTkoBZGErH853yGk0W/yUx1iU7dM=
|
||||||
|
sha384-VbxVaw0v4Pzlgrpf4Huq//A1ZTY4x6wNVJTCpkwL6hzFczHHwSpFzbyn9MNKCJ7r
|
||||||
|
sha512-wVJ82JPBJHc9gRkRlwyP5uhX1t9dySJr2KFgYUwM2WOk3eorlLt9NgIe+dhl1c6ilKgt1JoLsmn1H256V/eUIQ==
|
||||||
|
`,
|
||||||
|
{
|
||||||
|
getPrioritizedHashAlgorithm() {
|
||||||
|
return "sha384";
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.deepEqual(integrityMetadataSet.strongestHashAlgorithms, ["sha384"]);
|
||||||
|
});
|
Loading…
Add table
Reference in a new issue