A simple serial test program for the AES library.

Dependencies:   AES mbed

Committer:
neilt6
Date:
Thu Sep 15 15:36:13 2016 +0000
Revision:
1:efd619e002fd
Parent:
0:6cfe831d7c16
Updated AES and mbed libraries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
neilt6 0:6cfe831d7c16 1 #include "mbed.h"
neilt6 0:6cfe831d7c16 2 #include "AES.h"
neilt6 0:6cfe831d7c16 3
neilt6 0:6cfe831d7c16 4 char message[] = {
neilt6 0:6cfe831d7c16 5 "Hello World!"
neilt6 0:6cfe831d7c16 6 };
neilt6 0:6cfe831d7c16 7
neilt6 0:6cfe831d7c16 8 const char key[32] = {
neilt6 0:6cfe831d7c16 9 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE,
neilt6 0:6cfe831d7c16 10 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81,
neilt6 0:6cfe831d7c16 11 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7,
neilt6 0:6cfe831d7c16 12 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4
neilt6 0:6cfe831d7c16 13 };
neilt6 0:6cfe831d7c16 14
neilt6 0:6cfe831d7c16 15 const char iv[16] = {
neilt6 0:6cfe831d7c16 16 0x74, 0x11, 0xF0, 0x45, 0xD6, 0xA4, 0x3F, 0x69,
neilt6 0:6cfe831d7c16 17 0x18, 0xC6, 0x75, 0x42, 0xDF, 0x4C, 0xA7, 0x84
neilt6 0:6cfe831d7c16 18 };
neilt6 0:6cfe831d7c16 19
neilt6 0:6cfe831d7c16 20 void printData(const void* data, size_t length)
neilt6 0:6cfe831d7c16 21 {
neilt6 0:6cfe831d7c16 22 const char* dataBytes = (const char*)data;
neilt6 0:6cfe831d7c16 23 for (size_t i = 0; i < length; i++) {
neilt6 0:6cfe831d7c16 24 if ((i % 8) == 0)
neilt6 0:6cfe831d7c16 25 printf("\n\t");
neilt6 0:6cfe831d7c16 26 printf("0x%02X, ", dataBytes[i]);
neilt6 0:6cfe831d7c16 27 }
neilt6 0:6cfe831d7c16 28 printf("\n");
neilt6 0:6cfe831d7c16 29 }
neilt6 0:6cfe831d7c16 30
neilt6 0:6cfe831d7c16 31 int main()
neilt6 0:6cfe831d7c16 32 {
neilt6 0:6cfe831d7c16 33 AES aes;
neilt6 0:6cfe831d7c16 34
neilt6 0:6cfe831d7c16 35 //Print the original message
neilt6 0:6cfe831d7c16 36 printf("Original message: \"%s\"", message);
neilt6 0:6cfe831d7c16 37 printData(message, sizeof(message));
neilt6 0:6cfe831d7c16 38
neilt6 0:6cfe831d7c16 39 //Encrypt the message in-place
neilt6 0:6cfe831d7c16 40 aes.setup(key, AES::KEY_256, AES::MODE_CBC, iv);
neilt6 0:6cfe831d7c16 41 aes.encrypt(message, sizeof(message));
neilt6 0:6cfe831d7c16 42 aes.clear();
neilt6 0:6cfe831d7c16 43
neilt6 0:6cfe831d7c16 44 //Print the encrypted message
neilt6 0:6cfe831d7c16 45 printf("Encrypted message:");
neilt6 0:6cfe831d7c16 46 printData(message, sizeof(message));
neilt6 0:6cfe831d7c16 47
neilt6 0:6cfe831d7c16 48 //Decrypt the message in-place
neilt6 0:6cfe831d7c16 49 aes.setup(key, AES::KEY_256, AES::MODE_CBC, iv);
neilt6 0:6cfe831d7c16 50 aes.decrypt(message, sizeof(message));
neilt6 0:6cfe831d7c16 51 aes.clear();
neilt6 0:6cfe831d7c16 52
neilt6 0:6cfe831d7c16 53 //Print the decrypted message
neilt6 0:6cfe831d7c16 54 printf("Decrypted message: \"%s\"", message);
neilt6 0:6cfe831d7c16 55 printData(message, sizeof(message));
neilt6 0:6cfe831d7c16 56 }