BIG

Kind: global class
this: {BIG}

new BIG()

General purpose Constructor

biG.zero() ⇒

set to zero

Kind: instance method of BIG
Returns: BIG number
this: {BIG}

biG.one() ⇒

set to one

Kind: instance method of BIG
Returns: BIG number
this: {BIG}

biG.iszilch() ⇒

test for zero

Kind: instance method of BIG
Returns: True if zero
this: {BIG}

biG.isunity() ⇒

test for unity

Kind: instance method of BIG
Returns: True if one
this: {BIG}

biG.cswap()

Conditional swap of two BIGs depending on d using XOR - no branches

Kind: instance method of BIG
this: {BIG}
Parameter: b BIG number
Parameter: d BIG number

biG.cmove()

Conditional move of BIG depending on d using XOR - no branches

Kind: instance method of BIG
this: {BIG}
Parameter: b BIG number
Parameter: d BIG number

biG.copy() ⇒

Copy from another BIG

Kind: instance method of BIG
Returns: The BIG object
this: {BIG}
Parameter: y BIG number

biG.hcopy() ⇒

copy from bottom half of ctx.DBIG

Kind: instance method of BIG
Returns: The new BIG object
this: {BIG}
Parameter: y BIG number

biG.rcopy() ⇒

copy from ROM

Kind: instance method of BIG
Returns: The BIG object
this: {BIG}
Parameter: y BIG number in ROM

biG.norm() ⇒

normalise BIG - force all digits < 2^BASEBITS

Kind: instance method of BIG
Returns: BIG number
this: {BIG}

biG.fshr() ⇒

Quick Fast shifts a BIG right by a small number of bits - input must be normalised, output will be normalised

Kind: instance method of BIG
Returns: r The shifted out part
this: {BIG}
Parameter: k Number of bits to shift

biG.shr() ⇒

General shift right by k bits

Kind: instance method of BIG
Returns: BIG number
this: {BIG}
Parameter: k Number of bits to shift

biG.fshl() ⇒

Fast shifts a BIG left by a small number of bits - input must be normalised, output will be normalised

Kind: instance method of BIG
Returns: r The shifted out part
this: {BIG}
Parameter: k Number of bits to shift

biG.shl() ⇒

General shift left by k bits

Kind: instance method of BIG
Returns: BIG number
this: {BIG}
Parameter: k Number of bits to shift

biG.nbits() ⇒

length in bits

Kind: instance method of BIG
Returns: The number of bigs in BIG object
this: {BIG}

biG.toString() ⇒

Convert to string

Kind: instance method of BIG
Returns: string representation of a BIG number
this: {BIG}

biG.add() ⇒

Sum two BIG mumbers

Kind: instance method of BIG
Returns: this+=y
this: {BIG}
Parameter: y BIG object

biG.or() ⇒

OR two BIG mumbers

Kind: instance method of BIG
Returns: this|=y
this: {BIG}
Parameter: y BIG object

biG.plus() ⇒

Sum two BIG mumbers

Kind: instance method of BIG
Returns: this+x
this: {BIG}
Parameter: x BIG object

biG.inc() ⇒

Sum BIG and integer

Kind: instance method of BIG
Returns: this+=i
this: {BIG}
Parameter: i Integer to add

biG.sub() ⇒

Subtract BIG from one another

Kind: instance method of BIG
Returns: this-=y
this: {BIG}
Parameter: y BIG object

biG.rsub() ⇒

Reverse subtract BIG from one another

Kind: instance method of BIG
Returns: this=x-this
this: {BIG}
Parameter: x BIG object

biG.dec() ⇒

Subtract integer from BIG

Kind: instance method of BIG
Returns: this-=i
this: {BIG}
Parameter: i Integer to subtract

biG.minus() ⇒

Subtract BIG

Kind: instance method of BIG
Returns: New BIG object
this: {BIG}
Parameter: x BIG object

biG.imul() ⇒

Multiply by small integer

Kind: instance method of BIG
Returns: this*c
this: {BIG}
Parameter: c small integer

biG.tobytearray()

convert this BIG to byte array

Kind: instance method of BIG
this: {BIG}

biG.toBytes()

convert this to byte array

Kind: instance method of BIG
this: {BIG}

biG.muladd()

this[i]+=x*y+c, and return high part

Kind: instance method of BIG
this: {BIG}

biG.pmul() ⇒

multiply by larger int

Kind: instance method of BIG
Returns: carry value
this: {BIG}
Parameter: c large integer

biG.pxmul() ⇒

multiply by still larger int - results requires a DBIG

Kind: instance method of BIG
Returns: DBIG object
this: {BIG}
Parameter: c large integer

biG.div3() ⇒

divide by 3

Kind: instance method of BIG
Returns: carry value
this: {BIG}

biG.mod2m() ⇒

set x = x mod 2^m

Kind: instance method of BIG
Returns: BIG object
this: {BIG}
Parameter: m Exponent

biG.invmod2m() ⇒

a=1/a mod 2^256. This is very fast!

Kind: instance method of BIG
Returns: BIG object
this: {BIG}

biG.mod() ⇒

reduce this mod m

Kind: instance method of BIG
Returns: BIG object
this: {BIG}

biG.div() ⇒

this/=m1

Kind: instance method of BIG
Returns: BIG number
this: {BIG}
Paramter: m1 divisor

biG.parity() ⇒

return parity of this

Kind: instance method of BIG
Returns: BIG object
this: {BIG}

biG.bit() ⇒

return n-th bit of this

Kind: instance method of BIG
Returns: bit value
this: {BIG}
Parameter: nth bit to return

biG.lastbits() ⇒

return last n bits of this

Kind: instance method of BIG
Returns: bit values
this: {BIG}
Parameter: n bits to return

biG.jacobi() ⇒

Jacobi Symbol (this/p)

Kind: instance method of BIG
Returns: 0, 1 or -1
this: {BIG}
Parameter: p BIG number

biG.invmodp() ⇒

this=1/this mod p. Binary method

Kind: instance method of BIG
Returns: BIG object
this: {BIG}
Parameter: p The BIG Modulus

biG.powmod() ⇒

Exponentation modulo m

Kind: instance method of BIG
Returns: this^e mod m
this: {BIG}
Parameter: e1 BIG number
Parameter: m The BIG Modulus

BIG.frombytearray() ⇒

convert from byte array to BIG

Kind: static method of BIG
Returns: BIG object
this: {BIG}
Parameter: b Bytearray

BIG.smul() ⇒

return a*b where product fits a BIG

Kind: static method of BIG
Returns: a*b
this: {BIG}
Parameter: a BIG number
Parameter: b BIG number

BIG.comp() ⇒

Compare a and b

Kind: static method of BIG
Returns: 0 if a==b, -1 if a<b, +1 if a>b
this: {BIG}
Parameter: a BIG number (normalised)
Parameter: b BIG number (normalised

BIG.random() ⇒

Get 8*MODBYTES size random number

Kind: static method of BIG
Returns: BIG number
this: {BIG}
Parameter: rng Cryptographically Secure Random Number Generator

BIG.randomnum() ⇒

Create random BIG in portable way, one bit at a time

Kind: static method of BIG
Returns: BIG number
this: {BIG}
Parameter: rng Cryptographically Secure Random Number Generator
Parameter: q The BIG Modulus

BIG.mul() ⇒

Multiple two BIG numbers

Kind: static method of BIG
Returns: a*b as a DBIG number
this: {BIG}
Parameter: a BIG number
Parameter: b BIG number

BIG.sqr() ⇒

Square two BIG numbers

Kind: static method of BIG
Returns: a*2 as a DBIG number
this: {BIG}
Parameter: a BIG number

BIG.modmul() ⇒

Multiple two BIG numbers modulo m

Kind: static method of BIG
Returns: a1*b1 mod m as a BIG number
this: {BIG}
Parameter: a1 BIG number
Parameter: b1 BIG number
Parameter: m The BIG Modulus

BIG.modsqr() ⇒

Square a BIG number modulo m

Kind: static method of BIG
Returns: a*2 mod m as a BIG number
this: {BIG}
Parameter: a1 BIG number
Parameter: m The BIG Modulus

BIG.modneg() ⇒

Inversion

Kind: static method of BIG
Returns: -a1 mod m
this: {BIG}
Parameter: a1 BIG number
Parameter: m The BIG Modulus

BIG.invmod256() ⇒

Arazi and Qi inversion mod 256

Kind: static method of BIG
Returns: BIG number
this: {BIG}
Parameter: a BIG number