Package org.mariadb.jdbc.plugin.authentication.standard.ed25519.math

## Class Encoding

- java.lang.Object
- - org.mariadb.jdbc.plugin.authentication.standard.ed25519.math.Encoding

Direct Known Subclasses:
  `Ed25519LittleEndianEncoding`

    public abstract class Encoding
    extends Object

Common interface for all $(b-1)$-bit encodings of elements of EdDSA finite fields.

Author:
  str4d

### Field Summary

Fields
`protected Field` `f`

### Constructor Summary

Constructors
`Encoding()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract FieldElement` `decode​(byte[] in)` Decode a FieldElement from its $(b-1)$-bit encoding.
`abstract byte[]` `encode​(FieldElement x)` Encode a FieldElement in its $(b-1)$-bit encoding.
`abstract boolean` `isNegative​(FieldElement x)` From the Ed25519 paper: $x$ is negative if the $(b-1)$-bit encoding of $x$ is lexicographically larger than the $(b-1)$-bit encoding of -x.
`void` `setField​(Field f)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### f

    protected Field f

### Constructor Detail

#### Encoding

    public Encoding()

### Method Detail

#### setField

    public void setField​(Field f)

#### encode

    public abstract byte[] encode​(FieldElement x)

Encode a FieldElement in its $(b-1)$-bit encoding.

Parameters:
  `x` - the FieldElement to encode
Returns:
  the $(b-1)$-bit encoding of this FieldElement.

#### decode

    public abstract FieldElement decode​(byte[] in)

Decode a FieldElement from its $(b-1)$-bit encoding. The highest bit is masked out.

Parameters:
  `in` - the $(b-1)$-bit encoding of a FieldElement.
Returns:
  the FieldElement represented by 'val'.

#### isNegative

    public abstract boolean isNegative​(FieldElement x)

From the Ed25519 paper:
$x$ is negative if the $(b-1)$-bit encoding of $x$ is lexicographically larger than the $(b-1)$-bit encoding of -x. If $q$ is an odd prime and the encoding is the little-endian representation of $\{0, 1,\dots, q-1\}$ then the negative elements of $F_q$ are $\{1, 3, 5,\dots, q-2\}$.

Parameters:
  `x` - the FieldElement to check
Returns:
  true if negative