Fork of François Berder Crypto, fixed AES CBC and small rework

Dependents:   AES_example shaun_larada Smartage

Fork of Crypto by Francois Berder

Revision:
8:a090264e9b2d
Child:
14:f04410cef037
diff -r 2dbbdfb08123 -r a090264e9b2d cipher/BlockCipher.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cipher/BlockCipher.cpp	Sat Sep 14 20:54:59 2013 +0000
@@ -0,0 +1,50 @@
+#include "BlockCipher.h"
+#include <string.h>
+
+BlockCipher::BlockCipher(uint32_t bs, BLOCK_CIPHER_MODE m, uint8_t *iv):
+Cipher(),
+blockSize(bs),
+mode(m),
+IV(0)
+{
+    if(mode == CBC_MODE)
+    {
+        IV = new uint8_t[blockSize];
+        memcpy(IV, iv, blockSize); 
+    }
+}
+
+BlockCipher::~BlockCipher()
+{
+    if(IV != 0)
+        delete[] IV;
+}
+
+CIPHER_TYPE BlockCipher::getType() const
+{
+    return BLOCK_CIPHER;
+}
+
+uint32_t BlockCipher::getBlockSize() const
+{
+    return blockSize;
+}
+
+void BlockCipher::encrypt(uint8_t *out, uint8_t *in, uint32_t length)
+{
+    for(uint32_t i = 0; i < length; i += getBlockSize())
+    {
+        encryptBlock(&out[i], &in[i]);
+        
+    }
+}
+
+void BlockCipher::decrypt(uint8_t *out, uint8_t *in, uint32_t length)
+{
+    for(uint32_t i = 0; i < length; i += getBlockSize())
+    {
+        decryptBlock(&out[i], &in[i]);
+        
+    }
+}
+