EdDSA-Java by str4d To the extent possible under law, the person who associated CC0 with EdDSA-Java has waived all copyright and related or neighboring rights to EdDSA-Java. You should have received a copy of the CC0 legalcode along with this work. If not, see <https://creativecommons.org/publicdomain/zero/1.0/>.
package net.i2p.crypto.eddsa.math;
/**
Common interface for all $(b-1)$-bit encodings of elements of EdDSA finite fields. @author str4d /
public abstract class Encoding {
protected Field f; public synchronized void setField(Field f) { if (this.f != null) throw new IllegalStateException("already set"); this.f = f; } /** Encode a FieldElement in its $(b-1)$-bit encoding. @param x the FieldElement to encode @return the $(b-1)$-bit encoding of this FieldElement. / public abstract byte[] encode(FieldElement x); /** Decode a FieldElement from its $(b-1)$-bit encoding. The highest bit is masked out. @param in the $(b-1)$-bit encoding of a FieldElement. @return the FieldElement represented by 'val'. / public abstract FieldElement decode(byte[] in); /** From the Ed25519 paper:<br> $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\}$. @param x the FieldElement to check @return true if negative / public abstract boolean isNegative(FieldElement x);
}