Original HUSH source code based on ZEC 1.0.8 . For historical purposes only!
https://hush.is
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
901 B
37 lines
901 B
/** @file
|
|
*****************************************************************************
|
|
* @author This file is part of libsnark, developed by SCIPR Lab
|
|
* and contributors (see AUTHORS).
|
|
* @copyright MIT license (see LICENSE file)
|
|
*****************************************************************************/
|
|
|
|
#ifndef CURVE_UTILS_TCC_
|
|
#define CURVE_UTILS_TCC_
|
|
|
|
namespace libsnark {
|
|
|
|
template<typename GroupT, mp_size_t m>
|
|
GroupT scalar_mul(const GroupT &base, const bigint<m> &scalar)
|
|
{
|
|
GroupT result = GroupT::zero();
|
|
|
|
bool found_one = false;
|
|
for (long i = scalar.max_bits() - 1; i >= 0; --i)
|
|
{
|
|
if (found_one)
|
|
{
|
|
result = result.dbl();
|
|
}
|
|
|
|
if (scalar.test_bit(i))
|
|
{
|
|
found_one = true;
|
|
result = result + base;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
} // libsnark
|
|
#endif // CURVE_UTILS_TCC_
|
|
|