Class BigIntegerLittleEndianEncoding

java.lang.Object
net.i2p.crypto.eddsa.math.Encoding
net.i2p.crypto.eddsa.math.bigint.BigIntegerLittleEndianEncoding
All Implemented Interfaces:
Serializable

public class BigIntegerLittleEndianEncoding extends Encoding implements Serializable
See Also:
  • Constructor Details

    • BigIntegerLittleEndianEncoding

      public BigIntegerLittleEndianEncoding()
  • Method Details

    • setField

      public void setField(Field f)
      Overrides:
      setField in class Encoding
    • encode

      public byte[] encode(FieldElement x)
      Description copied from class: Encoding
      Encode a FieldElement in its $(b-1)$-bit encoding.
      Specified by:
      encode in class Encoding
      Parameters:
      x - the FieldElement to encode
      Returns:
      the $(b-1)$-bit encoding of this FieldElement.
    • encode

      public byte[] encode(BigInteger x)
      Convert $x$ to little endian. Constant time.
      Parameters:
      x - the BigInteger value to encode
      Returns:
      array of length $b/8$
      Throws:
      IllegalStateException - if field not set
    • decode

      public FieldElement decode(byte[] in)
      Decode a FieldElement from its $(b-1)$-bit encoding. The highest bit is masked out.
      Specified by:
      decode in class Encoding
      Parameters:
      in - the $(b-1)$-bit encoding of a FieldElement.
      Returns:
      the FieldElement represented by 'val'.
      Throws:
      IllegalStateException - if field not set
      IllegalArgumentException - if encoding is invalid
    • toBigInteger

      public BigInteger toBigInteger(byte[] in)
      Convert in to big endian
      Parameters:
      in - the $(b-1)$-bit encoding of a FieldElement.
      Returns:
      the decoded value as a BigInteger
    • isNegative

      public 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\}$.
      Specified by:
      isNegative in class Encoding
      Parameters:
      x - the FieldElement to check
      Returns:
      true if negative