net.i2p.crypto.eddsa.math
Class Encoding

java.lang.Object
  extended by net.i2p.crypto.eddsa.math.Encoding
Direct Known Subclasses:
BigIntegerLittleEndianEncoding, Ed25519LittleEndianEncoding

public abstract class Encoding
extends Object

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

Since:
0.9.15
Author:
str4d

Field Summary
protected  Field f
           
 
Constructor Summary
Encoding()
           
 
Method Summary
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.

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,..., q-1} then the negative elements of F_q are {1, 3, 5,..., q-2}.

Returns:
true if negative