diff --git a/src/fsi.spec.ts b/src/fsi.spec.ts index 8ef19bd..ca6d446 100644 --- a/src/fsi.spec.ts +++ b/src/fsi.spec.ts @@ -1,16 +1,19 @@ -import { fsi20DecNewSolver, fsi20DecOldSolver, fsi20HexSolver } from "./fsi"; +import { fsi20DecNewSolver, fsi20DecOldSolver, fsiHexSolver } from "./fsi"; describe("Test Fujitsu-Siemens 5x4 hexadecimal BIOS", () => { it("FSI key for 1234-4321-1234-4321-1234 is 35682708", () => { - expect(fsi20HexSolver("1234-4321-1234-4321-1234")).toEqual(["35683789"]); + expect(fsiHexSolver("1234-4321-1234-4321-1234")).toEqual(["35683789"]); }); it("FSI key for AAAA-BBBB-CCCC-DEAD-BEEF is 64830592", () => { - expect(fsi20HexSolver("AAAA-BBBB-CCCC-DEAD-BEEF")).toEqual(["64830592"]); - expect(fsi20HexSolver("AAAABBBBCCCCDEADBEEF")).toEqual(["64830592"]); + expect(fsiHexSolver("AAAA-BBBB-CCCC-DEAD-BEEF")).toEqual(["64830592"]); + expect(fsiHexSolver("AAAABBBBCCCCDEADBEEF")).toEqual(["64830592"]); + }); + it("FSI key for DEADBEEF is 64830592", () => { + expect(fsiHexSolver("DEADBEEF")).toEqual(["64830592"]); }); it("test invalid keys", () => { - expect(fsi20HexSolver("AAAA-BBBB-CCCC-DEAD-CODE")).toEqual([]); - expect(fsi20HexSolver("AAAA-BBBB-CCCC-DEAD-BEEF-12")).toEqual([]); + expect(fsiHexSolver("AAAA-BBBB-CCCC-DEAD-CODE")).toEqual([]); + expect(fsiHexSolver("AAAA-BBBB-CCCC-DEAD-BEEF-12")).toEqual([]); }); }); diff --git a/src/fsi.ts b/src/fsi.ts index 096d657..4be68f5 100644 --- a/src/fsi.ts +++ b/src/fsi.ts @@ -19,7 +19,7 @@ function generateCRC16Table(): number[] { const crc16Table = generateCRC16Table(); /* For Fujinsu-Siemens. 8 or 5x4 hexadecimal digits. */ -function fsi20HexKeygen(serial: string): string { +function fsiHexKeygen(serial: string): string { function hashToString(hash: number) { const zero = "0".charCodeAt(0); @@ -122,11 +122,11 @@ function fsi20DecNewKeygen(serial: string): string { }).join(""); } -export let fsi20HexSolver = makeSolver({ +export let fsiHexSolver = makeSolver({ name: "Fujitsu-Siemens hexdigits", - examples: ["AAAA-BBBB-CCCC-DEAD-BEEF"], - inputValidator: (s) => /^[0-9ABCDEF]{20}$/i.test(s), - fun: (code: string) => [fsi20HexKeygen(code)] + examples: ["DEADBEEF", "AAAA-BBBB-CCCC-DEAD-BEEF"], + inputValidator: (s) => /^([0-9ABCDEF]{20}|[0-9ABCDEF]{8})$/i.test(s), + fun: (code: string) => [fsiHexKeygen(code)] }); export let fsi20DecNewSolver = makeSolver({