diff options
-rw-r--r-- | include/bit_ops.h | 22 | ||||
-rw-r--r-- | src/bit_ops.cpp | 30 |
2 files changed, 33 insertions, 19 deletions
diff --git a/include/bit_ops.h b/include/bit_ops.h index c160d48e3..9949a1dbb 100644 --- a/include/bit_ops.h +++ b/include/bit_ops.h @@ -26,25 +26,9 @@ template<typename T> inline T rotate_right(T input, u32bit rot) /************************************************* * Byteswap * *************************************************/ -inline u16bit reverse_bytes(u16bit input) - { - return rotate_left(input, 8); - } - -inline u32bit reverse_bytes(u32bit input) - { - input = ((input & 0xFF00FF00) >> 8) | ((input & 0x00FF00FF) << 8); - return rotate_left(input, 16); - } - -inline u64bit reverse_bytes(u64bit input) - { - input = ((input & 0xFF00FF00FF00FF00) >> 8) | - ((input & 0x00FF00FF00FF00FF) << 8); - input = ((input & 0xFFFF0000FFFF0000) >> 16) | - ((input & 0x0000FFFF0000FFFF) << 16); - return rotate_left(input, 32); - } +u16bit reverse_bytes(u16bit); +u32bit reverse_bytes(u32bit); +u64bit reverse_bytes(u64bit); /************************************************* * Array XOR * diff --git a/src/bit_ops.cpp b/src/bit_ops.cpp index 22a01c037..fa08c5a9f 100644 --- a/src/bit_ops.cpp +++ b/src/bit_ops.cpp @@ -3,6 +3,7 @@ * (C) 1999-2007 The Botan Project * *************************************************/ +#include <botan/bit_ops.h> #include <botan/loadstor.h> namespace Botan { @@ -42,6 +43,35 @@ void xor_buf(byte out[], const byte in[], const byte mask[], u32bit length) } /************************************************* +* Reverse bytes * +*************************************************/ +u16bit reverse_bytes(u16bit input) + { + return rotate_left(input, 8); + } + +/************************************************* +* Reverse bytes * +*************************************************/ +u32bit reverse_bytes(u32bit input) + { + input = ((input & 0xFF00FF00) >> 8) | ((input & 0x00FF00FF) << 8); + return rotate_left(input, 16); + } + +/************************************************* +* Reverse bytes * +*************************************************/ +u64bit reverse_bytes(u64bit input) + { + input = ((input & 0xFF00FF00FF00FF00) >> 8) | + ((input & 0x00FF00FF00FF00FF) << 8); + input = ((input & 0xFFFF0000FFFF0000) >> 16) | + ((input & 0x0000FFFF0000FFFF) << 16); + return rotate_left(input, 32); + } + +/************************************************* * Return true iff arg is 2**n for some n > 0 * *************************************************/ bool power_of_2(u64bit arg) |