diff options
Diffstat (limited to 'src/block')
63 files changed, 422 insertions, 396 deletions
diff --git a/src/block/aes/aes.cpp b/src/block/aes/aes.cpp index f2f1bc9e5..66f9c5eb1 100644 --- a/src/block/aes/aes.cpp +++ b/src/block/aes/aes.cpp @@ -412,14 +412,14 @@ const u32bit TD[1024] = { /* * AES Encryption */ -void AES::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES::encrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* TE0 = TE; const u32bit* TE1 = TE + 256; const u32bit* TE2 = TE + 512; const u32bit* TE3 = TE + 768; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit T0 = load_be<u32bit>(in, 0) ^ EK[0]; u32bit T1 = load_be<u32bit>(in, 1) ^ EK[1]; @@ -529,14 +529,14 @@ void AES::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * AES Decryption */ -void AES::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES::decrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* TD0 = TD; const u32bit* TD1 = TD + 256; const u32bit* TD2 = TD + 512; const u32bit* TD3 = TD + 768; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit T0 = load_be<u32bit>(in, 0) ^ DK[0]; u32bit T1 = load_be<u32bit>(in, 1) ^ DK[1]; diff --git a/src/block/aes/aes.h b/src/block/aes/aes.h index ba688a6e3..6bc1f44b4 100644 --- a/src/block/aes/aes.h +++ b/src/block/aes/aes.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL AES : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const { return "AES"; } diff --git a/src/block/aes_ssse3/aes_ssse3.cpp b/src/block/aes_ssse3/aes_ssse3.cpp index 07e36e25e..dda5941b7 100644 --- a/src/block/aes_ssse3/aes_ssse3.cpp +++ b/src/block/aes_ssse3/aes_ssse3.cpp @@ -171,7 +171,7 @@ __m128i aes_schedule_round(__m128i* rcon, __m128i input1, __m128i input2) smeared); } -__m128i aes_ssse3_encrypt(__m128i B, const __m128i* keys, u32bit rounds) +__m128i aes_ssse3_encrypt(__m128i B, const __m128i* keys, size_t rounds) { const __m128i sb2u = _mm_set_epi32( 0x5EB7E955, 0xBC982FCD, 0xE27A93C6, 0x0B712400); @@ -197,7 +197,7 @@ __m128i aes_ssse3_encrypt(__m128i B, const __m128i* keys, u32bit rounds) 4)), _mm_loadu_si128(keys)); - for(u32bit r = 1; ; ++r) + for(size_t r = 1; ; ++r) { const __m128i K = _mm_loadu_si128(keys + r); @@ -240,7 +240,7 @@ __m128i aes_ssse3_encrypt(__m128i B, const __m128i* keys, u32bit rounds) } } -__m128i aes_ssse3_decrypt(__m128i B, const __m128i* keys, u32bit rounds) +__m128i aes_ssse3_decrypt(__m128i B, const __m128i* keys, size_t rounds) { const __m128i k_dipt1 = _mm_set_epi32( 0x154A411E, 0x114E451A, 0x0F505B04, 0x0B545F00); @@ -278,7 +278,7 @@ __m128i aes_ssse3_decrypt(__m128i B, const __m128i* keys, u32bit rounds) B = mm_xor3(t, _mm_loadu_si128(keys), _mm_shuffle_epi8(k_dipt1, _mm_and_si128(B, low_nibs))); - for(u32bit r = 1; ; ++r) + for(size_t r = 1; ; ++r) { const __m128i K = _mm_loadu_si128(keys + r); @@ -337,14 +337,14 @@ __m128i aes_ssse3_decrypt(__m128i B, const __m128i* keys, u32bit rounds) /* * AES-128 Encryption */ -void AES_128_SSSE3::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES_128_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const { const __m128i* in_mm = (const __m128i*)in; __m128i* out_mm = (__m128i*)out; const __m128i* keys = (const __m128i*)&EK[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { __m128i B = _mm_loadu_si128(in_mm + i); _mm_storeu_si128(out_mm + i, aes_ssse3_encrypt(B, keys, 10)); @@ -354,14 +354,14 @@ void AES_128_SSSE3::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * AES-128 Decryption */ -void AES_128_SSSE3::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES_128_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const { const __m128i* in_mm = (const __m128i*)in; __m128i* out_mm = (__m128i*)out; const __m128i* keys = (const __m128i*)&DK[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { __m128i B = _mm_loadu_si128(in_mm + i); _mm_storeu_si128(out_mm + i, aes_ssse3_decrypt(B, keys, 10)); @@ -387,7 +387,7 @@ void AES_128_SSSE3::key_schedule(const byte keyb[], u32bit) _mm_storeu_si128(EK_mm, key); - for(u32bit i = 1; i != 10; ++i) + for(size_t i = 1; i != 10; ++i) { key = aes_schedule_round(&rcon, key, key); @@ -406,14 +406,14 @@ void AES_128_SSSE3::key_schedule(const byte keyb[], u32bit) /* * AES-192 Encryption */ -void AES_192_SSSE3::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES_192_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const { const __m128i* in_mm = (const __m128i*)in; __m128i* out_mm = (__m128i*)out; const __m128i* keys = (const __m128i*)&EK[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { __m128i B = _mm_loadu_si128(in_mm + i); _mm_storeu_si128(out_mm + i, aes_ssse3_encrypt(B, keys, 12)); @@ -423,14 +423,14 @@ void AES_192_SSSE3::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * AES-192 Decryption */ -void AES_192_SSSE3::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES_192_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const { const __m128i* in_mm = (const __m128i*)in; __m128i* out_mm = (__m128i*)out; const __m128i* keys = (const __m128i*)&DK[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { __m128i B = _mm_loadu_si128(in_mm + i); _mm_storeu_si128(out_mm + i, aes_ssse3_decrypt(B, keys, 12)); @@ -461,7 +461,7 @@ void AES_192_SSSE3::key_schedule(const byte keyb[], u32bit) // key2 with 8 high bytes masked off __m128i t = _mm_slli_si128(_mm_srli_si128(key2, 8), 8); - for(u32bit i = 0; i != 4; ++i) + for(size_t i = 0; i != 4; ++i) { key2 = aes_schedule_round(&rcon, key2, key1); @@ -505,14 +505,14 @@ void AES_192_SSSE3::key_schedule(const byte keyb[], u32bit) /* * AES-256 Encryption */ -void AES_256_SSSE3::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES_256_SSSE3::encrypt_n(const byte in[], byte out[], size_t blocks) const { const __m128i* in_mm = (const __m128i*)in; __m128i* out_mm = (__m128i*)out; const __m128i* keys = (const __m128i*)&EK[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { __m128i B = _mm_loadu_si128(in_mm + i); _mm_storeu_si128(out_mm + i, aes_ssse3_encrypt(B, keys, 14)); @@ -522,14 +522,14 @@ void AES_256_SSSE3::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * AES-256 Decryption */ -void AES_256_SSSE3::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void AES_256_SSSE3::decrypt_n(const byte in[], byte out[], size_t blocks) const { const __m128i* in_mm = (const __m128i*)in; __m128i* out_mm = (__m128i*)out; const __m128i* keys = (const __m128i*)&DK[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { __m128i B = _mm_loadu_si128(in_mm + i); _mm_storeu_si128(out_mm + i, aes_ssse3_decrypt(B, keys, 14)); @@ -560,7 +560,7 @@ void AES_256_SSSE3::key_schedule(const byte keyb[], u32bit) _mm_storeu_si128(DK_mm + 13, aes_schedule_mangle_dec(key2, 1)); - for(u32bit i = 2; i != 14; i += 2) + for(size_t i = 2; i != 14; i += 2) { __m128i k_t = key2; key1 = key2 = aes_schedule_round(&rcon, key2, key1); diff --git a/src/block/aes_ssse3/aes_ssse3.h b/src/block/aes_ssse3/aes_ssse3.h index 6e7d29a37..7b2a43cb7 100644 --- a/src/block/aes_ssse3/aes_ssse3.h +++ b/src/block/aes_ssse3/aes_ssse3.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL AES_128_SSSE3 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); zeroise(DK); } std::string name() const { return "AES-128"; } @@ -38,8 +38,8 @@ class BOTAN_DLL AES_128_SSSE3 : public BlockCipher class BOTAN_DLL AES_192_SSSE3 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); zeroise(DK); } std::string name() const { return "AES-192"; } @@ -58,8 +58,8 @@ class BOTAN_DLL AES_192_SSSE3 : public BlockCipher class BOTAN_DLL AES_256_SSSE3 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); zeroise(DK); } std::string name() const { return "AES-256"; } diff --git a/src/block/block_cipher.h b/src/block/block_cipher.h index 67a989822..8f9a4e121 100644 --- a/src/block/block_cipher.h +++ b/src/block/block_cipher.h @@ -95,7 +95,7 @@ class BOTAN_DLL BlockCipher : public SymmetricAlgorithm * @param blocks the number of blocks to process */ virtual void encrypt_n(const byte in[], byte out[], - u32bit blocks) const = 0; + size_t blocks) const = 0; /** * Decrypt one or more blocks @@ -104,7 +104,7 @@ class BOTAN_DLL BlockCipher : public SymmetricAlgorithm * @param blocks the number of blocks to process */ virtual void decrypt_n(const byte in[], byte out[], - u32bit blocks) const = 0; + size_t blocks) const = 0; /** * Get a new object representing the same algorithm as *this diff --git a/src/block/blowfish/blowfish.cpp b/src/block/blowfish/blowfish.cpp index 91d25884d..e72dbb2ae 100644 --- a/src/block/blowfish/blowfish.cpp +++ b/src/block/blowfish/blowfish.cpp @@ -13,19 +13,19 @@ namespace Botan { /* * Blowfish Encryption */ -void Blowfish::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Blowfish::encrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* S1 = &S[0]; const u32bit* S2 = &S[256]; const u32bit* S3 = &S[512]; const u32bit* S4 = &S[768]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit L = load_be<u32bit>(in, 0); u32bit R = load_be<u32bit>(in, 1); - for(u32bit j = 0; j != 16; j += 2) + for(size_t j = 0; j != 16; j += 2) { L ^= P[j]; R ^= ((S1[get_byte(0, L)] + S2[get_byte(1, L)]) ^ @@ -48,19 +48,19 @@ void Blowfish::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Blowfish Decryption */ -void Blowfish::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Blowfish::decrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* S1 = &S[0]; const u32bit* S2 = &S[256]; const u32bit* S3 = &S[512]; const u32bit* S4 = &S[768]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit L = load_be<u32bit>(in, 0); u32bit R = load_be<u32bit>(in, 1); - for(u32bit j = 17; j != 1; j -= 2) + for(size_t j = 17; j != 1; j -= 2) { L ^= P[j]; R ^= ((S1[get_byte(0, L)] + S2[get_byte(1, L)]) ^ @@ -87,7 +87,7 @@ void Blowfish::key_schedule(const byte key[], u32bit length) { clear(); - for(u32bit j = 0, k = 0; j != 18; ++j, k += 4) + for(size_t j = 0, k = 0; j != 18; ++j, k += 4) P[j] ^= make_u32bit(key[(k ) % length], key[(k+1) % length], key[(k+2) % length], key[(k+3) % length]); @@ -107,9 +107,9 @@ void Blowfish::generate_sbox(MemoryRegion<u32bit>& box, const u32bit* S3 = &S[512]; const u32bit* S4 = &S[768]; - for(u32bit j = 0; j != box.size(); j += 2) + for(size_t j = 0; j != box.size(); j += 2) { - for(u32bit k = 0; k != 16; k += 2) + for(size_t k = 0; k != 16; k += 2) { L ^= P[k]; R ^= ((S1[get_byte(0, L)] + S2[get_byte(1, L)]) ^ diff --git a/src/block/blowfish/blowfish.h b/src/block/blowfish/blowfish.h index 0b4df50ad..32fb4cbd4 100644 --- a/src/block/blowfish/blowfish.h +++ b/src/block/blowfish/blowfish.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Blowfish : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const { return "Blowfish"; } diff --git a/src/block/cascade/cascade.cpp b/src/block/cascade/cascade.cpp index f72ef7b76..e93e81d33 100644 --- a/src/block/cascade/cascade.cpp +++ b/src/block/cascade/cascade.cpp @@ -10,20 +10,20 @@ namespace Botan { void Cascade_Cipher::encrypt_n(const byte in[], byte out[], - u32bit blocks) const + size_t blocks) const { - u32bit c1_blocks = blocks * (BLOCK_SIZE / cipher1->BLOCK_SIZE); - u32bit c2_blocks = blocks * (BLOCK_SIZE / cipher2->BLOCK_SIZE); + size_t c1_blocks = blocks * (BLOCK_SIZE / cipher1->BLOCK_SIZE); + size_t c2_blocks = blocks * (BLOCK_SIZE / cipher2->BLOCK_SIZE); cipher1->encrypt_n(in, out, c1_blocks); cipher2->encrypt_n(out, out, c2_blocks); } void Cascade_Cipher::decrypt_n(const byte in[], byte out[], - u32bit blocks) const + size_t blocks) const { - u32bit c1_blocks = blocks * (BLOCK_SIZE / cipher1->BLOCK_SIZE); - u32bit c2_blocks = blocks * (BLOCK_SIZE / cipher2->BLOCK_SIZE); + size_t c1_blocks = blocks * (BLOCK_SIZE / cipher1->BLOCK_SIZE); + size_t c2_blocks = blocks * (BLOCK_SIZE / cipher2->BLOCK_SIZE); cipher2->decrypt_n(in, out, c2_blocks); cipher1->decrypt_n(out, out, c1_blocks); @@ -56,11 +56,11 @@ BlockCipher* Cascade_Cipher::clone() const namespace { -u32bit euclids_algorithm(u32bit a, u32bit b) +size_t euclids_algorithm(size_t a, size_t b) { while(b != 0) // gcd { - u32bit t = b; + size_t t = b; b = a % b; a = t; } @@ -68,12 +68,12 @@ u32bit euclids_algorithm(u32bit a, u32bit b) return a; } -u32bit block_size_for_cascade(u32bit bs, u32bit bs2) +size_t block_size_for_cascade(size_t bs, size_t bs2) { if(bs == bs2) return bs; - u32bit gcd = euclids_algorithm(bs, bs2); + size_t gcd = euclids_algorithm(bs, bs2); return (bs * bs2) / gcd; } diff --git a/src/block/cascade/cascade.h b/src/block/cascade/cascade.h index abd9b015d..6e9d43cf7 100644 --- a/src/block/cascade/cascade.h +++ b/src/block/cascade/cascade.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Cascade_Cipher : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const; diff --git a/src/block/cast/cast128.cpp b/src/block/cast/cast128.cpp index 48eb910ce..538c1bd5b 100644 --- a/src/block/cast/cast128.cpp +++ b/src/block/cast/cast128.cpp @@ -48,9 +48,9 @@ inline void R3(u32bit& L, u32bit R, u32bit MK, u32bit RK) /* * CAST-128 Encryption */ -void CAST_128::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void CAST_128::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit L = load_be<u32bit>(in, 0); u32bit R = load_be<u32bit>(in, 1); @@ -82,9 +82,9 @@ void CAST_128::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * CAST-128 Decryption */ -void CAST_128::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void CAST_128::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit L = load_be<u32bit>(in, 0); u32bit R = load_be<u32bit>(in, 1); @@ -120,13 +120,13 @@ void CAST_128::key_schedule(const byte key[], u32bit length) { clear(); SecureVector<u32bit> X(4); - for(u32bit j = 0; j != length; ++j) + for(size_t j = 0; j != length; ++j) X[j/4] = (X[j/4] << 8) + key[j]; cast_ks(MK, X); cast_ks(RK, X); - for(u32bit j = 0; j != 16; ++j) + for(size_t j = 0; j != 16; ++j) RK[j] %= 32; } @@ -139,7 +139,7 @@ void CAST_128::cast_ks(MemoryRegion<u32bit>& K, class ByteReader { public: - byte operator()(u32bit i) { return (X[i/4] >> (8*(3 - (i%4)))); } + byte operator()(size_t i) { return (X[i/4] >> (8*(3 - (i%4)))); } ByteReader(const u32bit* x) : X(x) {} private: const u32bit* X; diff --git a/src/block/cast/cast128.h b/src/block/cast/cast128.h index bb8332aca..18c0c1868 100644 --- a/src/block/cast/cast128.h +++ b/src/block/cast/cast128.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL CAST_128 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(MK); zeroise(RK); } std::string name() const { return "CAST-128"; } diff --git a/src/block/cast/cast256.cpp b/src/block/cast/cast256.cpp index 551d4e387..6567ffbd4 100644 --- a/src/block/cast/cast256.cpp +++ b/src/block/cast/cast256.cpp @@ -48,9 +48,9 @@ void round3(u32bit& out, u32bit in, u32bit mask, u32bit rot) /* * CAST-256 Encryption */ -void CAST_256::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void CAST_256::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_be<u32bit>(in, 0); u32bit B = load_be<u32bit>(in, 1); @@ -92,9 +92,9 @@ void CAST_256::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * CAST-256 Decryption */ -void CAST_256::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void CAST_256::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_be<u32bit>(in, 0); u32bit B = load_be<u32bit>(in, 1); @@ -139,13 +139,13 @@ void CAST_256::decrypt_n(const byte in[], byte out[], u32bit blocks) const void CAST_256::key_schedule(const byte key[], u32bit length) { SecureVector<u32bit> K(8); - for(u32bit j = 0; j != length; ++j) + for(size_t j = 0; j != length; ++j) K[j/4] = (K[j/4] << 8) + key[j]; u32bit A = K[0], B = K[1], C = K[2], D = K[3], E = K[4], F = K[5], G = K[6], H = K[7]; - for(u32bit j = 0; j != 48; j += 4) + for(size_t j = 0; j != 48; j += 4) { round1(G, H, KEY_MASK[4*j+ 0], KEY_ROT[(4*j+ 0) % 32]); round2(F, G, KEY_MASK[4*j+ 1], KEY_ROT[(4*j+ 1) % 32]); diff --git a/src/block/cast/cast256.h b/src/block/cast/cast256.h index 533f57ac1..ef73fbf94 100644 --- a/src/block/cast/cast256.h +++ b/src/block/cast/cast256.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL CAST_256 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(MK); zeroise(RK); } std::string name() const { return "CAST-256"; } diff --git a/src/block/des/des.cpp b/src/block/des/des.cpp index 37424cd35..043391938 100644 --- a/src/block/des/des.cpp +++ b/src/block/des/des.cpp @@ -140,9 +140,9 @@ void des_decrypt(u32bit& L, u32bit& R, /* * DES Encryption */ -void DES::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void DES::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u64bit T = (DES_IPTAB1[in[0]] ) | (DES_IPTAB1[in[1]] << 1) | (DES_IPTAB1[in[2]] << 2) | (DES_IPTAB1[in[3]] << 3) | @@ -170,9 +170,9 @@ void DES::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * DES Decryption */ -void DES::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void DES::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u64bit T = (DES_IPTAB1[in[0]] ) | (DES_IPTAB1[in[1]] << 1) | (DES_IPTAB1[in[2]] << 2) | (DES_IPTAB1[in[3]] << 3) | @@ -209,9 +209,9 @@ void DES::key_schedule(const byte key[], u32bit) /* * TripleDES Encryption */ -void TripleDES::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void TripleDES::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u64bit T = (DES_IPTAB1[in[0]] ) | (DES_IPTAB1[in[1]] << 1) | (DES_IPTAB1[in[2]] << 2) | (DES_IPTAB1[in[3]] << 3) | @@ -242,9 +242,9 @@ void TripleDES::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * TripleDES Decryption */ -void TripleDES::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void TripleDES::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u64bit T = (DES_IPTAB1[in[0]] ) | (DES_IPTAB1[in[1]] << 1) | (DES_IPTAB1[in[2]] << 2) | (DES_IPTAB1[in[3]] << 3) | diff --git a/src/block/des/des.h b/src/block/des/des.h index e338b9a29..dbca8ddfd 100644 --- a/src/block/des/des.h +++ b/src/block/des/des.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL DES : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(round_key); } std::string name() const { return "DES"; } @@ -38,8 +38,8 @@ class BOTAN_DLL DES : public BlockCipher class BOTAN_DLL TripleDES : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(round_key); } std::string name() const { return "TripleDES"; } diff --git a/src/block/des/desx.cpp b/src/block/des/desx.cpp index cc97c4e7b..cb53448b4 100644 --- a/src/block/des/desx.cpp +++ b/src/block/des/desx.cpp @@ -13,9 +13,9 @@ namespace Botan { /* * DESX Encryption */ -void DESX::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void DESX::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { xor_buf(out, in, &K1[0], BLOCK_SIZE); des.encrypt(out); @@ -29,9 +29,9 @@ void DESX::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * DESX Decryption */ -void DESX::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void DESX::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { xor_buf(out, in, &K2[0], BLOCK_SIZE); des.decrypt(out); diff --git a/src/block/des/desx.h b/src/block/des/desx.h index cb452c47b..5b7f10281 100644 --- a/src/block/des/desx.h +++ b/src/block/des/desx.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL DESX : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { des.clear(); zeroise(K1); zeroise(K2); } std::string name() const { return "DESX"; } diff --git a/src/block/gost_28147/gost_28147.cpp b/src/block/gost_28147/gost_28147.cpp index 8d7e950c6..c23c31dfb 100644 --- a/src/block/gost_28147/gost_28147.cpp +++ b/src/block/gost_28147/gost_28147.cpp @@ -11,7 +11,7 @@ namespace Botan { -byte GOST_28147_89_Params::sbox_entry(u32bit row, u32bit col) const +byte GOST_28147_89_Params::sbox_entry(size_t row, size_t col) const { byte x = sboxes[4 * col + (row / 2)]; @@ -85,11 +85,12 @@ GOST_28147_89::GOST_28147_89(const GOST_28147_89_Params& param) : /* * GOST Encryption */ -void GOST_28147_89::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void GOST_28147_89::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit N1 = load_le<u32bit>(in, 0), N2 = load_le<u32bit>(in, 1); + u32bit N1 = load_le<u32bit>(in, 0); + u32bit N2 = load_le<u32bit>(in, 1); for(size_t j = 0; j != 3; ++j) { @@ -114,11 +115,12 @@ void GOST_28147_89::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * GOST Decryption */ -void GOST_28147_89::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void GOST_28147_89::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit N1 = load_le<u32bit>(in, 0), N2 = load_le<u32bit>(in, 1); + u32bit N1 = load_le<u32bit>(in, 0); + u32bit N2 = load_le<u32bit>(in, 1); GOST_2ROUND(N1, N2, 0, 1); GOST_2ROUND(N1, N2, 2, 3); @@ -144,8 +146,8 @@ void GOST_28147_89::decrypt_n(const byte in[], byte out[], u32bit blocks) const */ void GOST_28147_89::key_schedule(const byte key[], u32bit) { - for(u32bit j = 0; j != 8; ++j) - EK[j] = load_le<u32bit>(key, j); + for(size_t i = 0; i != 8; ++i) + EK[i] = load_le<u32bit>(key, i); } } diff --git a/src/block/gost_28147/gost_28147.h b/src/block/gost_28147/gost_28147.h index 501e621e0..f70c6650f 100644 --- a/src/block/gost_28147/gost_28147.h +++ b/src/block/gost_28147/gost_28147.h @@ -26,7 +26,7 @@ class BOTAN_DLL GOST_28147_89_Params * @param col the column * @return sbox entry at this row/column */ - byte sbox_entry(u32bit row, u32bit col) const; + byte sbox_entry(size_t row, size_t col) const; /** * @return name of this parameter set @@ -52,8 +52,8 @@ class BOTAN_DLL GOST_28147_89_Params class BOTAN_DLL GOST_28147_89 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); } diff --git a/src/block/idea/idea.cpp b/src/block/idea/idea.cpp index 5f0b5f195..8201c9193 100644 --- a/src/block/idea/idea.cpp +++ b/src/block/idea/idea.cpp @@ -46,7 +46,7 @@ u16bit mul_inv(u16bit x) { u16bit y = x; - for(u32bit i = 0; i != 15; ++i) + for(size_t i = 0; i != 15; ++i) { y = mul(y, y); // square y = mul(y, x); @@ -58,18 +58,18 @@ u16bit mul_inv(u16bit x) /** * IDEA is involutional, depending only on the key schedule */ -void idea_op(const byte in[], byte out[], u32bit blocks, const u16bit K[52]) +void idea_op(const byte in[], byte out[], size_t blocks, const u16bit K[52]) { const u32bit BLOCK_SIZE = 8; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit X1 = load_be<u16bit>(in, 0); u16bit X2 = load_be<u16bit>(in, 1); u16bit X3 = load_be<u16bit>(in, 2); u16bit X4 = load_be<u16bit>(in, 3); - for(u32bit j = 0; j != 8; ++j) + for(size_t j = 0; j != 8; ++j) { X1 = mul(X1, K[6*j+0]); X2 += K[6*j+1]; @@ -106,7 +106,7 @@ void idea_op(const byte in[], byte out[], u32bit blocks, const u16bit K[52]) /* * IDEA Encryption */ -void IDEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void IDEA::encrypt_n(const byte in[], byte out[], size_t blocks) const { idea_op(in, out, blocks, &EK[0]); } @@ -114,7 +114,7 @@ void IDEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * IDEA Decryption */ -void IDEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void IDEA::decrypt_n(const byte in[], byte out[], size_t blocks) const { idea_op(in, out, blocks, &DK[0]); } @@ -124,10 +124,10 @@ void IDEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const */ void IDEA::key_schedule(const byte key[], u32bit) { - for(u32bit j = 0; j != 8; ++j) + for(size_t j = 0; j != 8; ++j) EK[j] = load_be<u16bit>(key, j); - for(u32bit j = 1, k = 8, offset = 0; k != 52; j %= 8, ++j, ++k) + for(size_t j = 1, k = 8, offset = 0; k != 52; j %= 8, ++j, ++k) { EK[j+7+offset] = static_cast<u16bit>((EK[(j % 8) + offset] << 9) | (EK[((j+1) % 8) + offset] >> 7)); @@ -139,7 +139,7 @@ void IDEA::key_schedule(const byte key[], u32bit) DK[49] = -EK[1]; DK[48] = mul_inv(EK[0]); - for(u32bit j = 1, k = 4, counter = 47; j != 8; ++j, k += 6) + for(size_t j = 1, k = 4, counter = 47; j != 8; ++j, k += 6) { DK[counter--] = EK[k+1]; DK[counter--] = EK[k]; diff --git a/src/block/idea/idea.h b/src/block/idea/idea.h index 1a315ce3f..566d9afd4 100644 --- a/src/block/idea/idea.h +++ b/src/block/idea/idea.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL IDEA : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); zeroise(DK); } std::string name() const { return "IDEA"; } diff --git a/src/block/idea_sse2/idea_sse2.cpp b/src/block/idea_sse2/idea_sse2.cpp index 857869115..469a33943 100644 --- a/src/block/idea_sse2/idea_sse2.cpp +++ b/src/block/idea_sse2/idea_sse2.cpp @@ -144,7 +144,7 @@ void idea_op_8(const byte in[64], byte out[64], const u16bit EK[52]) B2 = _mm_or_si128(_mm_slli_epi16(B2, 8), _mm_srli_epi16(B2, 8)); B3 = _mm_or_si128(_mm_slli_epi16(B3, 8), _mm_srli_epi16(B3, 8)); - for(u32bit i = 0; i != 8; ++i) + for(size_t i = 0; i != 8; ++i) { B0 = mul(B0, EK[6*i+0]); B1 = _mm_add_epi16(B1, _mm_set1_epi16(EK[6*i+1])); @@ -194,7 +194,7 @@ void idea_op_8(const byte in[64], byte out[64], const u16bit EK[52]) /* * IDEA Encryption */ -void IDEA_SSE2::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void IDEA_SSE2::encrypt_n(const byte in[], byte out[], size_t blocks) const { const u16bit* KS = &this->get_EK()[0]; @@ -213,7 +213,7 @@ void IDEA_SSE2::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * IDEA Decryption */ -void IDEA_SSE2::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void IDEA_SSE2::decrypt_n(const byte in[], byte out[], size_t blocks) const { const u16bit* KS = &this->get_DK()[0]; diff --git a/src/block/idea_sse2/idea_sse2.h b/src/block/idea_sse2/idea_sse2.h index 1f6e063d0..8e475568e 100644 --- a/src/block/idea_sse2/idea_sse2.h +++ b/src/block/idea_sse2/idea_sse2.h @@ -20,8 +20,8 @@ class BOTAN_DLL IDEA_SSE2 : public IDEA public: size_t parallelism() const { return 8; } - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; BlockCipher* clone() const { return new IDEA_SSE2; } }; diff --git a/src/block/kasumi/kasumi.cpp b/src/block/kasumi/kasumi.cpp index 023a7a503..15d6a24fc 100644 --- a/src/block/kasumi/kasumi.cpp +++ b/src/block/kasumi/kasumi.cpp @@ -109,16 +109,16 @@ u16bit FI(u16bit I, u16bit K) /* * KASUMI Encryption */ -void KASUMI::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void KASUMI::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit B0 = load_be<u16bit>(in, 0); u16bit B1 = load_be<u16bit>(in, 1); u16bit B2 = load_be<u16bit>(in, 2); u16bit B3 = load_be<u16bit>(in, 3); - for(u32bit j = 0; j != 8; j += 2) + for(size_t j = 0; j != 8; j += 2) { const u16bit* K = &EK[8*j]; @@ -153,16 +153,16 @@ void KASUMI::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * KASUMI Decryption */ -void KASUMI::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void KASUMI::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit B0 = load_be<u16bit>(in, 0); u16bit B1 = load_be<u16bit>(in, 1); u16bit B2 = load_be<u16bit>(in, 2); u16bit B3 = load_be<u16bit>(in, 3); - for(u32bit j = 0; j != 8; j += 2) + for(size_t j = 0; j != 8; j += 2) { const u16bit* K = &EK[8*(6-j)]; @@ -205,22 +205,22 @@ void KASUMI::key_schedule(const byte key[], u32bit) 0xFEDC, 0xBA98, 0x7654, 0x3210 }; SecureVector<u16bit> K(16); - for(u32bit j = 0; j != 8; ++j) + for(size_t i = 0; i != 8; ++i) { - K[j] = load_be<u16bit>(key, j); - K[j+8] = K[j] ^ RC[j]; + K[i] = load_be<u16bit>(key, i); + K[i+8] = K[i] ^ RC[i]; } - for(u32bit j = 0; j != 8; ++j) + for(size_t i = 0; i != 8; ++i) { - EK[8*j ] = rotate_left(K[(j+0) % 8 ], 2); - EK[8*j+1] = rotate_left(K[(j+2) % 8 + 8], 1); - EK[8*j+2] = rotate_left(K[(j+1) % 8 ], 5); - EK[8*j+3] = K[(j+4) % 8 + 8]; - EK[8*j+4] = rotate_left(K[(j+5) % 8 ], 8); - EK[8*j+5] = K[(j+3) % 8 + 8]; - EK[8*j+6] = rotate_left(K[(j+6) % 8 ], 13); - EK[8*j+7] = K[(j+7) % 8 + 8]; + EK[8*i ] = rotate_left(K[(i+0) % 8 ], 2); + EK[8*i+1] = rotate_left(K[(i+2) % 8 + 8], 1); + EK[8*i+2] = rotate_left(K[(i+1) % 8 ], 5); + EK[8*i+3] = K[(i+4) % 8 + 8]; + EK[8*i+4] = rotate_left(K[(i+5) % 8 ], 8); + EK[8*i+5] = K[(i+3) % 8 + 8]; + EK[8*i+6] = rotate_left(K[(i+6) % 8 ], 13); + EK[8*i+7] = K[(i+7) % 8 + 8]; } } diff --git a/src/block/kasumi/kasumi.h b/src/block/kasumi/kasumi.h index 51727dd4d..8589af79b 100644 --- a/src/block/kasumi/kasumi.h +++ b/src/block/kasumi/kasumi.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL KASUMI : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); } std::string name() const { return "KASUMI"; } diff --git a/src/block/lion/lion.cpp b/src/block/lion/lion.cpp index 9d0dff297..b4a00ebee 100644 --- a/src/block/lion/lion.cpp +++ b/src/block/lion/lion.cpp @@ -14,12 +14,12 @@ namespace Botan { /* * Lion Encryption */ -void Lion::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Lion::encrypt_n(const byte in[], byte out[], size_t blocks) const { SecureVector<byte> buffer_vec(LEFT_SIZE); byte* buffer = &buffer_vec[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { xor_buf(buffer, in, &key1[0], LEFT_SIZE); cipher->set_key(buffer, LEFT_SIZE); @@ -41,12 +41,12 @@ void Lion::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Lion Decryption */ -void Lion::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Lion::decrypt_n(const byte in[], byte out[], size_t blocks) const { SecureVector<byte> buffer_vec(LEFT_SIZE); byte* buffer = &buffer_vec[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { xor_buf(buffer, in, &key2[0], LEFT_SIZE); cipher->set_key(buffer, LEFT_SIZE); @@ -108,8 +108,8 @@ void Lion::clear() /* * Lion Constructor */ -Lion::Lion(HashFunction* hash_in, StreamCipher* sc_in, u32bit block_len) : - BlockCipher(std::max<u32bit>(2*hash_in->OUTPUT_LENGTH + 1, block_len), +Lion::Lion(HashFunction* hash_in, StreamCipher* sc_in, size_t block_len) : + BlockCipher(std::max<size_t>(2*hash_in->OUTPUT_LENGTH + 1, block_len), 2, 2*hash_in->OUTPUT_LENGTH, 2), LEFT_SIZE(hash_in->OUTPUT_LENGTH), RIGHT_SIZE(BLOCK_SIZE - LEFT_SIZE), diff --git a/src/block/lion/lion.h b/src/block/lion/lion.h index bba4e6f30..5d4d374b9 100644 --- a/src/block/lion/lion.h +++ b/src/block/lion/lion.h @@ -25,8 +25,8 @@ namespace Botan { class BOTAN_DLL Lion : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const; @@ -39,13 +39,13 @@ class BOTAN_DLL Lion : public BlockCipher */ Lion(HashFunction* hash, StreamCipher* cipher, - u32bit block_size); + size_t block_size); ~Lion() { delete hash; delete cipher; } private: void key_schedule(const byte[], u32bit); - const u32bit LEFT_SIZE, RIGHT_SIZE; + const size_t LEFT_SIZE, RIGHT_SIZE; HashFunction* hash; StreamCipher* cipher; diff --git a/src/block/lubyrack/lubyrack.cpp b/src/block/lubyrack/lubyrack.cpp index cdaff1b1e..0b7ec7bf4 100644 --- a/src/block/lubyrack/lubyrack.cpp +++ b/src/block/lubyrack/lubyrack.cpp @@ -13,14 +13,14 @@ namespace Botan { /* * Luby-Rackoff Encryption */ -void LubyRackoff::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void LubyRackoff::encrypt_n(const byte in[], byte out[], size_t blocks) const { - const u32bit len = hash->OUTPUT_LENGTH; + const size_t len = hash->OUTPUT_LENGTH; SecureVector<byte> buffer_vec(len); byte* buffer = &buffer_vec[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { hash->update(K1); hash->update(in, len); @@ -50,14 +50,14 @@ void LubyRackoff::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Luby-Rackoff Decryption */ -void LubyRackoff::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void LubyRackoff::decrypt_n(const byte in[], byte out[], size_t blocks) const { - const u32bit len = hash->OUTPUT_LENGTH; + const size_t len = hash->OUTPUT_LENGTH; SecureVector<byte> buffer_vec(len); byte* buffer = &buffer_vec[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { hash->update(K2); hash->update(in + len, len); diff --git a/src/block/lubyrack/lubyrack.h b/src/block/lubyrack/lubyrack.h index a69d2302f..c20af950d 100644 --- a/src/block/lubyrack/lubyrack.h +++ b/src/block/lubyrack/lubyrack.h @@ -19,8 +19,8 @@ namespace Botan { class BOTAN_DLL LubyRackoff : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const; diff --git a/src/block/mars/mars.cpp b/src/block/mars/mars.cpp index 71cef3ee8..9445ab576 100644 --- a/src/block/mars/mars.cpp +++ b/src/block/mars/mars.cpp @@ -232,9 +232,9 @@ u32bit gen_mask(u32bit input) /* * MARS Encryption */ -void MARS::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void MARS::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_le<u32bit>(in, 0) + EK[0]; u32bit B = load_le<u32bit>(in, 1) + EK[1]; @@ -275,9 +275,9 @@ void MARS::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * MARS Decryption */ -void MARS::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void MARS::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_le<u32bit>(in, 3) + EK[39]; u32bit B = load_le<u32bit>(in, 2) + EK[38]; @@ -321,30 +321,30 @@ void MARS::decrypt_n(const byte in[], byte out[], u32bit blocks) const void MARS::key_schedule(const byte key[], u32bit length) { SecureVector<u32bit> T(15); - for(u32bit j = 0; j != length / 4; ++j) + for(size_t j = 0; j != length / 4; ++j) T[j] = load_le<u32bit>(key, j); T[length / 4] = length / 4; - for(u32bit j = 0; j != 4; ++j) + for(u32bit i = 0; i != 4; ++i) { - T[ 0] ^= rotate_left(T[ 8] ^ T[13], 3) ^ (j ); - T[ 1] ^= rotate_left(T[ 9] ^ T[14], 3) ^ (j + 4); - T[ 2] ^= rotate_left(T[10] ^ T[ 0], 3) ^ (j + 8); - T[ 3] ^= rotate_left(T[11] ^ T[ 1], 3) ^ (j + 12); - T[ 4] ^= rotate_left(T[12] ^ T[ 2], 3) ^ (j + 16); - T[ 5] ^= rotate_left(T[13] ^ T[ 3], 3) ^ (j + 20); - T[ 6] ^= rotate_left(T[14] ^ T[ 4], 3) ^ (j + 24); - T[ 7] ^= rotate_left(T[ 0] ^ T[ 5], 3) ^ (j + 28); - T[ 8] ^= rotate_left(T[ 1] ^ T[ 6], 3) ^ (j + 32); - T[ 9] ^= rotate_left(T[ 2] ^ T[ 7], 3) ^ (j + 36); - T[10] ^= rotate_left(T[ 3] ^ T[ 8], 3) ^ (j + 40); - T[11] ^= rotate_left(T[ 4] ^ T[ 9], 3) ^ (j + 44); - T[12] ^= rotate_left(T[ 5] ^ T[10], 3) ^ (j + 48); - T[13] ^= rotate_left(T[ 6] ^ T[11], 3) ^ (j + 52); - T[14] ^= rotate_left(T[ 7] ^ T[12], 3) ^ (j + 56); - - for(u32bit k = 0; k != 4; ++k) + T[ 0] ^= rotate_left(T[ 8] ^ T[13], 3) ^ (i ); + T[ 1] ^= rotate_left(T[ 9] ^ T[14], 3) ^ (i + 4); + T[ 2] ^= rotate_left(T[10] ^ T[ 0], 3) ^ (i + 8); + T[ 3] ^= rotate_left(T[11] ^ T[ 1], 3) ^ (i + 12); + T[ 4] ^= rotate_left(T[12] ^ T[ 2], 3) ^ (i + 16); + T[ 5] ^= rotate_left(T[13] ^ T[ 3], 3) ^ (i + 20); + T[ 6] ^= rotate_left(T[14] ^ T[ 4], 3) ^ (i + 24); + T[ 7] ^= rotate_left(T[ 0] ^ T[ 5], 3) ^ (i + 28); + T[ 8] ^= rotate_left(T[ 1] ^ T[ 6], 3) ^ (i + 32); + T[ 9] ^= rotate_left(T[ 2] ^ T[ 7], 3) ^ (i + 36); + T[10] ^= rotate_left(T[ 3] ^ T[ 8], 3) ^ (i + 40); + T[11] ^= rotate_left(T[ 4] ^ T[ 9], 3) ^ (i + 44); + T[12] ^= rotate_left(T[ 5] ^ T[10], 3) ^ (i + 48); + T[13] ^= rotate_left(T[ 6] ^ T[11], 3) ^ (i + 52); + T[14] ^= rotate_left(T[ 7] ^ T[12], 3) ^ (i + 56); + + for(size_t j = 0; j != 4; ++j) { T[ 0] = rotate_left(T[ 0] + SBOX[T[14] % 512], 9); T[ 1] = rotate_left(T[ 1] + SBOX[T[ 0] % 512], 9); @@ -363,17 +363,23 @@ void MARS::key_schedule(const byte key[], u32bit length) T[14] = rotate_left(T[14] + SBOX[T[13] % 512], 9); } - EK[10*j + 0] = T[ 0]; EK[10*j + 1] = T[ 4]; EK[10*j + 2] = T[ 8]; - EK[10*j + 3] = T[12]; EK[10*j + 4] = T[ 1]; EK[10*j + 5] = T[ 5]; - EK[10*j + 6] = T[ 9]; EK[10*j + 7] = T[13]; EK[10*j + 8] = T[ 2]; - EK[10*j + 9] = T[ 6]; + EK[10*i + 0] = T[ 0]; + EK[10*i + 1] = T[ 4]; + EK[10*i + 2] = T[ 8]; + EK[10*i + 3] = T[12]; + EK[10*i + 4] = T[ 1]; + EK[10*i + 5] = T[ 5]; + EK[10*i + 6] = T[ 9]; + EK[10*i + 7] = T[13]; + EK[10*i + 8] = T[ 2]; + EK[10*i + 9] = T[ 6]; } - for(u32bit j = 5; j != 37; j += 2) + for(size_t i = 5; i != 37; i += 2) { - u32bit key3 = EK[j] & 3; - EK[j] |= 3; - EK[j] ^= rotate_left(SBOX[265 + key3], EK[j-1] % 32) & gen_mask(EK[j]); + u32bit key3 = EK[i] & 3; + EK[i] |= 3; + EK[i] ^= rotate_left(SBOX[265 + key3], EK[i-1] % 32) & gen_mask(EK[i]); } } diff --git a/src/block/mars/mars.h b/src/block/mars/mars.h index 84a9a21f7..0b98d3c25 100644 --- a/src/block/mars/mars.h +++ b/src/block/mars/mars.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL MARS : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); } std::string name() const { return "MARS"; } diff --git a/src/block/misty1/misty1.cpp b/src/block/misty1/misty1.cpp index 1d032172d..891abf49f 100644 --- a/src/block/misty1/misty1.cpp +++ b/src/block/misty1/misty1.cpp @@ -102,16 +102,16 @@ u16bit FI(u16bit input, u16bit key7, u16bit key9) /* * MISTY1 Encryption */ -void MISTY1::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void MISTY1::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit B0 = load_be<u16bit>(in, 0); u16bit B1 = load_be<u16bit>(in, 1); u16bit B2 = load_be<u16bit>(in, 2); u16bit B3 = load_be<u16bit>(in, 3); - for(u32bit j = 0; j != 12; j += 3) + for(size_t j = 0; j != 12; j += 3) { const u16bit* RK = &EK[8 * j]; @@ -152,16 +152,16 @@ void MISTY1::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * MISTY1 Decryption */ -void MISTY1::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void MISTY1::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit B0 = load_be<u16bit>(in, 2); u16bit B1 = load_be<u16bit>(in, 3); u16bit B2 = load_be<u16bit>(in, 0); u16bit B3 = load_be<u16bit>(in, 1); - for(u32bit j = 0; j != 12; j += 3) + for(size_t j = 0; j != 12; j += 3) { const u16bit* RK = &DK[8 * j]; @@ -205,14 +205,14 @@ void MISTY1::decrypt_n(const byte in[], byte out[], u32bit blocks) const void MISTY1::key_schedule(const byte key[], u32bit length) { SecureVector<u16bit> KS(32); - for(u32bit j = 0; j != length / 2; ++j) - KS[j] = load_be<u16bit>(key, j); + for(size_t i = 0; i != length / 2; ++i) + KS[i] = load_be<u16bit>(key, i); - for(u32bit j = 0; j != 8; ++j) + for(size_t i = 0; i != 8; ++i) { - KS[j+ 8] = FI(KS[j], KS[(j+1) % 8] >> 9, KS[(j+1) % 8] & 0x1FF); - KS[j+16] = KS[j+8] >> 9; - KS[j+24] = KS[j+8] & 0x1FF; + KS[i+ 8] = FI(KS[i], KS[(i+1) % 8] >> 9, KS[(i+1) % 8] & 0x1FF); + KS[i+16] = KS[i+8] >> 9; + KS[i+24] = KS[i+8] & 0x1FF; } /* @@ -241,17 +241,17 @@ void MISTY1::key_schedule(const byte key[], u32bit length) 0x1C, 0x05, 0x00, 0x15, 0x1D, 0x02, 0x11, 0x19, 0x07, 0x13, 0x1B, 0x04, 0x04, 0x0A, 0x0E, 0x00 }; - for(u32bit j = 0; j != 100; ++j) + for(size_t i = 0; i != 100; ++i) { - EK[j] = KS[EK_ORDER[j]]; - DK[j] = KS[DK_ORDER[j]]; + EK[i] = KS[EK_ORDER[i]]; + DK[i] = KS[DK_ORDER[i]]; } } /* * MISTY1 Constructor */ -MISTY1::MISTY1(u32bit rounds) : BlockCipher(8, 16), EK(100), DK(100) +MISTY1::MISTY1(size_t rounds) : BlockCipher(8, 16), EK(100), DK(100) { if(rounds != 8) throw Invalid_Argument("MISTY1: Invalid number of rounds: " diff --git a/src/block/misty1/misty1.h b/src/block/misty1/misty1.h index 7a9f1f9d9..bb948cb07 100644 --- a/src/block/misty1/misty1.h +++ b/src/block/misty1/misty1.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL MISTY1 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); zeroise(DK); } std::string name() const { return "MISTY1"; } @@ -29,7 +29,7 @@ class BOTAN_DLL MISTY1 : public BlockCipher * @param rounds the number of rounds. Must be 8 with the current * implementation */ - MISTY1(u32bit rounds = 8); + MISTY1(size_t rounds = 8); private: void key_schedule(const byte[], u32bit); diff --git a/src/block/noekeon/noekeon.cpp b/src/block/noekeon/noekeon.cpp index a24153a29..f9a54482b 100644 --- a/src/block/noekeon/noekeon.cpp +++ b/src/block/noekeon/noekeon.cpp @@ -84,16 +84,16 @@ const byte Noekeon::RC[] = { /* * Noekeon Encryption */ -void Noekeon::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Noekeon::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A0 = load_be<u32bit>(in, 0); u32bit A1 = load_be<u32bit>(in, 1); u32bit A2 = load_be<u32bit>(in, 2); u32bit A3 = load_be<u32bit>(in, 3); - for(u32bit j = 0; j != 16; ++j) + for(size_t j = 0; j != 16; ++j) { A0 ^= RC[j]; theta(A0, A1, A2, A3, &EK[0]); @@ -122,16 +122,16 @@ void Noekeon::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Noekeon Encryption */ -void Noekeon::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Noekeon::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A0 = load_be<u32bit>(in, 0); u32bit A1 = load_be<u32bit>(in, 1); u32bit A2 = load_be<u32bit>(in, 2); u32bit A3 = load_be<u32bit>(in, 3); - for(u32bit j = 16; j != 0; --j) + for(size_t j = 16; j != 0; --j) { theta(A0, A1, A2, A3, &DK[0]); A0 ^= RC[j]; @@ -167,7 +167,7 @@ void Noekeon::key_schedule(const byte key[], u32bit) u32bit A2 = load_be<u32bit>(key, 2); u32bit A3 = load_be<u32bit>(key, 3); - for(u32bit j = 0; j != 16; ++j) + for(size_t j = 0; j != 16; ++j) { A0 ^= RC[j]; theta(A0, A1, A2, A3); diff --git a/src/block/noekeon/noekeon.h b/src/block/noekeon/noekeon.h index ee3d32c80..65d3474c7 100644 --- a/src/block/noekeon/noekeon.h +++ b/src/block/noekeon/noekeon.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Noekeon : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const { return "Noekeon"; } diff --git a/src/block/noekeon_simd/noekeon_simd.cpp b/src/block/noekeon_simd/noekeon_simd.cpp index a7fb66f98..97158593a 100644 --- a/src/block/noekeon_simd/noekeon_simd.cpp +++ b/src/block/noekeon_simd/noekeon_simd.cpp @@ -53,7 +53,7 @@ namespace Botan { /* * Noekeon Encryption */ -void Noekeon_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Noekeon_SIMD::encrypt_n(const byte in[], byte out[], size_t blocks) const { const SecureVector<u32bit>& EK = this->get_EK(); @@ -71,7 +71,7 @@ void Noekeon_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const SIMD_32::transpose(A0, A1, A2, A3); - for(u32bit i = 0; i != 16; ++i) + for(size_t i = 0; i != 16; ++i) { A0 ^= SIMD_32(RC[i]); @@ -110,7 +110,7 @@ void Noekeon_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Noekeon Encryption */ -void Noekeon_SIMD::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Noekeon_SIMD::decrypt_n(const byte in[], byte out[], size_t blocks) const { const SecureVector<u32bit>& DK = this->get_DK(); @@ -128,7 +128,7 @@ void Noekeon_SIMD::decrypt_n(const byte in[], byte out[], u32bit blocks) const SIMD_32::transpose(A0, A1, A2, A3); - for(u32bit i = 0; i != 16; ++i) + for(size_t i = 0; i != 16; ++i) { NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3); diff --git a/src/block/noekeon_simd/noekeon_simd.h b/src/block/noekeon_simd/noekeon_simd.h index c583aa85b..5cc2d8b09 100644 --- a/src/block/noekeon_simd/noekeon_simd.h +++ b/src/block/noekeon_simd/noekeon_simd.h @@ -20,8 +20,8 @@ class BOTAN_DLL Noekeon_SIMD : public Noekeon public: size_t parallelism() const { return 4; } - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; BlockCipher* clone() const { return new Noekeon_SIMD; } }; diff --git a/src/block/rc2/rc2.cpp b/src/block/rc2/rc2.cpp index 8a939ecae..6cfe8c202 100644 --- a/src/block/rc2/rc2.cpp +++ b/src/block/rc2/rc2.cpp @@ -14,16 +14,16 @@ namespace Botan { /* * RC2 Encryption */ -void RC2::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void RC2::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit R0 = load_le<u16bit>(in, 0); u16bit R1 = load_le<u16bit>(in, 1); u16bit R2 = load_le<u16bit>(in, 2); u16bit R3 = load_le<u16bit>(in, 3); - for(u32bit j = 0; j != 16; ++j) + for(size_t j = 0; j != 16; ++j) { R0 += (R1 & ~R3) + (R2 & R3) + K[4*j]; R0 = rotate_left(R0, 1); @@ -56,16 +56,16 @@ void RC2::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * RC2 Decryption */ -void RC2::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void RC2::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit R0 = load_le<u16bit>(in, 0); u16bit R1 = load_le<u16bit>(in, 1); u16bit R2 = load_le<u16bit>(in, 2); u16bit R3 = load_le<u16bit>(in, 3); - for(u32bit j = 0; j != 16; ++j) + for(size_t j = 0; j != 16; ++j) { R3 = rotate_right(R3, 5); R3 -= (R0 & ~R2) + (R1 & R2) + K[63 - (4*j + 0)]; @@ -127,11 +127,13 @@ void RC2::key_schedule(const byte key[], u32bit length) SecureVector<byte> L(128); L.copy(key, length); - for(u32bit j = length; j != 128; ++j) - L[j] = TABLE[(L[j-1] + L[j-length]) % 256]; + for(size_t i = length; i != 128; ++i) + L[i] = TABLE[(L[i-1] + L[i-length]) % 256]; + L[128-length] = TABLE[L[128-length]]; - for(s32bit j = 127-length; j >= 0; --j) - L[j] = TABLE[L[j+1] ^ L[j+length]]; + + for(s32bit i = 127-length; i >= 0; --i) + L[i] = TABLE[L[i+1] ^ L[i+length]]; load_le<u16bit>(&K[0], &L[0], 64); } @@ -139,7 +141,7 @@ void RC2::key_schedule(const byte key[], u32bit length) /* * Return the code of the effective key bits */ -byte RC2::EKB_code(u32bit ekb) +byte RC2::EKB_code(size_t ekb) { const byte EKB[256] = { 0xBD, 0x56, 0xEA, 0xF2, 0xA2, 0xF1, 0xAC, 0x2A, 0xB0, 0x93, 0xD1, 0x9C, diff --git a/src/block/rc2/rc2.h b/src/block/rc2/rc2.h index 7e1953441..b8c1e069a 100644 --- a/src/block/rc2/rc2.h +++ b/src/block/rc2/rc2.h @@ -18,15 +18,15 @@ namespace Botan { class BOTAN_DLL RC2 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; /** * Return the code of the effective key bits * @param bits key length * @return EKB code */ - static byte EKB_code(u32bit bits); + static byte EKB_code(size_t bits); void clear() { zeroise(K); } std::string name() const { return "RC2"; } diff --git a/src/block/rc5/rc5.cpp b/src/block/rc5/rc5.cpp index ff0250d32..3b288d328 100644 --- a/src/block/rc5/rc5.cpp +++ b/src/block/rc5/rc5.cpp @@ -16,14 +16,15 @@ namespace Botan { /* * RC5 Encryption */ -void RC5::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void RC5::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit A = load_le<u32bit>(in, 0), B = load_le<u32bit>(in, 1); + u32bit A = load_le<u32bit>(in, 0); + u32bit B = load_le<u32bit>(in, 1); A += S[0]; B += S[1]; - for(u32bit j = 0; j != ROUNDS; j += 4) + for(size_t j = 0; j != ROUNDS; j += 4) { A = rotate_left(A ^ B, B % 32) + S[2*j+2]; B = rotate_left(B ^ A, A % 32) + S[2*j+3]; @@ -45,13 +46,14 @@ void RC5::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * RC5 Decryption */ -void RC5::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void RC5::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit A = load_le<u32bit>(in, 0), B = load_le<u32bit>(in, 1); + u32bit A = load_le<u32bit>(in, 0); + u32bit B = load_le<u32bit>(in, 1); - for(u32bit j = ROUNDS; j != 0; j -= 4) + for(size_t j = ROUNDS; j != 0; j -= 4) { B = rotate_right(B - S[2*j+1], A % 32) ^ A; A = rotate_right(A - S[2*j ], B % 32) ^ B; @@ -76,24 +78,26 @@ void RC5::decrypt_n(const byte in[], byte out[], u32bit blocks) const */ void RC5::key_schedule(const byte key[], u32bit length) { - const u32bit WORD_KEYLENGTH = (((length - 1) / 4) + 1), - MIX_ROUNDS = 3*std::max<u32bit>(WORD_KEYLENGTH, S.size()); + const size_t WORD_KEYLENGTH = (((length - 1) / 4) + 1); + const size_t MIX_ROUNDS = 3 * std::max(WORD_KEYLENGTH, S.size()); S[0] = 0xB7E15163; - for(u32bit j = 1; j != S.size(); ++j) - S[j] = S[j-1] + 0x9E3779B9; + for(size_t i = 1; i != S.size(); ++i) + S[i] = S[i-1] + 0x9E3779B9; SecureVector<u32bit> K(8); - for(s32bit j = length-1; j >= 0; --j) - K[j/4] = (K[j/4] << 8) + key[j]; + for(s32bit i = length-1; i >= 0; --i) + K[i/4] = (K[i/4] << 8) + key[i]; - for(u32bit j = 0, A = 0, B = 0; j != MIX_ROUNDS; ++j) + u32bit A = 0, B = 0; + + for(size_t i = 0; i != MIX_ROUNDS; ++i) { - A = rotate_left(S[j % S.size()] + A + B, 3); - B = rotate_left(K[j % WORD_KEYLENGTH] + A + B, (A + B) % 32); - S[j % S.size()] = A; - K[j % WORD_KEYLENGTH] = B; + A = rotate_left(S[i % S.size()] + A + B, 3); + B = rotate_left(K[i % WORD_KEYLENGTH] + A + B, (A + B) % 32); + S[i % S.size()] = A; + K[i % WORD_KEYLENGTH] = B; } } @@ -108,7 +112,7 @@ std::string RC5::name() const /* * RC5 Constructor */ -RC5::RC5(u32bit r) : BlockCipher(8, 1, 32), ROUNDS(r) +RC5::RC5(size_t r) : BlockCipher(8, 1, 32), ROUNDS(r) { if(ROUNDS < 8 || ROUNDS > 32 || (ROUNDS % 4 != 0)) throw Invalid_Argument(name() + ": Invalid number of rounds"); diff --git a/src/block/rc5/rc5.h b/src/block/rc5/rc5.h index 9a794d248..f15230a00 100644 --- a/src/block/rc5/rc5.h +++ b/src/block/rc5/rc5.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL RC5 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(S); } std::string name() const; @@ -29,11 +29,11 @@ class BOTAN_DLL RC5 : public BlockCipher * @param rounds the number of RC5 rounds to run. Must be between * 8 and 32 and a multiple of 4. */ - RC5(u32bit rounds); + RC5(size_t rounds); private: void key_schedule(const byte[], u32bit); SecureVector<u32bit> S; - const u32bit ROUNDS; + const size_t ROUNDS; }; } diff --git a/src/block/rc6/rc6.cpp b/src/block/rc6/rc6.cpp index 291d3b97e..f81f25efd 100644 --- a/src/block/rc6/rc6.cpp +++ b/src/block/rc6/rc6.cpp @@ -15,9 +15,9 @@ namespace Botan { /* * RC6 Encryption */ -void RC6::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void RC6::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_le<u32bit>(in, 0); u32bit B = load_le<u32bit>(in, 1); @@ -26,7 +26,7 @@ void RC6::encrypt_n(const byte in[], byte out[], u32bit blocks) const B += S[0]; D += S[1]; - for(u32bit j = 0; j != 20; j += 4) + for(size_t j = 0; j != 20; j += 4) { u32bit T1, T2; @@ -63,9 +63,9 @@ void RC6::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * RC6 Decryption */ -void RC6::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void RC6::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_le<u32bit>(in, 0); u32bit B = load_le<u32bit>(in, 1); @@ -74,7 +74,7 @@ void RC6::decrypt_n(const byte in[], byte out[], u32bit blocks) const C -= S[43]; A -= S[42]; - for(u32bit j = 0; j != 20; j += 4) + for(size_t j = 0; j != 20; j += 4) { u32bit T1, T2; @@ -113,10 +113,11 @@ void RC6::decrypt_n(const byte in[], byte out[], u32bit blocks) const */ void RC6::key_schedule(const byte key[], u32bit length) { - const u32bit WORD_KEYLENGTH = (((length - 1) / 4) + 1), - MIX_ROUNDS = 3*std::max<u32bit>(WORD_KEYLENGTH, S.size()); + const size_t WORD_KEYLENGTH = (((length - 1) / 4) + 1); + const size_t MIX_ROUNDS = 3 * std::max(WORD_KEYLENGTH, S.size()); + S[0] = 0xB7E15163; - for(u32bit j = 1; j != S.size(); ++j) + for(size_t j = 1; j != S.size(); ++j) S[j] = S[j-1] + 0x9E3779B9; SecureVector<u32bit> K(8); @@ -124,7 +125,8 @@ void RC6::key_schedule(const byte key[], u32bit length) for(s32bit j = length-1; j >= 0; --j) K[j/4] = (K[j/4] << 8) + key[j]; - for(u32bit j = 0, A = 0, B = 0; j != MIX_ROUNDS; ++j) + u32bit A = 0, B = 0; + for(u32bit j = 0; j != MIX_ROUNDS; ++j) { A = rotate_left(S[j % S.size()] + A + B, 3); B = rotate_left(K[j % WORD_KEYLENGTH] + A + B, (A + B) % 32); diff --git a/src/block/rc6/rc6.h b/src/block/rc6/rc6.h index 55a9d412e..ada7e9610 100644 --- a/src/block/rc6/rc6.h +++ b/src/block/rc6/rc6.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL RC6 : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(S); } std::string name() const { return "RC6"; } diff --git a/src/block/safer/safer_sk.cpp b/src/block/safer/safer_sk.cpp index aebb770d7..d64c37f00 100644 --- a/src/block/safer/safer_sk.cpp +++ b/src/block/safer/safer_sk.cpp @@ -15,14 +15,14 @@ namespace Botan { /* * SAFER-SK Encryption */ -void SAFER_SK::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void SAFER_SK::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { byte A = in[0], B = in[1], C = in[2], D = in[3], E = in[4], F = in[5], G = in[6], H = in[7], X, Y; - for(u32bit j = 0; j != 16*ROUNDS; j += 16) + for(size_t j = 0; j != 16*ROUNDS; j += 16) { A = EXP[A ^ EK[j ]]; B = LOG[B + EK[j+1]]; C = LOG[C + EK[j+2]]; D = EXP[D ^ EK[j+3]]; @@ -51,9 +51,9 @@ void SAFER_SK::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * SAFER-SK Decryption */ -void SAFER_SK::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void SAFER_SK::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { byte A = in[0], B = in[1], C = in[2], D = in[3], E = in[4], F = in[5], G = in[6], H = in[7]; @@ -93,17 +93,18 @@ void SAFER_SK::key_schedule(const byte key[], u32bit) { SecureVector<byte> KB(18); - for(u32bit j = 0; j != 8; ++j) + for(size_t i = 0; i != 8; ++i) { - KB[ 8] ^= KB[j] = rotate_left(key[j], 5); - KB[17] ^= KB[j+9] = EK[j] = key[j+8]; + KB[ 8] ^= KB[i] = rotate_left(key[i], 5); + KB[17] ^= KB[i+9] = EK[i] = key[i+8]; } - for(u32bit j = 0; j != ROUNDS; ++j) + + for(size_t i = 0; i != ROUNDS; ++i) { - for(u32bit k = 0; k != 18; ++k) - KB[k] = rotate_left(KB[k], 6); - for(u32bit k = 0; k != 16; ++k) - EK[16*j+k+8] = KB[KEY_INDEX[16*j+k]] + BIAS[16*j+k]; + for(size_t j = 0; j != 18; ++j) + KB[j] = rotate_left(KB[j], 6); + for(size_t j = 0; j != 16; ++j) + EK[16*i+j+8] = KB[KEY_INDEX[16*i+j]] + BIAS[16*i+j]; } } @@ -126,7 +127,7 @@ BlockCipher* SAFER_SK::clone() const /* * SAFER-SK Constructor */ -SAFER_SK::SAFER_SK(u32bit rounds) : BlockCipher(8, 16), +SAFER_SK::SAFER_SK(size_t rounds) : BlockCipher(8, 16), EK(16 * rounds + 8), ROUNDS(rounds) { if(ROUNDS > 13 || ROUNDS == 0) diff --git a/src/block/safer/safer_sk.h b/src/block/safer/safer_sk.h index 26875c97b..b68cb5363 100644 --- a/src/block/safer/safer_sk.h +++ b/src/block/safer/safer_sk.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL SAFER_SK : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); } std::string name() const; @@ -29,7 +29,7 @@ class BOTAN_DLL SAFER_SK : public BlockCipher * @param rounds the number of rounds to use - must be between 1 * and 13 */ - SAFER_SK(u32bit rounds); + SAFER_SK(size_t rounds); private: void key_schedule(const byte[], u32bit); @@ -39,7 +39,7 @@ class BOTAN_DLL SAFER_SK : public BlockCipher static const byte KEY_INDEX[208]; SecureVector<byte> EK; - const u32bit ROUNDS; + const size_t ROUNDS; }; } diff --git a/src/block/seed/seed.cpp b/src/block/seed/seed.cpp index ca09937e8..a253f27b8 100644 --- a/src/block/seed/seed.cpp +++ b/src/block/seed/seed.cpp @@ -22,9 +22,9 @@ u32bit SEED::G_FUNC::operator()(u32bit X) const /* * SEED Encryption */ -void SEED::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void SEED::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit B0 = load_be<u32bit>(in, 0); u32bit B1 = load_be<u32bit>(in, 1); @@ -33,7 +33,7 @@ void SEED::encrypt_n(const byte in[], byte out[], u32bit blocks) const G_FUNC G; - for(u32bit j = 0; j != 16; j += 2) + for(size_t j = 0; j != 16; j += 2) { u32bit T0, T1; @@ -62,9 +62,9 @@ void SEED::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * SEED Decryption */ -void SEED::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void SEED::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit B0 = load_be<u32bit>(in, 0); u32bit B1 = load_be<u32bit>(in, 1); @@ -73,7 +73,7 @@ void SEED::decrypt_n(const byte in[], byte out[], u32bit blocks) const G_FUNC G; - for(u32bit j = 0; j != 16; j += 2) + for(size_t j = 0; j != 16; j += 2) { u32bit T0, T1; @@ -113,22 +113,22 @@ void SEED::key_schedule(const byte key[], u32bit) SecureVector<u32bit> WK(4); - for(u32bit j = 0; j != 4; ++j) - WK[j] = load_be<u32bit>(key, j); + for(size_t i = 0; i != 4; ++i) + WK[i] = load_be<u32bit>(key, i); G_FUNC G; - for(u32bit j = 0; j != 16; j += 2) + for(size_t i = 0; i != 16; i += 2) { - K[2*j ] = G(WK[0] + WK[2] - RC[j]); - K[2*j+1] = G(WK[1] - WK[3] + RC[j]) ^ K[2*j]; + K[2*i ] = G(WK[0] + WK[2] - RC[i]); + K[2*i+1] = G(WK[1] - WK[3] + RC[i]) ^ K[2*i]; byte T = get_byte(3, WK[0]); WK[0] = (WK[0] >> 8) | (get_byte(3, WK[1]) << 24); WK[1] = (WK[1] >> 8) | (T << 24); - K[2*j+2] = G(WK[0] + WK[2] - RC[j+1]); - K[2*j+3] = G(WK[1] - WK[3] + RC[j+1]) ^ K[2*j+2]; + K[2*i+2] = G(WK[0] + WK[2] - RC[i+1]); + K[2*i+3] = G(WK[1] - WK[3] + RC[i+1]) ^ K[2*i+2]; T = get_byte(0, WK[3]); WK[3] = (WK[3] << 8) | get_byte(0, WK[2]); diff --git a/src/block/seed/seed.h b/src/block/seed/seed.h index 001743ada..e2b0862ae 100644 --- a/src/block/seed/seed.h +++ b/src/block/seed/seed.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL SEED : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(K); } std::string name() const { return "SEED"; } diff --git a/src/block/serpent/serpent.cpp b/src/block/serpent/serpent.cpp index 4133750ad..8ff35b900 100644 --- a/src/block/serpent/serpent.cpp +++ b/src/block/serpent/serpent.cpp @@ -243,9 +243,9 @@ inline void i_transform(u32bit& B0, u32bit& B1, u32bit& B2, u32bit& B3) /* * Serpent Encryption */ -void Serpent::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Serpent::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit B0 = load_le<u32bit>(in, 0); u32bit B1 = load_le<u32bit>(in, 1); @@ -295,9 +295,9 @@ void Serpent::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Serpent Decryption */ -void Serpent::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Serpent::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit B0 = load_le<u32bit>(in, 0); u32bit B1 = load_le<u32bit>(in, 1); @@ -356,12 +356,17 @@ void Serpent::key_schedule(const byte key[], u32bit length) const u32bit PHI = 0x9E3779B9; SecureVector<u32bit> W(140); - for(u32bit j = 0; j != length / 4; ++j) - W[j] = load_le<u32bit>(key, j); + for(size_t i = 0; i != length / 4; ++i) + W[i] = load_le<u32bit>(key, i); W[length / 4] |= u32bit(1) << ((length%4)*8); - for(u32bit j = 8; j != 140; ++j) - W[j] = rotate_left(W[j-8] ^ W[j-5] ^ W[j-3] ^ W[j-1] ^ PHI ^ (j-8), 11); + + for(size_t i = 8; i != 140; ++i) + { + u32bit wi = W[i-8] ^ W[i-5] ^ W[i-3] ^ W[i-1] ^ PHI ^ u32bit(i-8); + W[i] = rotate_left(wi, 11); + } + SBoxE4(W[ 8],W[ 9],W[ 10],W[ 11]); SBoxE3(W[ 12],W[ 13],W[ 14],W[ 15]); SBoxE2(W[ 16],W[ 17],W[ 18],W[ 19]); SBoxE1(W[ 20],W[ 21],W[ 22],W[ 23]); SBoxE8(W[ 24],W[ 25],W[ 26],W[ 27]); SBoxE7(W[ 28],W[ 29],W[ 30],W[ 31]); diff --git a/src/block/serpent/serpent.h b/src/block/serpent/serpent.h index f980c602e..a436c578a 100644 --- a/src/block/serpent/serpent.h +++ b/src/block/serpent/serpent.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Serpent : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(round_key); } std::string name() const { return "Serpent"; } diff --git a/src/block/serpent_simd/serp_simd.cpp b/src/block/serpent_simd/serp_simd.cpp index a4143804a..babe68d40 100644 --- a/src/block/serpent_simd/serp_simd.cpp +++ b/src/block/serpent_simd/serp_simd.cpp @@ -178,7 +178,7 @@ void serpent_decrypt_4(const byte in[64], /* * Serpent Encryption */ -void Serpent_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Serpent_SIMD::encrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* KS = &(this->get_round_keys()[0]); @@ -197,7 +197,7 @@ void Serpent_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Serpent Decryption */ -void Serpent_SIMD::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Serpent_SIMD::decrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* KS = &(this->get_round_keys()[0]); diff --git a/src/block/serpent_simd/serp_simd.h b/src/block/serpent_simd/serp_simd.h index 75a8434d1..b3c0b06c8 100644 --- a/src/block/serpent_simd/serp_simd.h +++ b/src/block/serpent_simd/serp_simd.h @@ -20,8 +20,8 @@ class BOTAN_DLL Serpent_SIMD : public Serpent public: size_t parallelism() const { return 4; } - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; BlockCipher* clone() const { return new Serpent_SIMD; } }; diff --git a/src/block/skipjack/skipjack.cpp b/src/block/skipjack/skipjack.cpp index 2a1901230..e3c8598ff 100644 --- a/src/block/skipjack/skipjack.cpp +++ b/src/block/skipjack/skipjack.cpp @@ -15,7 +15,7 @@ namespace { /* * Skipjack Stepping Rule 'A' */ -void step_A(u16bit& W1, u16bit& W4, u32bit round, const byte FTAB[]) +void step_A(u16bit& W1, u16bit& W4, size_t round, const byte FTAB[]) { byte G1 = get_byte(0, W1), G2 = get_byte(1, W1), G3; @@ -31,7 +31,7 @@ void step_A(u16bit& W1, u16bit& W4, u32bit round, const byte FTAB[]) /* * Skipjack Stepping Rule 'B' */ -void step_B(u16bit& W1, u16bit& W2, u32bit round, const byte FTAB[]) +void step_B(u16bit& W1, u16bit& W2, size_t round, const byte FTAB[]) { W2 ^= W1 ^ round; byte G1 = get_byte(0, W1), G2 = get_byte(1, W1), G3; @@ -45,7 +45,7 @@ void step_B(u16bit& W1, u16bit& W2, u32bit round, const byte FTAB[]) /* * Skipjack Invserse Stepping Rule 'A' */ -void step_Ai(u16bit& W1, u16bit& W2, u32bit round, const byte FTAB[]) +void step_Ai(u16bit& W1, u16bit& W2, size_t round, const byte FTAB[]) { W1 ^= W2 ^ round; byte G1 = get_byte(1, W2), G2 = get_byte(0, W2), G3; @@ -59,7 +59,7 @@ void step_Ai(u16bit& W1, u16bit& W2, u32bit round, const byte FTAB[]) /* * Skipjack Invserse Stepping Rule 'B' */ -void step_Bi(u16bit& W2, u16bit& W3, u32bit round, const byte FTAB[]) +void step_Bi(u16bit& W2, u16bit& W3, size_t round, const byte FTAB[]) { byte G1 = get_byte(1, W2), G2 = get_byte(0, W2), G3; G3 = FTAB[((4 * round - 1) % 10)*256 + G2] ^ G1; @@ -75,11 +75,11 @@ void step_Bi(u16bit& W2, u16bit& W3, u32bit round, const byte FTAB[]) /* * Skipjack Encryption */ -void Skipjack::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Skipjack::encrypt_n(const byte in[], byte out[], size_t blocks) const { const byte* ftab = &FTAB[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit W1 = load_le<u16bit>(in, 3); u16bit W2 = load_le<u16bit>(in, 2); @@ -116,11 +116,11 @@ void Skipjack::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Skipjack Decryption */ -void Skipjack::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Skipjack::decrypt_n(const byte in[], byte out[], size_t blocks) const { const byte* ftab = &FTAB[0]; - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u16bit W1 = load_le<u16bit>(in, 3); u16bit W2 = load_le<u16bit>(in, 2); @@ -183,8 +183,8 @@ void Skipjack::key_schedule(const byte key[], u32bit) 0x5E, 0x6C, 0xA9, 0x13, 0x57, 0x25, 0xB5, 0xE3, 0xBD, 0xA8, 0x3A, 0x01, 0x05, 0x59, 0x2A, 0x46 }; - for(u32bit i = 0; i != 10; ++i) - for(u32bit j = 0; j != 256; ++j) + for(size_t i = 0; i != 10; ++i) + for(size_t j = 0; j != 256; ++j) FTAB[256*i+j] = F[j ^ key[9-i]]; } diff --git a/src/block/skipjack/skipjack.h b/src/block/skipjack/skipjack.h index 123ab85ae..98cea7650 100644 --- a/src/block/skipjack/skipjack.h +++ b/src/block/skipjack/skipjack.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Skipjack : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const { return "Skipjack"; } diff --git a/src/block/square/square.cpp b/src/block/square/square.cpp index 4b6709d50..601d66c15 100644 --- a/src/block/square/square.cpp +++ b/src/block/square/square.cpp @@ -14,9 +14,9 @@ namespace Botan { /* * Square Encryption */ -void Square::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Square::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit B0, B1, B2, B3; @@ -29,7 +29,7 @@ void Square::encrypt_n(const byte in[], byte out[], u32bit blocks) const B3 = TE0[in[ 3] ^ ME[ 3]] ^ TE1[in[ 7] ^ ME[ 7]] ^ TE2[in[11] ^ ME[11]] ^ TE3[in[15] ^ ME[15]] ^ EK[3]; - for(u32bit j = 1; j != 7; j += 2) + for(size_t j = 1; j != 7; j += 2) { u32bit T0, T1, T2, T3; T0 = TE0[get_byte(0, B0)] ^ TE1[get_byte(0, B1)] ^ @@ -76,9 +76,9 @@ void Square::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Square Decryption */ -void Square::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Square::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit B0, B1, B2, B3; @@ -91,7 +91,7 @@ void Square::decrypt_n(const byte in[], byte out[], u32bit blocks) const B3 = TD0[in[ 3] ^ MD[ 3]] ^ TD1[in[ 7] ^ MD[ 7]] ^ TD2[in[11] ^ MD[11]] ^ TD3[in[15] ^ MD[15]] ^ DK[3]; - for(u32bit j = 1; j != 7; j += 2) + for(size_t j = 1; j != 7; j += 2) { u32bit T0, T1, T2, T3; T0 = TD0[get_byte(0, B0)] ^ TD1[get_byte(0, B1)] ^ @@ -142,24 +142,24 @@ void Square::key_schedule(const byte key[], u32bit) { SecureVector<u32bit> XEK(36), XDK(36); - for(u32bit i = 0; i != 4; ++i) + for(size_t i = 0; i != 4; ++i) XEK[i] = load_be<u32bit>(key, i); - for(u32bit i = 0; i != 8; ++i) + for(size_t i = 0; i != 8; ++i) { XEK[4*i+4] = XEK[4*i ] ^ rotate_left(XEK[4*i+3], 8) ^ (0x01000000 << i); XEK[4*i+5] = XEK[4*i+1] ^ XEK[4*i+4]; XEK[4*i+6] = XEK[4*i+2] ^ XEK[4*i+5]; XEK[4*i+7] = XEK[4*i+3] ^ XEK[4*i+6]; - for(u32bit j = 0; j != 4; ++j) + for(size_t j = 0; j != 4; ++j) XDK[28 - 4*i + j] = XEK[4*(i+1)+j]; transform(&XEK[4*i]); } - for(u32bit i = 0; i != 4; ++i) - for(u32bit j = 0; j != 4; ++j) + for(size_t i = 0; i != 4; ++i) + for(size_t j = 0; j != 4; ++j) { ME[4*i+j ] = get_byte(j, XEK[i ]); ME[4*i+j+16] = get_byte(j, XEK[i+32]); @@ -182,14 +182,14 @@ void Square::transform(u32bit round_key[4]) { 1, 3, 2, 1 }, { 1, 1, 3, 2 } }; - for(u32bit i = 0; i != 4; ++i) + for(size_t i = 0; i != 4; ++i) { byte A[4] = { 0 }, B[4] = { 0 }; store_be(round_key[i], A); - for(u32bit j = 0; j != 4; ++j) - for(u32bit k = 0; k != 4; ++k) + for(size_t j = 0; j != 4; ++j) + for(size_t k = 0; k != 4; ++k) { const byte a = A[k]; const byte b = G[k][j]; diff --git a/src/block/square/square.h b/src/block/square/square.h index 0c0cc871d..e3b07f24d 100644 --- a/src/block/square/square.h +++ b/src/block/square/square.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Square : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const { return "Square"; } diff --git a/src/block/tea/tea.cpp b/src/block/tea/tea.cpp index de30858da..434c74ba6 100644 --- a/src/block/tea/tea.cpp +++ b/src/block/tea/tea.cpp @@ -13,14 +13,15 @@ namespace Botan { /* * TEA Encryption */ -void TEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void TEA::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit L = load_be<u32bit>(in, 0), R = load_be<u32bit>(in, 1); + u32bit L = load_be<u32bit>(in, 0); + u32bit R = load_be<u32bit>(in, 1); u32bit S = 0; - for(u32bit j = 0; j != 32; ++j) + for(size_t j = 0; j != 32; ++j) { S += 0x9E3779B9; L += ((R << 4) + K[0]) ^ (R + S) ^ ((R >> 5) + K[1]); @@ -37,14 +38,15 @@ void TEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * TEA Decryption */ -void TEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void TEA::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit L = load_be<u32bit>(in, 0), R = load_be<u32bit>(in, 1); + u32bit L = load_be<u32bit>(in, 0); + u32bit R = load_be<u32bit>(in, 1); u32bit S = 0xC6EF3720; - for(u32bit j = 0; j != 32; ++j) + for(size_t j = 0; j != 32; ++j) { R -= ((L << 4) + K[2]) ^ (L + S) ^ ((L >> 5) + K[3]); L -= ((R << 4) + K[0]) ^ (R + S) ^ ((R >> 5) + K[1]); @@ -63,8 +65,8 @@ void TEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const */ void TEA::key_schedule(const byte key[], u32bit) { - for(u32bit j = 0; j != 4; ++j) - K[j] = load_be<u32bit>(key, j); + for(size_t i = 0; i != 4; ++i) + K[i] = load_be<u32bit>(key, i); } } diff --git a/src/block/tea/tea.h b/src/block/tea/tea.h index dd03ec3c6..7cb18a4f8 100644 --- a/src/block/tea/tea.h +++ b/src/block/tea/tea.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL TEA : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(K); } std::string name() const { return "TEA"; } diff --git a/src/block/twofish/twofish.cpp b/src/block/twofish/twofish.cpp index b760de382..9c3d57500 100644 --- a/src/block/twofish/twofish.cpp +++ b/src/block/twofish/twofish.cpp @@ -14,16 +14,16 @@ namespace Botan { /* * Twofish Encryption */ -void Twofish::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void Twofish::encrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_le<u32bit>(in, 0) ^ RK[0]; u32bit B = load_le<u32bit>(in, 1) ^ RK[1]; u32bit C = load_le<u32bit>(in, 2) ^ RK[2]; u32bit D = load_le<u32bit>(in, 3) ^ RK[3]; - for(u32bit j = 0; j != 16; j += 2) + for(size_t j = 0; j != 16; j += 2) { u32bit X, Y; @@ -65,16 +65,16 @@ void Twofish::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * Twofish Decryption */ -void Twofish::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void Twofish::decrypt_n(const byte in[], byte out[], size_t blocks) const { - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { u32bit A = load_le<u32bit>(in, 0) ^ RK[4]; u32bit B = load_le<u32bit>(in, 1) ^ RK[5]; u32bit C = load_le<u32bit>(in, 2) ^ RK[6]; u32bit D = load_le<u32bit>(in, 3) ^ RK[7]; - for(u32bit j = 0; j != 16; j += 2) + for(size_t j = 0; j != 16; j += 2) { u32bit X, Y; @@ -120,12 +120,12 @@ void Twofish::key_schedule(const byte key[], u32bit length) { SecureVector<byte> S(16); - for(u32bit i = 0; i != length; ++i) + for(size_t i = 0; i != length; ++i) rs_mul(&S[4*(i/8)], key[i], i); if(length == 16) { - for(u32bit i = 0; i != 256; ++i) + for(size_t i = 0; i != 256; ++i) { SB[ i] = MDS0[Q0[Q0[i]^S[ 0]]^S[ 4]]; SB[256+i] = MDS1[Q0[Q1[i]^S[ 1]]^S[ 5]]; @@ -133,7 +133,7 @@ void Twofish::key_schedule(const byte key[], u32bit length) SB[768+i] = MDS3[Q1[Q1[i]^S[ 3]]^S[ 7]]; } - for(u32bit i = 0; i != 40; i += 2) + for(size_t i = 0; i != 40; i += 2) { u32bit X = MDS0[Q0[Q0[i ]^key[ 8]]^key[ 0]] ^ MDS1[Q0[Q1[i ]^key[ 9]]^key[ 1]] ^ @@ -152,7 +152,7 @@ void Twofish::key_schedule(const byte key[], u32bit length) } else if(length == 24) { - for(u32bit i = 0; i != 256; ++i) + for(size_t i = 0; i != 256; ++i) { SB[ i] = MDS0[Q0[Q0[Q1[i]^S[ 0]]^S[ 4]]^S[ 8]]; SB[256+i] = MDS1[Q0[Q1[Q1[i]^S[ 1]]^S[ 5]]^S[ 9]]; @@ -160,7 +160,7 @@ void Twofish::key_schedule(const byte key[], u32bit length) SB[768+i] = MDS3[Q1[Q1[Q0[i]^S[ 3]]^S[ 7]]^S[11]]; } - for(u32bit i = 0; i != 40; i += 2) + for(size_t i = 0; i != 40; i += 2) { u32bit X = MDS0[Q0[Q0[Q1[i ]^key[16]]^key[ 8]]^key[ 0]] ^ MDS1[Q0[Q1[Q1[i ]^key[17]]^key[ 9]]^key[ 1]] ^ @@ -179,7 +179,7 @@ void Twofish::key_schedule(const byte key[], u32bit length) } else if(length == 32) { - for(u32bit i = 0; i != 256; ++i) + for(size_t i = 0; i != 256; ++i) { SB[ i] = MDS0[Q0[Q0[Q1[Q1[i]^S[ 0]]^S[ 4]]^S[ 8]]^S[12]]; SB[256+i] = MDS1[Q0[Q1[Q1[Q0[i]^S[ 1]]^S[ 5]]^S[ 9]]^S[13]]; @@ -187,7 +187,7 @@ void Twofish::key_schedule(const byte key[], u32bit length) SB[768+i] = MDS3[Q1[Q1[Q0[Q1[i]^S[ 3]]^S[ 7]]^S[11]]^S[15]]; } - for(u32bit i = 0; i != 40; i += 2) + for(size_t i = 0; i != 40; i += 2) { u32bit X = MDS0[Q0[Q0[Q1[Q1[i ]^key[24]]^key[16]]^key[ 8]]^key[ 0]] ^ MDS1[Q0[Q1[Q1[Q0[i ]^key[25]]^key[17]]^key[ 9]]^key[ 1]] ^ @@ -209,7 +209,7 @@ void Twofish::key_schedule(const byte key[], u32bit length) /* * Do one column of the RS matrix multiplcation */ -void Twofish::rs_mul(byte S[4], byte key, u32bit offset) +void Twofish::rs_mul(byte S[4], byte key, size_t offset) { if(key) { diff --git a/src/block/twofish/twofish.h b/src/block/twofish/twofish.h index eb4900ffa..b94c3adc3 100644 --- a/src/block/twofish/twofish.h +++ b/src/block/twofish/twofish.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL Twofish : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear(); std::string name() const { return "Twofish"; } @@ -29,7 +29,7 @@ class BOTAN_DLL Twofish : public BlockCipher private: void key_schedule(const byte[], u32bit); - static void rs_mul(byte[4], byte, u32bit); + static void rs_mul(byte[4], byte, size_t); static const u32bit MDS0[256]; static const u32bit MDS1[256]; diff --git a/src/block/xtea/xtea.cpp b/src/block/xtea/xtea.cpp index 9e47e5328..7acad2b6b 100644 --- a/src/block/xtea/xtea.cpp +++ b/src/block/xtea/xtea.cpp @@ -17,7 +17,7 @@ void xtea_encrypt_4(const byte in[32], byte out[32], const u32bit EK[64]) u32bit L0, R0, L1, R1, L2, R2, L3, R3; load_be(in, L0, R0, L1, R1, L2, R2, L3, R3); - for(u32bit i = 0; i != 32; ++i) + for(size_t i = 0; i != 32; ++i) { L0 += (((R0 << 4) ^ (R0 >> 5)) + R0) ^ EK[2*i]; L1 += (((R1 << 4) ^ (R1 >> 5)) + R1) ^ EK[2*i]; @@ -38,7 +38,7 @@ void xtea_decrypt_4(const byte in[32], byte out[32], const u32bit EK[64]) u32bit L0, R0, L1, R1, L2, R2, L3, R3; load_be(in, L0, R0, L1, R1, L2, R2, L3, R3); - for(u32bit i = 0; i != 32; ++i) + for(size_t i = 0; i != 32; ++i) { R0 -= (((L0 << 4) ^ (L0 >> 5)) + L0) ^ EK[63 - 2*i]; R1 -= (((L1 << 4) ^ (L1 >> 5)) + L1) ^ EK[63 - 2*i]; @@ -59,7 +59,7 @@ void xtea_decrypt_4(const byte in[32], byte out[32], const u32bit EK[64]) /* * XTEA Encryption */ -void XTEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void XTEA::encrypt_n(const byte in[], byte out[], size_t blocks) const { while(blocks >= 4) { @@ -69,11 +69,12 @@ void XTEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const blocks -= 4; } - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit L = load_be<u32bit>(in, 0), R = load_be<u32bit>(in, 1); + u32bit L = load_be<u32bit>(in, 0); + u32bit R = load_be<u32bit>(in, 1); - for(u32bit j = 0; j != 32; ++j) + for(size_t j = 0; j != 32; ++j) { L += (((R << 4) ^ (R >> 5)) + R) ^ EK[2*j]; R += (((L << 4) ^ (L >> 5)) + L) ^ EK[2*j+1]; @@ -89,7 +90,7 @@ void XTEA::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * XTEA Decryption */ -void XTEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void XTEA::decrypt_n(const byte in[], byte out[], size_t blocks) const { while(blocks >= 4) { @@ -99,11 +100,12 @@ void XTEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const blocks -= 4; } - for(u32bit i = 0; i != blocks; ++i) + for(size_t i = 0; i != blocks; ++i) { - u32bit L = load_be<u32bit>(in, 0), R = load_be<u32bit>(in, 1); + u32bit L = load_be<u32bit>(in, 0); + u32bit R = load_be<u32bit>(in, 1); - for(u32bit j = 0; j != 32; ++j) + for(size_t j = 0; j != 32; ++j) { R -= (((L << 4) ^ (L >> 5)) + L) ^ EK[63 - 2*j]; L -= (((R << 4) ^ (R >> 5)) + R) ^ EK[62 - 2*j]; @@ -122,11 +124,11 @@ void XTEA::decrypt_n(const byte in[], byte out[], u32bit blocks) const void XTEA::key_schedule(const byte key[], u32bit) { SecureVector<u32bit> UK(4); - for(u32bit i = 0; i != 4; ++i) + for(size_t i = 0; i != 4; ++i) UK[i] = load_be<u32bit>(key, i); u32bit D = 0; - for(u32bit i = 0; i != 64; i += 2) + for(size_t i = 0; i != 64; i += 2) { EK[i ] = D + UK[D % 4]; D += 0x9E3779B9; diff --git a/src/block/xtea/xtea.h b/src/block/xtea/xtea.h index 54c925df2..6a843e21f 100644 --- a/src/block/xtea/xtea.h +++ b/src/block/xtea/xtea.h @@ -18,8 +18,8 @@ namespace Botan { class BOTAN_DLL XTEA : public BlockCipher { public: - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; void clear() { zeroise(EK); } std::string name() const { return "XTEA"; } diff --git a/src/block/xtea_simd/xtea_simd.cpp b/src/block/xtea_simd/xtea_simd.cpp index b1c19aca3..831cc0359 100644 --- a/src/block/xtea_simd/xtea_simd.cpp +++ b/src/block/xtea_simd/xtea_simd.cpp @@ -92,7 +92,7 @@ void xtea_decrypt_8(const byte in[64], byte out[64], const u32bit EK[64]) /* * XTEA Encryption */ -void XTEA_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const +void XTEA_SIMD::encrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* KS = &(this->get_EK()[0]); @@ -111,7 +111,7 @@ void XTEA_SIMD::encrypt_n(const byte in[], byte out[], u32bit blocks) const /* * XTEA Decryption */ -void XTEA_SIMD::decrypt_n(const byte in[], byte out[], u32bit blocks) const +void XTEA_SIMD::decrypt_n(const byte in[], byte out[], size_t blocks) const { const u32bit* KS = &(this->get_EK()[0]); diff --git a/src/block/xtea_simd/xtea_simd.h b/src/block/xtea_simd/xtea_simd.h index e68282539..ecfdf90a5 100644 --- a/src/block/xtea_simd/xtea_simd.h +++ b/src/block/xtea_simd/xtea_simd.h @@ -20,8 +20,8 @@ class BOTAN_DLL XTEA_SIMD : public XTEA public: size_t parallelism() const { return 8; } - void encrypt_n(const byte in[], byte out[], u32bit blocks) const; - void decrypt_n(const byte in[], byte out[], u32bit blocks) const; + void encrypt_n(const byte in[], byte out[], size_t blocks) const; + void decrypt_n(const byte in[], byte out[], size_t blocks) const; BlockCipher* clone() const { return new XTEA_SIMD; } }; |