1 #ifndef CRYPTOPP_WORDS_H 2 #define CRYPTOPP_WORDS_H 9 inline size_t CountWords(
const word *X,
size_t N)
11 while (N && X[N-1]==0)
16 inline void SetWords(word *r, word a,
size_t n)
18 for (
size_t i=0; i<n; i++)
22 inline void CopyWords(word *r,
const word *a,
size_t n)
25 #if CRYPTOPP_MSC_VERSION 26 memcpy_s(r, n*WORD_SIZE, a, n*WORD_SIZE);
28 memcpy(r, a, n*WORD_SIZE);
32 inline void XorWords(word *r,
const word *a,
const word *b,
size_t n)
34 for (
size_t i=0; i<n; i++)
38 inline void XorWords(word *r,
const word *a,
size_t n)
40 for (
size_t i=0; i<n; i++)
44 inline void AndWords(word *r,
const word *a,
const word *b,
size_t n)
46 for (
size_t i=0; i<n; i++)
50 inline void AndWords(word *r,
const word *a,
size_t n)
52 for (
size_t i=0; i<n; i++)
56 inline void OrWords(word *r,
const word *a,
const word *b,
size_t n)
58 for (
size_t i=0; i<n; i++)
62 inline void OrWords(word *r,
const word *a,
size_t n)
64 for (
size_t i=0; i<n; i++)
68 inline word ShiftWordsLeftByBits(word *r,
size_t n,
unsigned int shiftBits)
73 for (
size_t i=0; i<n; i++)
76 r[i] = (u << shiftBits) | carry;
77 carry = u >> (WORD_BITS-shiftBits);
82 inline word ShiftWordsRightByBits(word *r,
size_t n,
unsigned int shiftBits)
87 for (
size_t i=n; i>0; i--)
90 r[i-1] = (u >> shiftBits) | carry;
91 carry = u << (WORD_BITS-shiftBits);
96 inline void ShiftWordsLeftByWords(word *r,
size_t n,
size_t shiftWords)
98 shiftWords =
STDMIN(shiftWords, n);
101 for (
size_t i=n-1; i>=shiftWords; i--)
102 r[i] = r[i-shiftWords];
103 SetWords(r, 0, shiftWords);
107 inline void ShiftWordsRightByWords(word *r,
size_t n,
size_t shiftWords)
109 shiftWords =
STDMIN(shiftWords, n);
112 for (
size_t i=0; i+shiftWords<n; i++)
113 r[i] = r[i+shiftWords];
114 SetWords(r+n-shiftWords, 0, shiftWords);
Utility functions for the Crypto++ library.
void memcpy_s(void *dest, size_t sizeInBytes, const void *src, size_t count)
Bounds checking replacement for memcpy()
Library configuration file.
const T & STDMIN(const T &a, const T &b)
Replacement function for std::min.
#define CRYPTOPP_ASSERT(exp)
Debugging and diagnostic assertion.
Crypto++ library namespace.