UNPKG

2.03 kBTypeScriptView Raw
1/**
2 * This is a GF2 Polynomial abstraction that is not meant for production!
3 *
4 * It is easy to understand and it's correctness is as obvious as possible. It can be used to verify
5 * efficient implementations of algorithms on GF2.
6 */
7export class GF2Polynomial {
8 /**
9 * @type {Set<number>}
10 */
11 degrees: Set<number>;
12}
13export function createFromBytes(bytes: Uint8Array): GF2Polynomial;
14export function toUint8Array(p: GF2Polynomial, byteLength?: number): Uint8Array;
15export function createFromUint(uint: number): GF2Polynomial;
16export function createRandom(degree: number): GF2Polynomial;
17export function getHighestDegree(p: GF2Polynomial): number;
18export function addInto(p1: GF2Polynomial, p2: GF2Polynomial): void;
19export function orInto(p1: GF2Polynomial, p2: GF2Polynomial): void;
20export function add(p1: GF2Polynomial, p2: GF2Polynomial): GF2Polynomial;
21export function clone(p: GF2Polynomial): GF2Polynomial;
22export function addDegreeInto(p: GF2Polynomial, degree: number): void;
23export function multiply(p1: GF2Polynomial, p2: GF2Polynomial): GF2Polynomial;
24export function shiftLeft(p: GF2Polynomial, shift: number): GF2Polynomial;
25export function mod(p1: GF2Polynomial, p2: GF2Polynomial): GF2Polynomial;
26export function modPow(p: GF2Polynomial, e: number, m: GF2Polynomial): GF2Polynomial;
27export function gcd(p1: GF2Polynomial, p2: GF2Polynomial): GF2Polynomial;
28export function equals(p1: GF2Polynomial, p2: GF2Polynomial): boolean;
29export function isIrreducibleBenOr(p: GF2Polynomial): boolean;
30export function createIrreducible(degree: number): GF2Polynomial;
31export function fingerprint(buf: Uint8Array, m: GF2Polynomial): Uint8Array;
32export class RabinPolynomialEncoder {
33 /**
34 * @param {GF2Polynomial} m The irreducible polynomial
35 */
36 constructor(m: GF2Polynomial);
37 fingerprint: GF2Polynomial;
38 m: GF2Polynomial;
39 /**
40 * @param {number} b
41 */
42 write(b: number): void;
43 getFingerprint(): Uint8Array;
44}
45//# sourceMappingURL=rabin-gf2-polynomial.d.ts.map
\No newline at end of file