Class BigIntegerLittleEndianEncoding

    • Constructor Detail

      • BigIntegerLittleEndianEncoding

        public BigIntegerLittleEndianEncoding()
    • Method Detail

      • 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