Top Description Fields Constructors Methods
org.bouncycastle.pqc.math.ntru

public abstract Class Polynomial

extends Object
Class Inheritance
Known Direct Subclasses
org.bouncycastle.pqc.math.ntru.HPSPolynomial, org.bouncycastle.pqc.math.ntru.HRSSPolynomial
Imports
org.bouncycastle.pqc.math.ntru.parameters.NTRUParameterSet

Polynomial for org.bouncycastle.pqc.crypto.ntru.

Field Summary

Modifier and TypeField and Description
public short[]
coeffs

An array of coefficients

protected NTRUParameterSet

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
pack-priv static short

Returns:

-1 if x<0 and y<0; otherwise return 0

theory: if x and y are negative, MSB is 1. shifting right by 15 bits will produce 0xffff

bothNegativeMask
(short x, short y)

public abstract void
pack-priv static short
mod3(short a)

pack-priv static byte
mod3(byte a)

public void
pack-priv static int
modQ(int x, int q)

public void
public abstract void
pack-priv void
private void
public abstract void
pack-priv void
public void
public void
rqSumZeroFromBytes(byte[]
byte array of packed polynomial
a
)

Unpack a Rq0 polynomial

public byte[]
rqSumZeroToBytes(int
array length of packed polynomial
len
)

Pack a Rq0 polynomial as a byte array

public void
public void
s3FromBytes(byte[]
byte array of packed polynomial
msg
)

Unpack a S3 polynomial

public abstract void
pack-priv void
public void
public byte[]
s3ToBytes(int
array length of packed polynomial
messageSize
)

Pack an S3 polynomial as a byte array

public abstract void
sqFromBytes(byte[]
byte array of packed polynomial
a
)

Unpack a Sq polynomial

public void
public abstract byte[]
sqToBytes(int
array length of packed polynomial
len
)

Pack Sq polynomial as a byte array

public void
public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

coeffsback to summary
public short[] coeffs

An array of coefficients

paramsback to summary
protected NTRUParameterSet params

Constructor Detail

Polynomialback to summary
public Polynomial(NTRUParameterSet params)

Method Detail

bothNegativeMaskback to summary
pack-priv static short bothNegativeMask(short x, short y)
Returns:short

-1 if x<0 and y<0; otherwise return 0

theory: if x and y are negative, MSB is 1. shifting right by 15 bits will produce 0xffff

liftback to summary
public abstract void lift(Polynomial a)
See Also
NTRU specification section 1.9.3
mod3back to summary
pack-priv static short mod3(short a)
mod3back to summary
pack-priv static byte mod3(byte a)
mod3PhiNback to summary
public void mod3PhiN()
modQback to summary
pack-priv static int modQ(int x, int q)
modQPhiNback to summary
public void modQPhiN()
r2Invback to summary
public abstract void r2Inv(Polynomial a)
r2Invback to summary
pack-priv void r2Inv(Polynomial a, Polynomial f, Polynomial g, Polynomial v, Polynomial w)
r2InvToRqInvback to summary
private void r2InvToRqInv(Polynomial ai, Polynomial a, Polynomial b, Polynomial c, Polynomial s)
rqInvback to summary
public abstract void rqInv(Polynomial a)
rqInvback to summary
pack-priv void rqInv(Polynomial a, Polynomial ai2, Polynomial b, Polynomial c, Polynomial s)
rqMulback to summary
public void rqMul(Polynomial a, Polynomial b)
rqSumZeroFromBytesback to summary
public void rqSumZeroFromBytes(byte[] a)

Unpack a Rq0 polynomial

Parameters
a:byte[]

byte array of packed polynomial

See Also
NTRU specification section 1.8.4
rqSumZeroToBytesback to summary
public byte[] rqSumZeroToBytes(int len)

Pack a Rq0 polynomial as a byte array

Parameters
len:int

array length of packed polynomial

See Also
NTRU specification section 1.8.3
rqToS3back to summary
public void rqToS3(Polynomial a)
s3FromBytesback to summary
public void s3FromBytes(byte[] msg)

Unpack a S3 polynomial

Parameters
msg:byte[]

byte array of packed polynomial

See Also
NTRU specification section 1.8.8
s3Invback to summary
public abstract void s3Inv(Polynomial a)
s3Invback to summary
pack-priv void s3Inv(Polynomial a, Polynomial f, Polynomial g, Polynomial v, Polynomial w)
s3Mulback to summary
public void s3Mul(Polynomial a, Polynomial b)
s3ToBytesback to summary
public byte[] s3ToBytes(int messageSize)

Pack an S3 polynomial as a byte array

Parameters
messageSize:int

array length of packed polynomial

See Also
NTRU specification section 1.8.7
sqFromBytesback to summary
public abstract void sqFromBytes(byte[] a)

Unpack a Sq polynomial

Parameters
a:byte[]

byte array of packed polynomial

See Also
NTRU specification section 1.8.6
sqMulback to summary
public void sqMul(Polynomial a, Polynomial b)
sqToBytesback to summary
public abstract byte[] sqToBytes(int len)

Pack Sq polynomial as a byte array

Parameters
len:int

array length of packed polynomial

See Also
NTRU specification section 1.8.5
trinaryZqToZ3back to summary
public void trinaryZqToZ3()
z3ToZqback to summary
public void z3ToZq()