Class ScalarOps
- java.lang.Object
-
- org.mariadb.jdbc.internal.com.send.authentication.ed25519.math.ed25519.ScalarOps
-
public class ScalarOps extends Object
Class for reducing a huge integer modulo the group order q and doing a combined multiply plus add plus reduce operation.$q = 2^{252} + 27742317777372353535851937790883648493$.
Reviewed/commented by Bloody Rookie ([email protected])
-
-
Constructor Summary
Constructors Constructor Description ScalarOps()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
multiplyAndAdd(byte[] a, byte[] b, byte[] c)
$(ab+c) \bmod q$byte[]
reduce(byte[] s)
Reduction modulo the group order $q$.
-
-
-
Method Detail
-
reduce
public byte[] reduce(byte[] s)
Reduction modulo the group order $q$.Input: $s[0]+256*s[1]+\dots+256^{63}*s[63] = s$
Output: $s[0]+256*s[1]+\dots+256^{31}*s[31] = s \bmod q$ where $q = 2^{252} + 27742317777372353535851937790883648493$.
- Parameters:
s
- byte array- Returns:
- reduced byte array using a huge integer modulo the group order q
-
multiplyAndAdd
public byte[] multiplyAndAdd(byte[] a, byte[] b, byte[] c)
$(ab+c) \bmod q$Input:
- $a[0]+256*a[1]+\dots+256^{31}*a[31] = a$
- $b[0]+256*b[1]+\dots+256^{31}*b[31] = b$
- $c[0]+256*c[1]+\dots+256^{31}*c[31] = c$
Output: $result[0]+256*result[1]+\dots+256^{31}*result[31] = (ab+c) \bmod q$ where $q = 2^{252} + 27742317777372353535851937790883648493$.
See the comments in
reduce(byte[])
for an explanation of the algorithm.- Parameters:
a
- ab
- bc
- c- Returns:
- multiplied result
-
-