## Uses of Class
net.i2p.crypto.eddsa.math.GroupElement

- Packages that use GroupElement
  Package | Description
  --- | ---
  net.i2p.crypto.eddsa | Java implementation of EdDSA, a digital signature scheme using a variant of elliptic curve cryptography based on Twisted Edwards curves.
  net.i2p.crypto.eddsa.math | Data structures that define curves and fields, and the mathematical operations on them.
  net.i2p.crypto.eddsa.spec | Specifications and parameter tables for EdDSA elliptic curves and cryptographic keys.

- - ### Uses of GroupElement in net.i2p.crypto.eddsa

    Methods in net.i2p.crypto.eddsa that return GroupElement
    Modifier and Type | Method and Description
    --- | ---
    `GroupElement` | EdDSAPublicKey.`getA()`
    `GroupElement` | EdDSAPrivateKey.`getA()`
    `GroupElement` | EdDSAPublicKey.`getNegativeA()`

  - ### Uses of GroupElement in net.i2p.crypto.eddsa.math

    Fields in net.i2p.crypto.eddsa.math declared as GroupElement
    Modifier and Type | Field and Description
    --- | ---
    `(package private) GroupElement[]` | GroupElement.`dblPrecmp` Precomputed table for `doubleScalarMultiplyVariableTime(GroupElement, byte[], byte[])`, filled if necessary.
    `(package private) GroupElement[][]` | GroupElement.`precmp` Precomputed table for `scalarMultiply(byte[])`, filled if necessary.

    Methods in net.i2p.crypto.eddsa.math that return GroupElement
    Modifier and Type | Method and Description
    --- | ---
    `GroupElement` | GroupElement.`add(GroupElement q)` GroupElement addition using the twisted Edwards addition law with extended coordinates (Hisil2008).
    `static GroupElement` | GroupElement.`cached(Curve curve, FieldElement YpX, FieldElement YmX, FieldElement Z, FieldElement T2d)` Creates a new group element in CACHED representation.
    `(package private) GroupElement` | GroupElement.`cmov(GroupElement u, int b)` Constant-time conditional move.
    `GroupElement` | Curve.`createPoint(byte[] P, boolean precompute)`
    `GroupElement` | GroupElement.`dbl()` Doubles a given group element $p$ in $P^2$ or $P^3$ representation and returns the result in $P \times P$ representation.
    `GroupElement` | GroupElement.`doubleScalarMultiplyVariableTime(GroupElement A, byte[] a, byte[] b)` $r = a * A + b * B$ where $a = a[0]+256*a[1]+\dots+256^{31} a[31]$, $b = b[0]+256*b[1]+\dots+256^{31} b[31]$ and $B$ is this point.
    `GroupElement` | Curve.`getZero(GroupElement.Representation repr)`
    `GroupElement` | GroupElement.`negate()` Negates this group element by subtracting it from the neutral group element.
    `static GroupElement` | GroupElement.`p1p1(Curve curve, FieldElement X, FieldElement Y, FieldElement Z, FieldElement T)` Creates a new group element in P1P1 representation.
    `static GroupElement` | GroupElement.`p2(Curve curve, FieldElement X, FieldElement Y, FieldElement Z)` Creates a new group element in P2 representation.
    `static GroupElement` | GroupElement.`p3(Curve curve, FieldElement X, FieldElement Y, FieldElement Z, FieldElement T)` Creates a new group element in P3 representation, without pre-computation.
    `static GroupElement` | GroupElement.`p3(Curve curve, FieldElement X, FieldElement Y, FieldElement Z, FieldElement T, boolean precomputeDoubleOnly)` Creates a new group element in P3 representation, potentially with pre-computation.
    `static GroupElement` | GroupElement.`precomp(Curve curve, FieldElement ypx, FieldElement ymx, FieldElement xy2d)` Creates a new group element in PRECOMP representation.
    `GroupElement` | GroupElement.`scalarMultiply(byte[] a)` $h = a * B$ where $a = a[0]+256*a[1]+\dots+256^{31} a[31]$ and $B$ is this point.
    `(package private) GroupElement` | GroupElement.`select(int pos, int b)` Look up $16^i r_i B$ in the precomputed table.
    `GroupElement` | GroupElement.`sub(GroupElement q)` GroupElement subtraction using the twisted Edwards addition law with extended coordinates (Hisil2008).
    `GroupElement` | GroupElement.`toCached()` Converts the group element to the CACHED representation.
    `GroupElement` | GroupElement.`toP2()` Converts the group element to the P2 representation.
    `GroupElement` | GroupElement.`toP3()` Converts the group element to the P3 representation.
    `GroupElement` | GroupElement.`toP3PrecomputeDouble()` Converts the group element to the P3 representation, with dblPrecmp populated.

    Methods in net.i2p.crypto.eddsa.math with parameters of type GroupElement
    Modifier and Type | Method and Description
    --- | ---
    `GroupElement` | GroupElement.`add(GroupElement q)` GroupElement addition using the twisted Edwards addition law with extended coordinates (Hisil2008).
    `(package private) GroupElement` | GroupElement.`cmov(GroupElement u, int b)` Constant-time conditional move.
    `GroupElement` | GroupElement.`doubleScalarMultiplyVariableTime(GroupElement A, byte[] a, byte[] b)` $r = a * A + b * B$ where $a = a[0]+256*a[1]+\dots+256^{31} a[31]$, $b = b[0]+256*b[1]+\dots+256^{31} b[31]$ and $B$ is this point.
    `GroupElement` | GroupElement.`sub(GroupElement q)` GroupElement subtraction using the twisted Edwards addition law with extended coordinates (Hisil2008).

  - ### Uses of GroupElement in net.i2p.crypto.eddsa.spec

    Methods in net.i2p.crypto.eddsa.spec that return GroupElement
    Modifier and Type | Method and Description
    --- | ---
    `GroupElement` | EdDSAPrivateKeySpec.`getA()`
    `GroupElement` | EdDSAPublicKeySpec.`getA()`
    `GroupElement` | EdDSAParameterSpec.`getB()`
    `GroupElement` | EdDSAPublicKeySpec.`getNegativeA()`

    Constructors in net.i2p.crypto.eddsa.spec with parameters of type GroupElement
    Constructor and Description
    `EdDSANamedCurveSpec(String name, Curve curve, String hashAlgo, ScalarOps sc, GroupElement B)`
    `EdDSAParameterSpec(Curve curve, String hashAlgo, ScalarOps sc, GroupElement B)`
    `EdDSAPrivateKeySpec(byte[] seed, byte[] h, byte[] a, GroupElement A, EdDSAParameterSpec spec)` No validation of any parameters other than a.
    `EdDSAPrivateKeySpec(byte[] a, GroupElement A, EdDSAParameterSpec spec)` No validation of any parameters other than a.
    `EdDSAPublicKeySpec(GroupElement A, EdDSAParameterSpec spec)`