aboutsummaryrefslogtreecommitdiffstats
path: root/src/math
diff options
context:
space:
mode:
Diffstat (limited to 'src/math')
-rw-r--r--src/math/bigint/big_ops2.cpp24
-rw-r--r--src/math/bigint/big_ops3.cpp26
-rw-r--r--src/math/bigint/bigint.h12
-rw-r--r--src/math/ec_gfp/point_gfp.cpp5
-rw-r--r--src/math/numbertheory/mp_numth.cpp9
5 files changed, 38 insertions, 38 deletions
diff --git a/src/math/bigint/big_ops2.cpp b/src/math/bigint/big_ops2.cpp
index ec5197090..f47cbb4e8 100644
--- a/src/math/bigint/big_ops2.cpp
+++ b/src/math/bigint/big_ops2.cpp
@@ -23,7 +23,7 @@ BigInt& BigInt::operator+=(const BigInt& y)
grow_to(reg_size);
if(sign() == y.sign())
- bigint_add2(data(), reg_size - 1, y.data(), y_sw);
+ bigint_add2(mutable_data(), reg_size - 1, y.data(), y_sw);
else
{
s32bit relative_size = bigint_cmp(data(), x_sw, y.data(), y_sw);
@@ -41,7 +41,7 @@ BigInt& BigInt::operator+=(const BigInt& y)
set_sign(Positive);
}
else if(relative_size > 0)
- bigint_sub2(data(), x_sw, y.data(), y_sw);
+ bigint_sub2(mutable_data(), x_sw, y.data(), y_sw);
}
return (*this);
@@ -62,9 +62,9 @@ BigInt& BigInt::operator-=(const BigInt& y)
if(relative_size < 0)
{
if(sign() == y.sign())
- bigint_sub2_rev(data(), y.data(), y_sw);
+ bigint_sub2_rev(mutable_data(), y.data(), y_sw);
else
- bigint_add2(data(), reg_size - 1, y.data(), y_sw);
+ bigint_add2(mutable_data(), reg_size - 1, y.data(), y_sw);
set_sign(y.reverse_sign());
}
@@ -76,14 +76,14 @@ BigInt& BigInt::operator-=(const BigInt& y)
set_sign(Positive);
}
else
- bigint_shl1(data(), x_sw, 0, 1);
+ bigint_shl1(mutable_data(), x_sw, 0, 1);
}
else if(relative_size > 0)
{
if(sign() == y.sign())
- bigint_sub2(data(), x_sw, y.data(), y_sw);
+ bigint_sub2(mutable_data(), x_sw, y.data(), y_sw);
else
- bigint_add2(data(), reg_size - 1, y.data(), y_sw);
+ bigint_add2(mutable_data(), reg_size - 1, y.data(), y_sw);
}
return (*this);
@@ -105,12 +105,12 @@ BigInt& BigInt::operator*=(const BigInt& y)
else if(x_sw == 1 && y_sw)
{
grow_to(y_sw + 2);
- bigint_linmul3(data(), y.data(), y_sw, word_at(0));
+ bigint_linmul3(mutable_data(), y.data(), y_sw, word_at(0));
}
else if(y_sw == 1 && x_sw)
{
grow_to(x_sw + 2);
- bigint_linmul2(data(), x_sw, y.word_at(0));
+ bigint_linmul2(mutable_data(), x_sw, y.word_at(0));
}
else
{
@@ -119,7 +119,7 @@ BigInt& BigInt::operator*=(const BigInt& y)
secure_vector<word> z(data(), data() + x_sw);
secure_vector<word> workspace(size());
- bigint_mul(data(), size(), &workspace[0],
+ bigint_mul(mutable_data(), size(), &workspace[0],
&z[0], z.size(), x_sw,
y.data(), y.size(), y_sw);
}
@@ -192,7 +192,7 @@ BigInt& BigInt::operator<<=(size_t shift)
words = sig_words();
grow_to(words + shift_words + (shift_bits ? 1 : 0));
- bigint_shl1(data(), words, shift_words, shift_bits);
+ bigint_shl1(mutable_data(), words, shift_words, shift_bits);
}
return (*this);
@@ -208,7 +208,7 @@ BigInt& BigInt::operator>>=(size_t shift)
const size_t shift_words = shift / MP_WORD_BITS,
shift_bits = shift % MP_WORD_BITS;
- bigint_shr1(data(), sig_words(), shift_words, shift_bits);
+ bigint_shr1(mutable_data(), sig_words(), shift_words, shift_bits);
if(is_zero())
set_sign(Positive);
diff --git a/src/math/bigint/big_ops3.cpp b/src/math/bigint/big_ops3.cpp
index a33b32bb7..acd139716 100644
--- a/src/math/bigint/big_ops3.cpp
+++ b/src/math/bigint/big_ops3.cpp
@@ -23,20 +23,20 @@ BigInt operator+(const BigInt& x, const BigInt& y)
BigInt z(x.sign(), std::max(x_sw, y_sw) + 1);
if((x.sign() == y.sign()))
- bigint_add3(z.data(), x.data(), x_sw, y.data(), y_sw);
+ bigint_add3(z.mutable_data(), x.data(), x_sw, y.data(), y_sw);
else
{
s32bit relative_size = bigint_cmp(x.data(), x_sw, y.data(), y_sw);
if(relative_size < 0)
{
- bigint_sub3(z.data(), y.data(), y_sw, x.data(), x_sw);
+ bigint_sub3(z.mutable_data(), y.data(), y_sw, x.data(), x_sw);
z.set_sign(y.sign());
}
else if(relative_size == 0)
z.set_sign(BigInt::Positive);
else if(relative_size > 0)
- bigint_sub3(z.data(), x.data(), x_sw, y.data(), y_sw);
+ bigint_sub3(z.mutable_data(), x.data(), x_sw, y.data(), y_sw);
}
return z;
@@ -56,22 +56,22 @@ BigInt operator-(const BigInt& x, const BigInt& y)
if(relative_size < 0)
{
if(x.sign() == y.sign())
- bigint_sub3(z.data(), y.data(), y_sw, x.data(), x_sw);
+ bigint_sub3(z.mutable_data(), y.data(), y_sw, x.data(), x_sw);
else
- bigint_add3(z.data(), x.data(), x_sw, y.data(), y_sw);
+ bigint_add3(z.mutable_data(), x.data(), x_sw, y.data(), y_sw);
z.set_sign(y.reverse_sign());
}
else if(relative_size == 0)
{
if(x.sign() != y.sign())
- bigint_shl2(z.data(), x.data(), x_sw, 0, 1);
+ bigint_shl2(z.mutable_data(), x.data(), x_sw, 0, 1);
}
else if(relative_size > 0)
{
if(x.sign() == y.sign())
- bigint_sub3(z.data(), x.data(), x_sw, y.data(), y_sw);
+ bigint_sub3(z.mutable_data(), x.data(), x_sw, y.data(), y_sw);
else
- bigint_add3(z.data(), x.data(), x_sw, y.data(), y_sw);
+ bigint_add3(z.mutable_data(), x.data(), x_sw, y.data(), y_sw);
z.set_sign(x.sign());
}
return z;
@@ -87,13 +87,13 @@ BigInt operator*(const BigInt& x, const BigInt& y)
BigInt z(BigInt::Positive, x.size() + y.size());
if(x_sw == 1 && y_sw)
- bigint_linmul3(z.data(), y.data(), y_sw, x.word_at(0));
+ bigint_linmul3(z.mutable_data(), y.data(), y_sw, x.word_at(0));
else if(y_sw == 1 && x_sw)
- bigint_linmul3(z.data(), x.data(), x_sw, y.word_at(0));
+ bigint_linmul3(z.mutable_data(), x.data(), x_sw, y.word_at(0));
else if(x_sw && y_sw)
{
secure_vector<word> workspace(z.size());
- bigint_mul(z.data(), z.size(), &workspace[0],
+ bigint_mul(z.mutable_data(), z.size(), &workspace[0],
x.data(), x.size(), x_sw,
y.data(), y.size(), y_sw);
}
@@ -164,7 +164,7 @@ BigInt operator<<(const BigInt& x, size_t shift)
const size_t x_sw = x.sig_words();
BigInt y(x.sign(), x_sw + shift_words + (shift_bits ? 1 : 0));
- bigint_shl2(y.data(), x.data(), x_sw, shift_words, shift_bits);
+ bigint_shl2(y.mutable_data(), x.data(), x_sw, shift_words, shift_bits);
return y;
}
@@ -183,7 +183,7 @@ BigInt operator>>(const BigInt& x, size_t shift)
x_sw = x.sig_words();
BigInt y(x.sign(), x_sw - shift_words);
- bigint_shr2(y.data(), x.data(), x_sw, shift_words, shift_bits);
+ bigint_shr2(y.mutable_data(), x.data(), x_sw, shift_words, shift_bits);
return y;
}
diff --git a/src/math/bigint/bigint.h b/src/math/bigint/bigint.h
index baf2bfc71..f026e67f1 100644
--- a/src/math/bigint/bigint.h
+++ b/src/math/bigint/bigint.h
@@ -311,16 +311,14 @@ class BOTAN_DLL BigInt
size_t bits() const;
/**
- * Return a pointer to the big integer word register
- * @result a pointer to the start of the internal register of
- * the integer value
+ * Return a mutable pointer to the register
+ * @result a pointer to the start of the internal register
*/
- word* data() { return &m_reg[0]; }
+ word* mutable_data() { return &m_reg[0]; }
/**
- * Return a pointer to the big integer word register
- * @result a pointer to the start of the internal register of
- * the integer value
+ * Return a const pointer to the register
+ * @result a pointer to the start of the internal register
*/
const word* data() const { return &m_reg[0]; }
diff --git a/src/math/ec_gfp/point_gfp.cpp b/src/math/ec_gfp/point_gfp.cpp
index fd42ccd16..9cd5a2aaf 100644
--- a/src/math/ec_gfp/point_gfp.cpp
+++ b/src/math/ec_gfp/point_gfp.cpp
@@ -50,8 +50,7 @@ void PointGFp::monty_mult(BigInt& z, const BigInt& x, const BigInt& y) const
z.grow_to(output_size);
z.clear();
-
- bigint_monty_mul(z.data(), output_size,
+ bigint_monty_mul(z.mutable_data(), output_size,
x.data(), x.size(), x.sig_words(),
y.data(), y.size(), y.sig_words(),
p.data(), p_size, p_dash,
@@ -78,7 +77,7 @@ void PointGFp::monty_sqr(BigInt& z, const BigInt& x) const
z.grow_to(output_size);
z.clear();
- bigint_monty_sqr(z.data(), output_size,
+ bigint_monty_sqr(z.mutable_data(), output_size,
x.data(), x.size(), x.sig_words(),
p.data(), p_size, p_dash,
&ws[0]);
diff --git a/src/math/numbertheory/mp_numth.cpp b/src/math/numbertheory/mp_numth.cpp
index b10fe2639..e6826b9dd 100644
--- a/src/math/numbertheory/mp_numth.cpp
+++ b/src/math/numbertheory/mp_numth.cpp
@@ -22,7 +22,8 @@ BigInt square(const BigInt& x)
BigInt z(BigInt::Positive, round_up<size_t>(2*x_sw, 16));
secure_vector<word> workspace(z.size());
- bigint_sqr(z.data(), z.size(), &workspace[0],
+ bigint_sqr(z.mutable_data(), z.size(),
+ &workspace[0],
x.data(), x.size(), x_sw);
return z;
}
@@ -46,11 +47,13 @@ BigInt mul_add(const BigInt& a, const BigInt& b, const BigInt& c)
BigInt r(sign, std::max(a.size() + b.size(), c_sw) + 1);
secure_vector<word> workspace(r.size());
- bigint_mul(r.data(), r.size(), &workspace[0],
+ bigint_mul(r.mutable_data(), r.size(),
+ &workspace[0],
a.data(), a.size(), a_sw,
b.data(), b.size(), b_sw);
+
const size_t r_size = std::max(r.sig_words(), c_sw);
- bigint_add2(r.data(), r_size, c.data(), c_sw);
+ bigint_add2(r.mutable_data(), r_size, c.data(), c_sw);
return r;
}