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

Dependents:   AES_example shaun_larada Smartage

Fork of Crypto by Francois Berder

Committer:
feb11
Date:
Sat Sep 14 18:21:32 2013 +0000
Revision:
7:2dbbdfb08123
Parent:
AES.h@0:7a1237bd2d13
Child:
8:a090264e9b2d
added DES (not tested yet)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feb11 0:7a1237bd2d13 1 #ifndef AES_H
feb11 0:7a1237bd2d13 2 #define AES_H
feb11 0:7a1237bd2d13 3
feb11 0:7a1237bd2d13 4 #include "Cipher.h"
feb11 0:7a1237bd2d13 5
feb11 0:7a1237bd2d13 6 enum AES_TYPE
feb11 0:7a1237bd2d13 7 {
feb11 0:7a1237bd2d13 8 AES_128 = 4,
feb11 0:7a1237bd2d13 9 AES_192 = 6,
feb11 0:7a1237bd2d13 10 AES_256 = 8
feb11 0:7a1237bd2d13 11 };
feb11 0:7a1237bd2d13 12
feb11 0:7a1237bd2d13 13 class AES : public Cipher
feb11 0:7a1237bd2d13 14 {
feb11 0:7a1237bd2d13 15 public :
feb11 0:7a1237bd2d13 16
feb11 0:7a1237bd2d13 17 AES(const AES_TYPE type, uint8_t *key);
feb11 0:7a1237bd2d13 18
feb11 0:7a1237bd2d13 19 virtual void encrypt(uint8_t *out, uint8_t *in, uint32_t length);
feb11 0:7a1237bd2d13 20 virtual void decrypt(uint8_t *out, uint8_t *in, uint32_t length);
feb11 0:7a1237bd2d13 21 virtual uint32_t getBlockSize() const;
feb11 0:7a1237bd2d13 22
feb11 0:7a1237bd2d13 23 private :
feb11 0:7a1237bd2d13 24
feb11 0:7a1237bd2d13 25 void encryptBlock(uint8_t *out, uint8_t *in);
feb11 0:7a1237bd2d13 26 void decryptBlock(uint8_t *out, uint8_t *in);
feb11 0:7a1237bd2d13 27
feb11 0:7a1237bd2d13 28 void keyExpansion(uint8_t *key);
feb11 0:7a1237bd2d13 29 uint32_t rotWord(uint32_t w);
feb11 0:7a1237bd2d13 30 uint32_t invRotWord(uint32_t w);
feb11 0:7a1237bd2d13 31 uint32_t subWord(uint32_t w);
feb11 0:7a1237bd2d13 32 void subBytes();
feb11 0:7a1237bd2d13 33 void invSubBytes();
feb11 0:7a1237bd2d13 34 void shiftRows();
feb11 0:7a1237bd2d13 35 void invShiftRows();
feb11 0:7a1237bd2d13 36 void mul(uint8_t *r);
feb11 0:7a1237bd2d13 37 void invMul(uint8_t *r);
feb11 0:7a1237bd2d13 38 void mixColumns();
feb11 0:7a1237bd2d13 39 void invMixColumns();
feb11 0:7a1237bd2d13 40 void addRoundKey(int round);
feb11 0:7a1237bd2d13 41
feb11 0:7a1237bd2d13 42 uint8_t state[16];
feb11 0:7a1237bd2d13 43 uint32_t w[60];
feb11 0:7a1237bd2d13 44 uint8_t nr,nk;
feb11 0:7a1237bd2d13 45 };
feb11 0:7a1237bd2d13 46
feb11 0:7a1237bd2d13 47 #endif