crypto:: scalar_t::operator- (unary) + test

This commit is contained in:
sowle 2023-02-26 21:44:54 +01:00
parent ec32ff4b5f
commit 91afdac46d
No known key found for this signature in database
GPG key ID: C07A24B2D89D49FC
2 changed files with 17 additions and 4 deletions

View file

@ -1,5 +1,5 @@
// Copyright (c) 2020-2022 Zano Project
// Copyright (c) 2020-2022 sowle (val@zano.org, crypto.sowle@gmail.com)
// Copyright (c) 2020-2023 Zano Project
// Copyright (c) 2020-2023 sowle (val@zano.org, crypto.sowle@gmail.com)
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
//
@ -309,6 +309,14 @@ namespace crypto
return *this;
}
scalar_t operator-() const
{
static unsigned char zero[32] = { 0 };
scalar_t result;
sc_sub(&result.m_s[0], zero, &m_s[0]);
return result;
}
// returns this = a * b
scalar_t& assign_mul(const scalar_t& a, const scalar_t& b)
{

View file

@ -823,13 +823,18 @@ TEST(crypto, keys)
TEST(crypto, scalar_basics)
{
scalar_t zero = 0;
const scalar_t zero = 0;
ASSERT_TRUE(zero.is_zero());
scalar_t one = 1;
const scalar_t one = 1;
ASSERT_FALSE(one.is_zero());
ASSERT_TRUE(one > zero);
ASSERT_TRUE(one.muladd(zero, zero) == zero);
ASSERT_EQ(-one, c_scalar_Lm1);
ASSERT_EQ(-one, scalar_t(0) - one);
ASSERT_EQ(-zero, zero);
ASSERT_EQ(-c_scalar_Lm1, one);
scalar_t z = 0;
for (size_t j = 0; j < 1000; ++j)
{