summaryrefslogtreecommitdiff
path: root/integer.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2021-10-10 04:44:11 -0400
committerJeffrey Walton <noloader@gmail.com>2021-10-10 04:44:11 -0400
commit131fdc1bdf77352d7adec7e9e383efcd9e8f0075 (patch)
tree43b2e9cbde66deb0570b4943f38eaac7f49482ce /integer.cpp
parent5331e36173df627bd99df0a313212884c02809e7 (diff)
downloadcryptopp-git-131fdc1bdf77352d7adec7e9e383efcd9e8f0075.tar.gz
Avoid word ops for Integer And, Or, Xor
Diffstat (limited to 'integer.cpp')
-rw-r--r--integer.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/integer.cpp b/integer.cpp
index 4a13c329..db14bde9 100644
--- a/integer.cpp
+++ b/integer.cpp
@@ -3810,7 +3810,9 @@ Integer Integer::And(const Integer& t) const
else if (reg.size() >= t.reg.size())
{
IntegerSecBlock temp(t.reg.size());
- AndWords(temp, reg, t.reg, t.reg.size());
+ // AndWords(temp, reg, t.reg, t.reg.size());
+ for (size_t i=0; i<t.reg.size(); ++i)
+ temp[i] = reg[i] & t.reg[i];
Integer result;
std::swap(result.reg, temp);
@@ -3820,7 +3822,9 @@ Integer Integer::And(const Integer& t) const
else // reg.size() < t.reg.size()
{
IntegerSecBlock temp(reg.size());
- AndWords(temp, reg, t.reg, reg.size());
+ // AndWords(temp, reg, t.reg, reg.size());
+ for (size_t i=0; i<reg.size(); ++i)
+ temp[i] = reg[i] & t.reg[i];
Integer result;
std::swap(result.reg, temp);
@@ -3844,7 +3848,9 @@ Integer Integer::Or(const Integer& t) const
else if (reg.size() >= t.reg.size())
{
IntegerSecBlock temp(reg, reg.size());
- OrWords(temp, t.reg, t.reg.size());
+ // OrWords(temp, t.reg, t.reg.size());
+ for (size_t i=0; i<t.reg.size(); ++i)
+ temp[i] |= t.reg[i];
Integer result;
std::swap(result.reg, temp);
@@ -3854,7 +3860,9 @@ Integer Integer::Or(const Integer& t) const
else // reg.size() < t.reg.size()
{
IntegerSecBlock temp(t.reg, t.reg.size());
- OrWords(temp, reg, reg.size());
+ // OrWords(temp, reg, reg.size());
+ for (size_t i=0; i<reg.size(); ++i)
+ temp[i] |= reg[i];
Integer result;
std::swap(result.reg, temp);
@@ -3878,7 +3886,9 @@ Integer Integer::Xor(const Integer& t) const
else if (reg.size() >= t.reg.size())
{
IntegerSecBlock temp(reg, reg.size());
- XorWords(temp, t.reg, t.reg.size());
+ // OrWords(temp, t.reg, t.reg.size());
+ for (size_t i=0; i<t.reg.size(); ++i)
+ temp[i] ^= t.reg[i];
Integer result;
std::swap(result.reg, temp);
@@ -3888,7 +3898,9 @@ Integer Integer::Xor(const Integer& t) const
else // reg.size() < t.reg.size()
{
IntegerSecBlock temp(t.reg, t.reg.size());
- XorWords(temp, reg, reg.size());
+ // OrWords(temp, reg, reg.size());
+ for (size_t i=0; i<reg.size(); ++i)
+ temp[i] ^= reg[i];
Integer result;
std::swap(result.reg, temp);