X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=version2%2Fsrc%2FC%2FCloudComm.cpp;fp=version2%2Fsrc%2FC%2FCloudComm.cpp;h=20ad9a6e1d8d0e9f05136ad438a0c3cb0d54da73;hb=1971f23aa743e9bc7cb576b78e756c230a70db9f;hp=d9866166d2cbfd2b9a93fbb2c378ee3dbd1bcc9a;hpb=bb413f35b364cd0314b41300057ecb887c61a2d8;p=iotcloud.git diff --git a/version2/src/C/CloudComm.cpp b/version2/src/C/CloudComm.cpp index d986616..20ad9a6 100644 --- a/version2/src/C/CloudComm.cpp +++ b/version2/src/C/CloudComm.cpp @@ -27,7 +27,6 @@ CloudComm::CloudComm() : password(NULL), random(NULL), salt(NULL), - ivArray(NULL), table(NULL), listeningPort(-1), doEnd(false), @@ -53,7 +52,6 @@ CloudComm::CloudComm(Table *_table, IoTString *_baseurl, IoTString *_password, password(_password->acquireRef()), random(new SecureRandom()), salt(NULL), - ivArray(NULL), table(_table), listeningPort(_listeningPort), doEnd(false), @@ -70,8 +68,6 @@ CloudComm::~CloudComm() { delete putslot; if (salt) delete salt; - if (ivArray) - delete ivArray; if (password) password->releaseRef(); if (random) @@ -508,12 +504,10 @@ Array *CloudComm::createIV(int64_t machineId, int64_t localSequenceNumber) return buffer->array(); } -void CloudComm::createIV() { - if (ivArray == NULL) { - ivArray = new Array(CloudComm_IV_SIZE); - random->nextBytes(ivArray); - printf("Random bytes is generated: %d\n", ivArray->length()); - } +Array *CloudComm::createIV() { + Array *ivArray = new Array(CloudComm_IV_SIZE); + random->nextBytes(ivArray); + return ivArray; } Array *AESEncrypt(Array *ivBytes, AESKey *key, Array *data) { @@ -574,10 +568,9 @@ Array *CloudComm::putSlot(Slot *slot, int max) { int64_t sequencenumber = slot->getSequenceNumber(); Array *slotBytes = slot->encode(mac); //Array *ivBytes = slot->getSlotCryptIV(); - //Array *chars = encryptSlotAndPrependIV(slotBytes, ivBytes); - //delete ivBytes; - createIV(); - Array *chars = encryptSlotAndPrependIV(slotBytes, ivArray); + Array *ivBytes = createIV(); + Array *chars = encryptSlotAndPrependIV(slotBytes, ivBytes); + delete ivBytes; delete slotBytes; IoTString *url = buildRequest(true, sequencenumber, max); timer->startTime(); @@ -721,9 +714,9 @@ Array *CloudComm::sendLocalData(Array *sendData, int64_t localSequen // Encrypt the data for sending //Array *iv = createIV(table->getMachineId(), table->getLocalSequenceNumber()); - //Array *encryptedData = encryptSlotAndPrependIV(totalData, iv); - createIV(); - Array *encryptedData = encryptSlotAndPrependIV(totalData, ivArray); + Array *iv = createIV(); + Array *encryptedData = encryptSlotAndPrependIV(totalData, iv); + delete iv; // Open a TCP socket connection to a local device int socket = createSocket(host, port); @@ -804,9 +797,9 @@ void CloudComm::localServerWorkerFunction() { // Encrypt the data for sending //Array *iv = createIV(table->getMachineId(), table->getLocalSequenceNumber()); - //Array *encryptedData = encryptSlotAndPrependIV(totalData, iv); - createIV(); - Array *encryptedData = encryptSlotAndPrependIV(totalData, ivArray); + Array *iv = createIV(); + Array *encryptedData = encryptSlotAndPrependIV(totalData, iv); + delete iv; timer->startTime(); // Send data to output (length of data, the data)