6
6
NAMESPACE_BEGIN(CryptoPP)
8
inline unsigned int CountWords(const word *X, unsigned int N)
8
inline size_t CountWords(const word *X, size_t N)
10
10
while (N && X[N-1]==0)
15
inline void SetWords(word *r, word a, unsigned int n)
15
inline void SetWords(word *r, word a, size_t n)
17
for (unsigned int i=0; i<n; i++)
17
for (size_t i=0; i<n; i++)
21
inline void CopyWords(word *r, const word *a, unsigned int n)
21
inline void CopyWords(word *r, const word *a, size_t n)
23
for (unsigned int i=0; i<n; i++)
23
for (size_t i=0; i<n; i++)
27
inline void XorWords(word *r, const word *a, const word *b, unsigned int n)
27
inline void XorWords(word *r, const word *a, const word *b, size_t n)
29
for (unsigned int i=0; i<n; i++)
29
for (size_t i=0; i<n; i++)
30
30
r[i] = a[i] ^ b[i];
33
inline void XorWords(word *r, const word *a, unsigned int n)
33
inline void XorWords(word *r, const word *a, size_t n)
35
for (unsigned int i=0; i<n; i++)
35
for (size_t i=0; i<n; i++)
39
inline void AndWords(word *r, const word *a, const word *b, unsigned int n)
39
inline void AndWords(word *r, const word *a, const word *b, size_t n)
41
for (unsigned int i=0; i<n; i++)
41
for (size_t i=0; i<n; i++)
42
42
r[i] = a[i] & b[i];
45
inline void AndWords(word *r, const word *a, unsigned int n)
45
inline void AndWords(word *r, const word *a, size_t n)
47
for (unsigned int i=0; i<n; i++)
47
for (size_t i=0; i<n; i++)
51
inline word ShiftWordsLeftByBits(word *r, unsigned int n, unsigned int shiftBits)
51
inline word ShiftWordsLeftByBits(word *r, size_t n, unsigned int shiftBits)
53
53
assert (shiftBits<WORD_BITS);
56
for (unsigned int i=0; i<n; i++)
56
for (size_t i=0; i<n; i++)
59
59
r[i] = (u << shiftBits) | carry;
65
inline word ShiftWordsRightByBits(word *r, unsigned int n, unsigned int shiftBits)
65
inline word ShiftWordsRightByBits(word *r, size_t n, unsigned int shiftBits)
67
67
assert (shiftBits<WORD_BITS);
70
for (int i=n-1; i>=0; i--)
70
for (size_t i=n; i>0; i--)
73
r[i] = (u >> shiftBits) | carry;
73
r[i-1] = (u >> shiftBits) | carry;
74
74
carry = u << (WORD_BITS-shiftBits);
79
inline void ShiftWordsLeftByWords(word *r, unsigned int n, unsigned int shiftWords)
79
inline void ShiftWordsLeftByWords(word *r, size_t n, size_t shiftWords)
81
81
shiftWords = STDMIN(shiftWords, n);
84
for (unsigned int i=n-1; i>=shiftWords; i--)
84
for (size_t i=n-1; i>=shiftWords; i--)
85
85
r[i] = r[i-shiftWords];
86
86
SetWords(r, 0, shiftWords);
90
inline void ShiftWordsRightByWords(word *r, unsigned int n, unsigned int shiftWords)
90
inline void ShiftWordsRightByWords(word *r, size_t n, size_t shiftWords)
92
92
shiftWords = STDMIN(shiftWords, n);
95
for (unsigned int i=0; i+shiftWords<n; i++)
95
for (size_t i=0; i+shiftWords<n; i++)
96
96
r[i] = r[i+shiftWords];
97
97
SetWords(r+n-shiftWords, 0, shiftWords);