Fix support for 8 hexadecimal fsi serials

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

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([]);
});
});

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({