diff --git a/crypto/finite_field.ts b/crypto/finite_field.ts index 99763703..1c8c88b8 100644 --- a/crypto/finite_field.ts +++ b/crypto/finite_field.ts @@ -195,5 +195,12 @@ function createField(p: bigint, t: bigint, twoadicRoot: bigint) { } return BigInt('0b' + binary.reverse().join('')); }, + leftShift(x: bigint, bits: number, maxBitSize: number = 64) { + let shifted = x << BigInt(bits); + return shifted & ((1n << BigInt(maxBitSize)) - 1n); + }, + rightShift(x: bigint, bits: number) { + return x >> BigInt(bits); + }, }; }