Class ECJPAKECurve
- java.lang.Object
-
- org.bouncycastle.crypto.agreement.ecjpake.ECJPAKECurve
-
public class ECJPAKECurve extends java.lang.Object
A pre-computed elliptic curve over a prime field, in short-Weierstrass form for use during an EC J-PAKE exchange.In general, J-PAKE can use any elliptic curve or prime order group that is suitable for public key cryptography.
See
ECJPAKECurves
for convenient standard curves.NIST publishes many curves with different forms and levels of security.
-
-
Constructor Summary
Constructors Constructor Description ECJPAKECurve(java.math.BigInteger q, java.math.BigInteger a, java.math.BigInteger b, java.math.BigInteger n, java.math.BigInteger h, java.math.BigInteger g_x, java.math.BigInteger g_y)
Constructs a newECJPAKECurve
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.math.BigInteger
getA()
java.math.BigInteger
getB()
ECCurve.Fp
getCurve()
ECPoint
getG()
java.math.BigInteger
getH()
java.math.BigInteger
getN()
java.math.BigInteger
getQ()
-
-
-
Constructor Detail
-
ECJPAKECurve
public ECJPAKECurve(java.math.BigInteger q, java.math.BigInteger a, java.math.BigInteger b, java.math.BigInteger n, java.math.BigInteger h, java.math.BigInteger g_x, java.math.BigInteger g_y)
Constructs a newECJPAKECurve
.In general, you should use one of the pre-approved curves from
ECJPAKECurves
, rather than manually constructing one.The following basic checks are performed:
- q must be prime
- n must be prime
- The curve must not be singular i.e. the discriminant is equal to 0 mod q
- G must lie on the curve
- n*h must equal the order of the curve
- a must be in [0, q-1]
- b must be in [0, q-1]
The prime checks are performed using
BigInteger.isProbablePrime(int)
, and are therefore subject to the same probability guarantees.These checks prevent trivial mistakes. However, due to the small uncertainties if p and q are not prime, advanced attacks are not prevented. Use it at your own risk.
- Throws:
java.lang.NullPointerException
- if any argument is nulljava.lang.IllegalArgumentException
- if any of the above validations fail
-
-
Method Detail
-
getCurve
public ECCurve.Fp getCurve()
-
getG
public ECPoint getG()
-
getA
public java.math.BigInteger getA()
-
getB
public java.math.BigInteger getB()
-
getN
public java.math.BigInteger getN()
-
getH
public java.math.BigInteger getH()
-
getQ
public java.math.BigInteger getQ()
-
-