X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=version2%2Fsrc%2FC%2FCrypto.cc;h=9fe1154f780998459eda51c2fad039d5f158ae88;hp=e54d541afefbf66defb124fda213e5af6a36ed81;hb=b2bc9b5c707bd7d932d60cd4e8c1cb580b36b5b4;hpb=464b8559d386e200df16569f899f83e969115403 diff --git a/version2/src/C/Crypto.cc b/version2/src/C/Crypto.cc index e54d541..9fe1154 100644 --- a/version2/src/C/Crypto.cc +++ b/version2/src/C/Crypto.cc @@ -2,12 +2,23 @@ #include "pbkdf2-sha256.h" AESKey::AESKey(Array *password, Array *salt, int iterationCount, int keyLength) { - key = new Array(keyLength); + key = new Array(keyLength / 8); PKCS5_PBKDF2_HMAC((unsigned char *) password->internalArray(), password->length(), (unsigned char *) salt->internalArray(), salt->length(), - iterationCount, keyLength, (unsigned char *) key->internalArray()); + iterationCount, keyLength / 8, (unsigned char *) key->internalArray()); + aes_key_setup((BYTE *)key->internalArray(), key_schedule, keyLength); } AESKey::~AESKey() { + bzero(key->internalArray(), key->length()); delete key; + bzero(key_schedule, sizeof(key_schedule)); +} + +WORD *AESKey::getKeySchedule() { + return (WORD *) &key_schedule; +} + +Array *AESKey::getKey() { + return key; }