forked from lthn/blockchain
Merge branch 'develop' into develop_mobile
This commit is contained in:
commit
e1421dd331
3 changed files with 275 additions and 251 deletions
|
|
@ -4110,209 +4110,66 @@ void sc_muladd(unsigned char* s, const unsigned char* a,
|
|||
s[31] = s11 >> 17;
|
||||
}
|
||||
|
||||
|
||||
// out = z ^ -1 (= z ^ (L - 2) according to Fermat little theorem)
|
||||
void sc_invert(unsigned char* out, const unsigned char* z)
|
||||
/* libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c */
|
||||
void sc_sqmul(unsigned char s[32], const int n, const unsigned char a[32])
|
||||
{
|
||||
memcpy(out, z, 32);
|
||||
for (size_t i = 0; i < 128; ++i)
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
int i;
|
||||
for (i = 0; i < n; ++i)
|
||||
sc_mul(s, s, s);
|
||||
sc_mul(s, s, a);
|
||||
}
|
||||
|
||||
/* libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c */
|
||||
void sc_invert(unsigned char* recip, const unsigned char* s)
|
||||
{
|
||||
unsigned char _10[32], _100[32], _1000[32], _10000[32], _100000[32],
|
||||
_1000000[32], _10010011[32], _10010111[32], _100110[32], _1010[32],
|
||||
_1010000[32], _1010011[32], _1011[32], _10110[32], _10111101[32],
|
||||
_11[32], _1100011[32], _1100111[32], _11010011[32], _1101011[32],
|
||||
_11100111[32], _11101011[32], _11110101[32];
|
||||
|
||||
sc_mul(_10, s, s);
|
||||
sc_mul(_11, s, _10);
|
||||
sc_mul(_100, s, _11);
|
||||
sc_mul(_1000, _100, _100);
|
||||
sc_mul(_1010, _10, _1000);
|
||||
sc_mul(_1011, s, _1010);
|
||||
sc_mul(_10000, _1000, _1000);
|
||||
sc_mul(_10110, _1011, _1011);
|
||||
sc_mul(_100000, _1010, _10110);
|
||||
sc_mul(_100110, _10000, _10110);
|
||||
sc_mul(_1000000, _100000, _100000);
|
||||
sc_mul(_1010000, _10000, _1000000);
|
||||
sc_mul(_1010011, _11, _1010000);
|
||||
sc_mul(_1100011, _10000, _1010011);
|
||||
sc_mul(_1100111, _100, _1100011);
|
||||
sc_mul(_1101011, _100, _1100111);
|
||||
sc_mul(_10010011, _1000000, _1010011);
|
||||
sc_mul(_10010111, _100, _10010011);
|
||||
sc_mul(_10111101, _100110, _10010111);
|
||||
sc_mul(_11010011, _10110, _10111101);
|
||||
sc_mul(_11100111, _1010000, _10010111);
|
||||
sc_mul(_11101011, _100, _11100111);
|
||||
sc_mul(_11110101, _1010, _11101011);
|
||||
|
||||
sc_mul(recip, _1011, _11110101);
|
||||
|
||||
sc_sqmul(recip, 126, _1010011);
|
||||
|
||||
sc_sqmul(recip, 9, _10);
|
||||
sc_mul(recip, recip, _11110101);
|
||||
sc_sqmul(recip, 7, _1100111);
|
||||
sc_sqmul(recip, 9, _11110101);
|
||||
sc_sqmul(recip, 11, _10111101);
|
||||
sc_sqmul(recip, 8, _11100111);
|
||||
sc_sqmul(recip, 9, _1101011);
|
||||
sc_sqmul(recip, 6, _1011);
|
||||
sc_sqmul(recip, 14, _10010011);
|
||||
sc_sqmul(recip, 10, _1100011);
|
||||
sc_sqmul(recip, 9, _10010111);
|
||||
sc_sqmul(recip, 10, _11110101);
|
||||
sc_sqmul(recip, 8, _11010011);
|
||||
sc_sqmul(recip, 8, _11101011);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -271,6 +271,11 @@ namespace crypto
|
|||
return sc_check(&m_s[0]) == 0;
|
||||
}
|
||||
|
||||
void reduce()
|
||||
{
|
||||
sc_reduce32(&m_s[0]);
|
||||
}
|
||||
|
||||
scalar_t operator+(const scalar_t& v) const
|
||||
{
|
||||
scalar_t result;
|
||||
|
|
@ -825,6 +830,16 @@ namespace crypto
|
|||
this->clear();
|
||||
return scalar_t(hash); // this will reduce to L
|
||||
}
|
||||
|
||||
void assign_calc_hash(scalar_t& result, bool clear = true)
|
||||
{
|
||||
static_assert(sizeof result == sizeof(crypto::hash), "size missmatch");
|
||||
size_t data_size_bytes = m_elements.size() * sizeof(item_t);
|
||||
crypto::cn_fast_hash(m_elements.data(), data_size_bytes, (crypto::hash&)result);
|
||||
result.reduce();
|
||||
if (clear)
|
||||
this->clear();
|
||||
}
|
||||
|
||||
union item_t
|
||||
{
|
||||
|
|
|
|||
|
|
@ -80,56 +80,208 @@ sc_sqmul(unsigned char s[32], const int n, const unsigned char a[32])
|
|||
sc_mul(s, s, a);
|
||||
}
|
||||
|
||||
void sc_invert2(unsigned char* recip, const unsigned char* s)
|
||||
// out = z ^ -1 (= z ^ (L - 2) according to Fermat little theorem)
|
||||
void sc_invert2(unsigned char* out, const unsigned char* z)
|
||||
{
|
||||
unsigned char _10[32], _100[32], _1000[32], _10000[32], _100000[32],
|
||||
_1000000[32], _10010011[32], _10010111[32], _100110[32], _1010[32],
|
||||
_1010000[32], _1010011[32], _1011[32], _10110[32], _10111101[32],
|
||||
_11[32], _1100011[32], _1100111[32], _11010011[32], _1101011[32],
|
||||
_11100111[32], _11101011[32], _11110101[32];
|
||||
|
||||
sc_mul(_10, s, s);
|
||||
sc_mul(_11, s, _10);
|
||||
sc_mul(_100, s, _11);
|
||||
sc_mul(_1000, _100, _100);
|
||||
sc_mul(_1010, _10, _1000);
|
||||
sc_mul(_1011, s, _1010);
|
||||
sc_mul(_10000, _1000, _1000);
|
||||
sc_mul(_10110, _1011, _1011);
|
||||
sc_mul(_100000, _1010, _10110);
|
||||
sc_mul(_100110, _10000, _10110);
|
||||
sc_mul(_1000000, _100000, _100000);
|
||||
sc_mul(_1010000, _10000, _1000000);
|
||||
sc_mul(_1010011, _11, _1010000);
|
||||
sc_mul(_1100011, _10000, _1010011);
|
||||
sc_mul(_1100111, _100, _1100011);
|
||||
sc_mul(_1101011, _100, _1100111);
|
||||
sc_mul(_10010011, _1000000, _1010011);
|
||||
sc_mul(_10010111, _100, _10010011);
|
||||
sc_mul(_10111101, _100110, _10010111);
|
||||
sc_mul(_11010011, _10110, _10111101);
|
||||
sc_mul(_11100111, _1010000, _10010111);
|
||||
sc_mul(_11101011, _100, _11100111);
|
||||
sc_mul(_11110101, _1010, _11101011);
|
||||
|
||||
sc_mul(recip, _1011, _11110101);
|
||||
|
||||
sc_sqmul(recip, 126, _1010011);
|
||||
|
||||
sc_sqmul(recip, 9, _10);
|
||||
sc_mul(recip, recip, _11110101);
|
||||
sc_sqmul(recip, 7, _1100111);
|
||||
sc_sqmul(recip, 9, _11110101);
|
||||
sc_sqmul(recip, 11, _10111101);
|
||||
sc_sqmul(recip, 8, _11100111);
|
||||
sc_sqmul(recip, 9, _1101011);
|
||||
sc_sqmul(recip, 6, _1011);
|
||||
sc_sqmul(recip, 14, _10010011);
|
||||
sc_sqmul(recip, 10, _1100011);
|
||||
sc_sqmul(recip, 9, _10010111);
|
||||
sc_sqmul(recip, 10, _11110101);
|
||||
sc_sqmul(recip, 8, _11010011);
|
||||
sc_sqmul(recip, 8, _11101011);
|
||||
memcpy(out, z, 32);
|
||||
for (size_t i = 0; i < 128; ++i)
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
sc_mul(out, out, out);
|
||||
sc_mul(out, out, z);
|
||||
}
|
||||
|
||||
extern void *sha3(const void *in, size_t inlen, void *md, int mdlen);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue