/**

* 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;

public interface ScalarOps {

/**
 * Reduce the given scalar mod $l$.
 * <p>
 * From the Ed25519 paper:<br>
 * Here we interpret $2b$-bit strings in little-endian form as integers in
 * $\{0, 1,..., 2^{(2b)}-1\}$.
 * @param s the scalar to reduce
 * @return $s \bmod l$
 */
public byte[] reduce(byte[] s);

/**
 * $r = (a * b + c) \bmod l$
 * @param a a scalar
 * @param b a scalar
 * @param c a scalar
 * @return $(a*b + c) \bmod l$
 */
public byte[] multiplyAndAdd(byte[] a, byte[] b, byte[] c);

}