Fix support for 8 hexadecimal fsi serials

This commit is contained in:
Slava Bacherikov committed 2018-01-29 23:18:30 +02:00
1 parent e95542399c
commit 0f78f76539
2 files changed
+14 -11

No files matched your search

+9 -6
View File
@@ -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([]);
});
});
+5 -5
View File
@@ -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({