aboutsummaryrefslogtreecommitdiffstats
path: root/src/bit_ops.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bit_ops.cpp')
-rw-r--r--src/bit_ops.cpp30
1 files changed, 30 insertions, 0 deletions
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)