Crypto++
8.3
Free C++ class library of cryptographic schemes
|
Go to the documentation of this file.
6 #ifndef CRYPTOPP_WORDS_H
7 #define CRYPTOPP_WORDS_H
23 while (n && x[n-1]==0)
35 inline void SetWords(word *r, word a,
size_t n)
37 for (
size_t i=0; i<n; i++)
48 inline void CopyWords(word *r,
const word *a,
size_t n)
51 #if CRYPTOPP_MSC_VERSION
52 memcpy_s(r, n*WORD_SIZE, a, n*WORD_SIZE);
54 memcpy(r, a, n*WORD_SIZE);
66 inline void XorWords(word *r,
const word *a,
const word *b,
size_t n)
68 for (
size_t i=0; i<n; i++)
79 inline void XorWords(word *r,
const word *a,
size_t n)
81 for (
size_t i=0; i<n; i++)
93 inline void AndWords(word *r,
const word *a,
const word *b,
size_t n)
95 for (
size_t i=0; i<n; i++)
106 inline void AndWords(word *r,
const word *a,
size_t n)
108 for (
size_t i=0; i<n; i++)
120 inline void OrWords(word *r,
const word *a,
const word *b,
size_t n)
122 for (
size_t i=0; i<n; i++)
133 inline void OrWords(word *r,
const word *a,
size_t n)
135 for (
size_t i=0; i<n; i++)
154 for (
size_t i=0; i<n; i++)
157 r[i] = (u << shiftBits) | carry;
158 carry = u >> (WORD_BITS-shiftBits);
177 for (
size_t i=n; i>0; i--)
180 r[i-1] = (u >> shiftBits) | carry;
181 carry = u << (WORD_BITS-shiftBits);
196 shiftWords =
STDMIN(shiftWords, n);
199 for (
size_t i=n-1; i>=shiftWords; i--)
200 r[i] = r[i-shiftWords];
214 shiftWords =
STDMIN(shiftWords, n);
217 for (
size_t i=0; i+shiftWords<n; i++)
218 r[i] = r[i+shiftWords];
219 SetWords(r+n-shiftWords, 0, shiftWords);
void ShiftWordsRightByWords(word *r, size_t n, size_t shiftWords)
Right shift word array.
#define CRYPTOPP_ASSERT(exp)
Debugging and diagnostic assertion.
void CopyWords(word *r, const word *a, size_t n)
Copy word array.
Utility functions for the Crypto++ library.
const T & STDMIN(const T &a, const T &b)
Replacement function for std::min.
void ShiftWordsLeftByWords(word *r, size_t n, size_t shiftWords)
Left shift word array.
void AndWords(word *r, const word *a, const word *b, size_t n)
AND word arrays.
size_t CountWords(const word *x, size_t n)
Count the number of words.
void OrWords(word *r, const word *a, const word *b, size_t n)
OR word arrays.
word ShiftWordsLeftByBits(word *r, size_t n, unsigned int shiftBits)
Left shift word array.
word ShiftWordsRightByBits(word *r, size_t n, unsigned int shiftBits)
Right shift word array.
Crypto++ library namespace.
Library configuration file.
void SetWords(word *r, word a, size_t n)
Set the value of words.
void memcpy_s(void *dest, size_t sizeInBytes, const void *src, size_t count)
Bounds checking replacement for memcpy()
void XorWords(word *r, const word *a, const word *b, size_t n)
XOR word arrays.