feat(big): add SBigXor

This commit is contained in:
Adam Heinermann 2024-11-17 03:28:44 -08:00 committed by superp00t
parent 6a88f93619
commit da8a663fd7
5 changed files with 63 additions and 0 deletions

View file

@ -142,3 +142,7 @@ void SBigToBinaryBuffer(BigData* num, uint8_t* data, uint32_t maxBytes, uint32_t
*bytes = n;
}
}
void SBigXor(BigData* a, BigData* b, BigData* c) {
Xor(a->Primary(), b->Primary(), c->Primary());
}

View file

@ -58,4 +58,6 @@ void SBigSub(BigData* a, BigData* b, BigData* c);
void SBigToBinaryBuffer(BigData* num, uint8_t* data, uint32_t maxBytes, uint32_t* bytes);
void SBigXor(BigData* a, BigData* b, BigData* c);
#endif

View file

@ -482,3 +482,12 @@ void ToStream(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer) {
EncodeDataBytes(output, output.Count());
ToBinaryAppend(output, buffer);
}
void Xor(BigBuffer& a, const BigBuffer& b, const BigBuffer& c) {
uint32_t i = 0;
for (; b.IsUsed(i) || c.IsUsed(i); i++) {
a[i] = c[i] ^ b[i];
}
a.SetCount(i);
}

View file

@ -75,4 +75,6 @@ void ToBinary(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer);
void ToStream(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer);
void Xor(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
#endif