aboutsummaryrefslogtreecommitdiffstats
path: root/src/block/des/desx.cpp
diff options
context:
space:
mode:
authorlloyd <[email protected]>2008-11-08 19:46:52 +0000
committerlloyd <[email protected]>2008-11-08 19:46:52 +0000
commitf1c459725da56fd8ed5766e7779300182fa26bcf (patch)
tree32295cec92df1155563ae8a535dc695d6800d7f6 /src/block/des/desx.cpp
parent8dba7b5264403e781bbb86ff61850e4377dca7b9 (diff)
Split ciphers into block and stream ciphers. Move base class headers
Diffstat (limited to 'src/block/des/desx.cpp')
-rw-r--r--src/block/des/desx.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/block/des/desx.cpp b/src/block/des/desx.cpp
new file mode 100644
index 000000000..fb76ec731
--- /dev/null
+++ b/src/block/des/desx.cpp
@@ -0,0 +1,41 @@
+/*************************************************
+* DES Source File *
+* (C) 1999-2007 Jack Lloyd *
+*************************************************/
+
+#include <botan/desx.h>
+#include <botan/xor_buf.h>
+
+namespace Botan {
+
+/*************************************************
+* DESX Encryption *
+*************************************************/
+void DESX::enc(const byte in[], byte out[]) const
+ {
+ xor_buf(out, in, K1.begin(), BLOCK_SIZE);
+ des.encrypt(out);
+ xor_buf(out, K2.begin(), BLOCK_SIZE);
+ }
+
+/*************************************************
+* DESX Decryption *
+*************************************************/
+void DESX::dec(const byte in[], byte out[]) const
+ {
+ xor_buf(out, in, K2.begin(), BLOCK_SIZE);
+ des.decrypt(out);
+ xor_buf(out, K1.begin(), BLOCK_SIZE);
+ }
+
+/*************************************************
+* DESX Key Schedule *
+*************************************************/
+void DESX::key(const byte key[], u32bit)
+ {
+ K1.copy(key, 8);
+ des.set_key(key + 8, 8);
+ K2.copy(key + 16, 8);
+ }
+
+}