space hacks
[iotcloud.git] / version2 / src / C / Crypto.cpp
1 #include "Crypto.h"
2 #include "pbkdf2-sha256.h"
3
4 AESKey::AESKey(Array<char> *password, Array<char> *salt, int iterationCount, int keyLength) {
5         key = new Array<char>(keyLength / 8);
6         PKCS5_PBKDF2_HMAC((unsigned char *) password->internalArray(), password->length(),
7                                                                                 (unsigned char *) salt->internalArray(), salt->length(),
8                                                                                 iterationCount, keyLength / 8, (unsigned char *) key->internalArray());
9         aes_key_setup((BYTE *)key->internalArray(), key_schedule, keyLength);
10 }
11
12 AESKey::~AESKey() {
13         bzero(key->internalArray(), key->length());
14         delete key;
15         bzero(key_schedule, sizeof(key_schedule));
16 }
17
18 WORD *AESKey::getKeySchedule() {
19         return (WORD *) &key_schedule;
20 }
21
22 Array<char> *AESKey::getKey() {
23         return key;
24 }