Skip to content

Commit 66d445c

Browse files
authored
Add GenerateAllChecksums operation
* Add GenerateAllChecksums operation * Remove checksums from GenerateAllHashes operation
2 parents b2045e5 + 1089c6b commit 66d445c

File tree

6 files changed

+1061
-34
lines changed

6 files changed

+1061
-34
lines changed

src/core/config/Categories.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@
406406
"name": "Hashing",
407407
"ops": [
408408
"Analyse hash",
409+
"Generate all checksums",
409410
"Generate all hashes",
410411
"MD2",
411412
"MD4",
Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
/**
2+
* @author r4mos [[email protected]]
3+
* @copyright Crown Copyright 2025
4+
* @license Apache-2.0
5+
*/
6+
7+
import Operation from "../Operation.mjs";
8+
import Adler32Checksum from "./Adler32Checksum.mjs";
9+
import CRCChecksum from "./CRCChecksum.mjs";
10+
import Fletcher8Checksum from "./Fletcher8Checksum.mjs";
11+
import Fletcher16Checksum from "./Fletcher16Checksum.mjs";
12+
import Fletcher32Checksum from "./Fletcher32Checksum.mjs";
13+
import Fletcher64Checksum from "./Fletcher64Checksum.mjs";
14+
15+
/**
16+
* Generate all checksums operation
17+
*/
18+
class GenerateAllChecksums extends Operation {
19+
20+
/**
21+
* GenerateAllChecksums constructor
22+
*/
23+
constructor() {
24+
super();
25+
26+
this.name = "Generate all checksums";
27+
this.module = "Crypto";
28+
this.description = "Generates all available checksums for the input.";
29+
this.infoURL = "https://wikipedia.org/wiki/Cyclic_redundancy_check";
30+
this.inputType = "ArrayBuffer";
31+
this.outputType = "string";
32+
this.args = [
33+
{
34+
name: "Length (bits)",
35+
type: "option",
36+
value: [
37+
"All", "3", "4", "5", "6", "7", "8", "10", "11", "12", "13", "14", "15", "16", "17", "21", "24", "30", "31", "32", "40", "64", "82"
38+
]
39+
},
40+
{
41+
name: "Include names",
42+
type: "boolean",
43+
value: true
44+
},
45+
];
46+
47+
const adler32 = new Adler32Checksum;
48+
const crc = new CRCChecksum;
49+
const fletcher8 = new Fletcher8Checksum;
50+
const fletcher16 = new Fletcher16Checksum;
51+
const fletcher32 = new Fletcher32Checksum;
52+
const fletcher64 = new Fletcher64Checksum;
53+
this.checksums = [
54+
{name: "CRC-3/GSM", algo: crc, params: ["CRC-3/GSM"]},
55+
{name: "CRC-3/ROHC", algo: crc, params: ["CRC-3/ROHC"]},
56+
{name: "CRC-4/G-704", algo: crc, params: ["CRC-4/G-704"]},
57+
{name: "CRC-4/INTERLAKEN", algo: crc, params: ["CRC-4/INTERLAKEN"]},
58+
{name: "CRC-4/ITU", algo: crc, params: ["CRC-4/ITU"]},
59+
{name: "CRC-5/EPC", algo: crc, params: ["CRC-5/EPC"]},
60+
{name: "CRC-5/EPC-C1G2", algo: crc, params: ["CRC-5/EPC-C1G2"]},
61+
{name: "CRC-5/G-704", algo: crc, params: ["CRC-5/G-704"]},
62+
{name: "CRC-5/ITU", algo: crc, params: ["CRC-5/ITU"]},
63+
{name: "CRC-5/USB", algo: crc, params: ["CRC-5/USB"]},
64+
{name: "CRC-6/CDMA2000-A", algo: crc, params: ["CRC-6/CDMA2000-A"]},
65+
{name: "CRC-6/CDMA2000-B", algo: crc, params: ["CRC-6/CDMA2000-B"]},
66+
{name: "CRC-6/DARC", algo: crc, params: ["CRC-6/DARC"]},
67+
{name: "CRC-6/G-704", algo: crc, params: ["CRC-6/G-704"]},
68+
{name: "CRC-6/GSM", algo: crc, params: ["CRC-6/GSM"]},
69+
{name: "CRC-6/ITU", algo: crc, params: ["CRC-6/ITU"]},
70+
{name: "CRC-7/MMC", algo: crc, params: ["CRC-7/MMC"]},
71+
{name: "CRC-7/ROHC", algo: crc, params: ["CRC-7/ROHC"]},
72+
{name: "CRC-7/UMTS", algo: crc, params: ["CRC-7/UMTS"]},
73+
{name: "CRC-8", algo: crc, params: ["CRC-8"]},
74+
{name: "CRC-8/8H2F", algo: crc, params: ["CRC-8/8H2F"]},
75+
{name: "CRC-8/AES", algo: crc, params: ["CRC-8/AES"]},
76+
{name: "CRC-8/AUTOSAR", algo: crc, params: ["CRC-8/AUTOSAR"]},
77+
{name: "CRC-8/BLUETOOTH", algo: crc, params: ["CRC-8/BLUETOOTH"]},
78+
{name: "CRC-8/CDMA2000", algo: crc, params: ["CRC-8/CDMA2000"]},
79+
{name: "CRC-8/DARC", algo: crc, params: ["CRC-8/DARC"]},
80+
{name: "CRC-8/DVB-S2", algo: crc, params: ["CRC-8/DVB-S2"]},
81+
{name: "CRC-8/EBU", algo: crc, params: ["CRC-8/EBU"]},
82+
{name: "CRC-8/GSM-A", algo: crc, params: ["CRC-8/GSM-A"]},
83+
{name: "CRC-8/GSM-B", algo: crc, params: ["CRC-8/GSM-B"]},
84+
{name: "CRC-8/HITAG", algo: crc, params: ["CRC-8/HITAG"]},
85+
{name: "CRC-8/I-432-1", algo: crc, params: ["CRC-8/I-432-1"]},
86+
{name: "CRC-8/I-CODE", algo: crc, params: ["CRC-8/I-CODE"]},
87+
{name: "CRC-8/ITU", algo: crc, params: ["CRC-8/ITU"]},
88+
{name: "CRC-8/LTE", algo: crc, params: ["CRC-8/LTE"]},
89+
{name: "CRC-8/MAXIM", algo: crc, params: ["CRC-8/MAXIM"]},
90+
{name: "CRC-8/MAXIM-DOW", algo: crc, params: ["CRC-8/MAXIM-DOW"]},
91+
{name: "CRC-8/MIFARE-MAD", algo: crc, params: ["CRC-8/MIFARE-MAD"]},
92+
{name: "CRC-8/NRSC-5", algo: crc, params: ["CRC-8/NRSC-5"]},
93+
{name: "CRC-8/OPENSAFETY", algo: crc, params: ["CRC-8/OPENSAFETY"]},
94+
{name: "CRC-8/ROHC", algo: crc, params: ["CRC-8/ROHC"]},
95+
{name: "CRC-8/SAE-J1850", algo: crc, params: ["CRC-8/SAE-J1850"]},
96+
{name: "CRC-8/SAE-J1850-ZERO", algo: crc, params: ["CRC-8/SAE-J1850-ZERO"]},
97+
{name: "CRC-8/SMBUS", algo: crc, params: ["CRC-8/SMBUS"]},
98+
{name: "CRC-8/TECH-3250", algo: crc, params: ["CRC-8/TECH-3250"]},
99+
{name: "CRC-8/WCDMA", algo: crc, params: ["CRC-8/WCDMA"]},
100+
{name: "Fletcher-8", algo: fletcher8, params: []},
101+
{name: "CRC-10/ATM", algo: crc, params: ["CRC-10/ATM"]},
102+
{name: "CRC-10/CDMA2000", algo: crc, params: ["CRC-10/CDMA2000"]},
103+
{name: "CRC-10/GSM", algo: crc, params: ["CRC-10/GSM"]},
104+
{name: "CRC-10/I-610", algo: crc, params: ["CRC-10/I-610"]},
105+
{name: "CRC-11/FLEXRAY", algo: crc, params: ["CRC-11/FLEXRAY"]},
106+
{name: "CRC-11/UMTS", algo: crc, params: ["CRC-11/UMTS"]},
107+
{name: "CRC-12/3GPP", algo: crc, params: ["CRC-12/3GPP"]},
108+
{name: "CRC-12/CDMA2000", algo: crc, params: ["CRC-12/CDMA2000"]},
109+
{name: "CRC-12/DECT", algo: crc, params: ["CRC-12/DECT"]},
110+
{name: "CRC-12/GSM", algo: crc, params: ["CRC-12/GSM"]},
111+
{name: "CRC-12/UMTS", algo: crc, params: ["CRC-12/UMTS"]},
112+
{name: "CRC-13/BBC", algo: crc, params: ["CRC-13/BBC"]},
113+
{name: "CRC-14/DARC", algo: crc, params: ["CRC-14/DARC"]},
114+
{name: "CRC-14/GSM", algo: crc, params: ["CRC-14/GSM"]},
115+
{name: "CRC-15/CAN", algo: crc, params: ["CRC-15/CAN"]},
116+
{name: "CRC-15/MPT1327", algo: crc, params: ["CRC-15/MPT1327"]},
117+
{name: "CRC-16", algo: crc, params: ["CRC-16"]},
118+
{name: "CRC-16/A", algo: crc, params: ["CRC-16/A"]},
119+
{name: "CRC-16/ACORN", algo: crc, params: ["CRC-16/ACORN"]},
120+
{name: "CRC-16/ARC", algo: crc, params: ["CRC-16/ARC"]},
121+
{name: "CRC-16/AUG-CCITT", algo: crc, params: ["CRC-16/AUG-CCITT"]},
122+
{name: "CRC-16/AUTOSAR", algo: crc, params: ["CRC-16/AUTOSAR"]},
123+
{name: "CRC-16/B", algo: crc, params: ["CRC-16/B"]},
124+
{name: "CRC-16/BLUETOOTH", algo: crc, params: ["CRC-16/BLUETOOTH"]},
125+
{name: "CRC-16/BUYPASS", algo: crc, params: ["CRC-16/BUYPASS"]},
126+
{name: "CRC-16/CCITT", algo: crc, params: ["CRC-16/CCITT"]},
127+
{name: "CRC-16/CCITT-FALSE", algo: crc, params: ["CRC-16/CCITT-FALSE"]},
128+
{name: "CRC-16/CCITT-TRUE", algo: crc, params: ["CRC-16/CCITT-TRUE"]},
129+
{name: "CRC-16/CCITT-ZERO", algo: crc, params: ["CRC-16/CCITT-ZERO"]},
130+
{name: "CRC-16/CDMA2000", algo: crc, params: ["CRC-16/CDMA2000"]},
131+
{name: "CRC-16/CMS", algo: crc, params: ["CRC-16/CMS"]},
132+
{name: "CRC-16/DARC", algo: crc, params: ["CRC-16/DARC"]},
133+
{name: "CRC-16/DDS-110", algo: crc, params: ["CRC-16/DDS-110"]},
134+
{name: "CRC-16/DECT-R", algo: crc, params: ["CRC-16/DECT-R"]},
135+
{name: "CRC-16/DECT-X", algo: crc, params: ["CRC-16/DECT-X"]},
136+
{name: "CRC-16/DNP", algo: crc, params: ["CRC-16/DNP"]},
137+
{name: "CRC-16/EN-13757", algo: crc, params: ["CRC-16/EN-13757"]},
138+
{name: "CRC-16/EPC", algo: crc, params: ["CRC-16/EPC"]},
139+
{name: "CRC-16/EPC-C1G2", algo: crc, params: ["CRC-16/EPC-C1G2"]},
140+
{name: "CRC-16/GENIBUS", algo: crc, params: ["CRC-16/GENIBUS"]},
141+
{name: "CRC-16/GSM", algo: crc, params: ["CRC-16/GSM"]},
142+
{name: "CRC-16/I-CODE", algo: crc, params: ["CRC-16/I-CODE"]},
143+
{name: "CRC-16/IBM", algo: crc, params: ["CRC-16/IBM"]},
144+
{name: "CRC-16/IBM-3740", algo: crc, params: ["CRC-16/IBM-3740"]},
145+
{name: "CRC-16/IBM-SDLC", algo: crc, params: ["CRC-16/IBM-SDLC"]},
146+
{name: "CRC-16/IEC-61158-2", algo: crc, params: ["CRC-16/IEC-61158-2"]},
147+
{name: "CRC-16/ISO-HDLC", algo: crc, params: ["CRC-16/ISO-HDLC"]},
148+
{name: "CRC-16/ISO-IEC-14443-3-A", algo: crc, params: ["CRC-16/ISO-IEC-14443-3-A"]},
149+
{name: "CRC-16/ISO-IEC-14443-3-B", algo: crc, params: ["CRC-16/ISO-IEC-14443-3-B"]},
150+
{name: "CRC-16/KERMIT", algo: crc, params: ["CRC-16/KERMIT"]},
151+
{name: "CRC-16/LHA", algo: crc, params: ["CRC-16/LHA"]},
152+
{name: "CRC-16/LJ1200", algo: crc, params: ["CRC-16/LJ1200"]},
153+
{name: "CRC-16/LTE", algo: crc, params: ["CRC-16/LTE"]},
154+
{name: "CRC-16/M17", algo: crc, params: ["CRC-16/M17"]},
155+
{name: "CRC-16/MAXIM", algo: crc, params: ["CRC-16/MAXIM"]},
156+
{name: "CRC-16/MAXIM-DOW", algo: crc, params: ["CRC-16/MAXIM-DOW"]},
157+
{name: "CRC-16/MCRF4XX", algo: crc, params: ["CRC-16/MCRF4XX"]},
158+
{name: "CRC-16/MODBUS", algo: crc, params: ["CRC-16/MODBUS"]},
159+
{name: "CRC-16/NRSC-5", algo: crc, params: ["CRC-16/NRSC-5"]},
160+
{name: "CRC-16/OPENSAFETY-A", algo: crc, params: ["CRC-16/OPENSAFETY-A"]},
161+
{name: "CRC-16/OPENSAFETY-B", algo: crc, params: ["CRC-16/OPENSAFETY-B"]},
162+
{name: "CRC-16/PROFIBUS", algo: crc, params: ["CRC-16/PROFIBUS"]},
163+
{name: "CRC-16/RIELLO", algo: crc, params: ["CRC-16/RIELLO"]},
164+
{name: "CRC-16/SPI-FUJITSU", algo: crc, params: ["CRC-16/SPI-FUJITSU"]},
165+
{name: "CRC-16/T10-DIF", algo: crc, params: ["CRC-16/T10-DIF"]},
166+
{name: "CRC-16/TELEDISK", algo: crc, params: ["CRC-16/TELEDISK"]},
167+
{name: "CRC-16/TMS37157", algo: crc, params: ["CRC-16/TMS37157"]},
168+
{name: "CRC-16/UMTS", algo: crc, params: ["CRC-16/UMTS"]},
169+
{name: "CRC-16/USB", algo: crc, params: ["CRC-16/USB"]},
170+
{name: "CRC-16/V-41-LSB", algo: crc, params: ["CRC-16/V-41-LSB"]},
171+
{name: "CRC-16/V-41-MSB", algo: crc, params: ["CRC-16/V-41-MSB"]},
172+
{name: "CRC-16/VERIFONE", algo: crc, params: ["CRC-16/VERIFONE"]},
173+
{name: "CRC-16/X-25", algo: crc, params: ["CRC-16/X-25"]},
174+
{name: "CRC-16/XMODEM", algo: crc, params: ["CRC-16/XMODEM"]},
175+
{name: "CRC-16/ZMODEM", algo: crc, params: ["CRC-16/ZMODEM"]},
176+
{name: "Fletcher-16", algo: fletcher16, params: []},
177+
{name: "CRC-17/CAN-FD", algo: crc, params: ["CRC-17/CAN-FD"]},
178+
{name: "CRC-21/CAN-FD", algo: crc, params: ["CRC-21/CAN-FD"]},
179+
{name: "CRC-24/BLE", algo: crc, params: ["CRC-24/BLE"]},
180+
{name: "CRC-24/FLEXRAY-A", algo: crc, params: ["CRC-24/FLEXRAY-A"]},
181+
{name: "CRC-24/FLEXRAY-B", algo: crc, params: ["CRC-24/FLEXRAY-B"]},
182+
{name: "CRC-24/INTERLAKEN", algo: crc, params: ["CRC-24/INTERLAKEN"]},
183+
{name: "CRC-24/LTE-A", algo: crc, params: ["CRC-24/LTE-A"]},
184+
{name: "CRC-24/LTE-B", algo: crc, params: ["CRC-24/LTE-B"]},
185+
{name: "CRC-24/OPENPGP", algo: crc, params: ["CRC-24/OPENPGP"]},
186+
{name: "CRC-24/OS-9", algo: crc, params: ["CRC-24/OS-9"]},
187+
{name: "CRC-30/CDMA", algo: crc, params: ["CRC-30/CDMA"]},
188+
{name: "CRC-31/PHILIPS", algo: crc, params: ["CRC-31/PHILIPS"]},
189+
{name: "Adler-32", algo: adler32, params: []},
190+
{name: "CRC-32", algo: crc, params: ["CRC-32"]},
191+
{name: "CRC-32/AAL5", algo: crc, params: ["CRC-32/AAL5"]},
192+
{name: "CRC-32/ADCCP", algo: crc, params: ["CRC-32/ADCCP"]},
193+
{name: "CRC-32/AIXM", algo: crc, params: ["CRC-32/AIXM"]},
194+
{name: "CRC-32/AUTOSAR", algo: crc, params: ["CRC-32/AUTOSAR"]},
195+
{name: "CRC-32/BASE91-C", algo: crc, params: ["CRC-32/BASE91-C"]},
196+
{name: "CRC-32/BASE91-D", algo: crc, params: ["CRC-32/BASE91-D"]},
197+
{name: "CRC-32/BZIP2", algo: crc, params: ["CRC-32/BZIP2"]},
198+
{name: "CRC-32/C", algo: crc, params: ["CRC-32/C"]},
199+
{name: "CRC-32/CASTAGNOLI", algo: crc, params: ["CRC-32/CASTAGNOLI"]},
200+
{name: "CRC-32/CD-ROM-EDC", algo: crc, params: ["CRC-32/CD-ROM-EDC"]},
201+
{name: "CRC-32/CKSUM", algo: crc, params: ["CRC-32/CKSUM"]},
202+
{name: "CRC-32/D", algo: crc, params: ["CRC-32/D"]},
203+
{name: "CRC-32/DECT-B", algo: crc, params: ["CRC-32/DECT-B"]},
204+
{name: "CRC-32/INTERLAKEN", algo: crc, params: ["CRC-32/INTERLAKEN"]},
205+
{name: "CRC-32/ISCSI", algo: crc, params: ["CRC-32/ISCSI"]},
206+
{name: "CRC-32/ISO-HDLC", algo: crc, params: ["CRC-32/ISO-HDLC"]},
207+
{name: "CRC-32/JAMCRC", algo: crc, params: ["CRC-32/JAMCRC"]},
208+
{name: "CRC-32/MEF", algo: crc, params: ["CRC-32/MEF"]},
209+
{name: "CRC-32/MPEG-2", algo: crc, params: ["CRC-32/MPEG-2"]},
210+
{name: "CRC-32/NVME", algo: crc, params: ["CRC-32/NVME"]},
211+
{name: "CRC-32/PKZIP", algo: crc, params: ["CRC-32/PKZIP"]},
212+
{name: "CRC-32/POSIX", algo: crc, params: ["CRC-32/POSIX"]},
213+
{name: "CRC-32/Q", algo: crc, params: ["CRC-32/Q"]},
214+
{name: "CRC-32/SATA", algo: crc, params: ["CRC-32/SATA"]},
215+
{name: "CRC-32/V-42", algo: crc, params: ["CRC-32/V-42"]},
216+
{name: "CRC-32/XFER", algo: crc, params: ["CRC-32/XFER"]},
217+
{name: "CRC-32/XZ", algo: crc, params: ["CRC-32/XZ"]},
218+
{name: "Fletcher-32", algo: fletcher32, params: []},
219+
{name: "CRC-40/GSM", algo: crc, params: ["CRC-40/GSM"]},
220+
{name: "CRC-64/ECMA-182", algo: crc, params: ["CRC-64/ECMA-182"]},
221+
{name: "CRC-64/GO-ECMA", algo: crc, params: ["CRC-64/GO-ECMA"]},
222+
{name: "CRC-64/GO-ISO", algo: crc, params: ["CRC-64/GO-ISO"]},
223+
{name: "CRC-64/MS", algo: crc, params: ["CRC-64/MS"]},
224+
{name: "CRC-64/NVME", algo: crc, params: ["CRC-64/NVME"]},
225+
{name: "CRC-64/REDIS", algo: crc, params: ["CRC-64/REDIS"]},
226+
{name: "CRC-64/WE", algo: crc, params: ["CRC-64/WE"]},
227+
{name: "CRC-64/XZ", algo: crc, params: ["CRC-64/XZ"]},
228+
{name: "Fletcher-64", algo: fletcher64, params: []},
229+
{name: "CRC-82/DARC", algo: crc, params: ["CRC-82/DARC"]}
230+
];
231+
}
232+
233+
/**
234+
* @param {ArrayBuffer} input
235+
* @param {Object[]} args
236+
* @returns {string}
237+
*/
238+
run(input, args) {
239+
const [length, includeNames] = args;
240+
let output = "";
241+
this.checksums.forEach(checksum => {
242+
const checksumLength = checksum.name.match(new RegExp("-(\\d{1,2})(\\/|$)"))[1];
243+
if (length === "All" || length === checksumLength) {
244+
const value = checksum.algo.run(new Uint8Array(input), checksum.params || []);
245+
output += includeNames ?
246+
`${checksum.name}:${" ".repeat(25-checksum.name.length)}${value}\n`:
247+
`${value}\n`;
248+
}
249+
});
250+
return output;
251+
}
252+
}
253+
254+
export default GenerateAllChecksums;

src/core/operations/GenerateAllHashes.mjs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@ import HAS160 from "./HAS160.mjs";
2222
import Whirlpool from "./Whirlpool.mjs";
2323
import SSDEEP from "./SSDEEP.mjs";
2424
import CTPH from "./CTPH.mjs";
25-
import Fletcher8Checksum from "./Fletcher8Checksum.mjs";
26-
import Fletcher16Checksum from "./Fletcher16Checksum.mjs";
27-
import Fletcher32Checksum from "./Fletcher32Checksum.mjs";
28-
import Fletcher64Checksum from "./Fletcher64Checksum.mjs";
29-
import Adler32Checksum from "./Adler32Checksum.mjs";
30-
import CRCChecksum from "./CRCChecksum.mjs";
3125
import BLAKE2b from "./BLAKE2b.mjs";
3226
import BLAKE2s from "./BLAKE2s.mjs";
3327
import Streebog from "./Streebog.mjs";
@@ -112,16 +106,6 @@ class GenerateAllHashes extends Operation {
112106
{name: "SSDEEP", algo: (new SSDEEP()), inputType: "str"},
113107
{name: "CTPH", algo: (new CTPH()), inputType: "str"}
114108
];
115-
this.checksums = [
116-
{name: "Fletcher-8", algo: (new Fletcher8Checksum), inputType: "byteArray", params: []},
117-
{name: "Fletcher-16", algo: (new Fletcher16Checksum), inputType: "byteArray", params: []},
118-
{name: "Fletcher-32", algo: (new Fletcher32Checksum), inputType: "byteArray", params: []},
119-
{name: "Fletcher-64", algo: (new Fletcher64Checksum), inputType: "byteArray", params: []},
120-
{name: "Adler-32", algo: (new Adler32Checksum), inputType: "byteArray", params: []},
121-
{name: "CRC-8", algo: (new CRCChecksum), inputType: "arrayBuffer", params: ["CRC-8"]},
122-
{name: "CRC-16", algo: (new CRCChecksum), inputType: "arrayBuffer", params: ["CRC-16"]},
123-
{name: "CRC-32", algo: (new CRCChecksum), inputType: "arrayBuffer", params: ["CRC-32"]}
124-
];
125109
}
126110

127111
/**
@@ -142,14 +126,6 @@ class GenerateAllHashes extends Operation {
142126
output += this.formatDigest(digest, length, includeNames, hash.name);
143127
});
144128

145-
if (length === "All") {
146-
output += "\nChecksums:\n";
147-
this.checksums.forEach(checksum => {
148-
digest = this.executeAlgo(checksum.algo, checksum.inputType, checksum.params || []);
149-
output += this.formatDigest(digest, length, includeNames, checksum.name);
150-
});
151-
}
152-
153129
return output;
154130
}
155131

tests/operations/index.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import "./tests/FileTree.mjs";
7070
import "./tests/FletcherChecksum.mjs";
7171
import "./tests/Fork.mjs";
7272
import "./tests/FromDecimal.mjs";
73+
import "./tests/GenerateAllChecksums.mjs";
7374
import "./tests/GenerateAllHashes.mjs";
7475
import "./tests/GenerateDeBruijnSequence.mjs";
7576
import "./tests/GetAllCasings.mjs";

0 commit comments

Comments
 (0)