Class OwlCurve
- java.lang.Object
-
- org.bouncycastle.crypto.agreement.owl.OwlCurve
-
public class OwlCurve extends java.lang.ObjectA pre-computed elliptic curve over a prime field, in short-Weierstrass form for use during an Owl exchange.In general, Owl can use any elliptic curve or prime order group that is suitable for public key cryptography.
See
OwlCurvesfor convenient standard curves.NIST publishes many curves with different forms and levels of security.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.math.BigIntegergetA()Get the curve coefficient ajava.math.BigIntegergetB()Get the curve coefficient bECCurve.AbstractFpgetCurve()Get the elliptic curveECPointgetG()Get the base point Gjava.math.BigIntegergetH()Get the co-factor h of the curvejava.math.BigIntegergetN()Get n, the order of the base pointjava.math.BigIntegergetQ()Get the prime field modulus q of the curve
-
-
-
Constructor Detail
-
OwlCurve
public OwlCurve(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 newOwlCurve.In general, you should use one of the pre-approved curves from
OwlCurves, 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.
- Parameters:
q- The prime field modulusa- The curve coefficient ab- The curve coefficient bn- The order of the base point Gh- The co-factorg_x- The x coordinate of the base point Gg_y- The y coordinate of the base point G- Throws:
java.lang.NullPointerException- if any argument is nulljava.lang.IllegalArgumentException- if any of the above validations fail
-
-
Method Detail
-
getCurve
public ECCurve.AbstractFp getCurve()
Get the elliptic curve- Returns:
- The curve
-
getG
public ECPoint getG()
Get the base point G- Returns:
- G
-
getA
public java.math.BigInteger getA()
Get the curve coefficient a- Returns:
- a
-
getB
public java.math.BigInteger getB()
Get the curve coefficient b- Returns:
- b
-
getN
public java.math.BigInteger getN()
Get n, the order of the base point- Returns:
- n
-
getH
public java.math.BigInteger getH()
Get the co-factor h of the curve- Returns:
- h
-
getQ
public java.math.BigInteger getQ()
Get the prime field modulus q of the curve- Returns:
- q
-
-