net.i2p.crypto.eddsa.math

## Class Encoding

- java.lang.Object
- - net.i2p.crypto.eddsa.math.Encoding

- All Implemented Interfaces:
    Serializable
  Direct Known Subclasses:
    BigIntegerLittleEndianEncoding, Ed25519LittleEndianEncoding

      public abstract class Encoding
      extends Object
      implements Serializable

  Common interface for all $(b-1)$-bit encodings of elements of EdDSA finite fields.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Field` | `f`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Encoding()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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

    - #### 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'.

    - #### 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.

    - #### 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

    - #### setField

          public void setField(Field f)