diff --git a/lmc/src/crypto.cpp b/lmc/src/crypto.cpp index f1ce014..264e78d 100644 --- a/lmc/src/crypto.cpp +++ b/lmc/src/crypto.cpp @@ -73,12 +73,12 @@ QByteArray lmcCrypto::generateAES(QString* lpszUserId, QByteArray& pubKey) { int rounds = 5; keyLen = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1(), NULL, keyData, keyDataLen, rounds, keyIv, keyIv + keyLen); - EVP_CIPHER_CTX ectx, dctx; - EVP_CIPHER_CTX_init(&ectx); - EVP_EncryptInit_ex(&ectx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); + EVP_CIPHER_CTX *ectx, *dctx; + ectx = EVP_CIPHER_CTX_new(); + EVP_EncryptInit_ex(ectx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); encryptMap.insert(*lpszUserId, ectx); - EVP_CIPHER_CTX_init(&dctx); - EVP_DecryptInit_ex(&dctx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); + dctx = EVP_CIPHER_CTX_new(); + EVP_DecryptInit_ex(dctx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); decryptMap.insert(*lpszUserId, dctx); unsigned char* eKeyIv = (unsigned char*)malloc(RSA_size(rsa)); @@ -100,12 +100,12 @@ void lmcCrypto::retreiveAES(QString* lpszUserId, QByteArray& aesKeyIv) { RSA_private_decrypt(aesKeyIv.length(), (unsigned char*)aesKeyIv.data(), keyIv, pRsa, RSA_PKCS1_OAEP_PADDING); int keyLen = 32; - EVP_CIPHER_CTX ectx, dctx; - EVP_CIPHER_CTX_init(&ectx); - EVP_EncryptInit_ex(&ectx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); + EVP_CIPHER_CTX *ectx, *dctx; + ectx = EVP_CIPHER_CTX_new(); + EVP_EncryptInit_ex(ectx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); encryptMap.insert(*lpszUserId, ectx); - EVP_CIPHER_CTX_init(&dctx); - EVP_DecryptInit_ex(&dctx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); + dctx = EVP_CIPHER_CTX_new(); + EVP_DecryptInit_ex(dctx, EVP_aes_256_cbc(), NULL, keyIv, keyIv + keyLen); decryptMap.insert(*lpszUserId, dctx); free(keyIv); @@ -120,10 +120,10 @@ QByteArray lmcCrypto::encrypt(QString* lpszUserId, QByteArray& clearData) { } int foutLen = 0; - EVP_CIPHER_CTX ctx = encryptMap.value(*lpszUserId); - if(EVP_EncryptInit_ex(&ctx, NULL, NULL, NULL, NULL)) { - if(EVP_EncryptUpdate(&ctx, outBuffer, &outLen, (unsigned char*)clearData.data(), clearData.length())) { - if(EVP_EncryptFinal_ex(&ctx, outBuffer + outLen, &foutLen)) { + EVP_CIPHER_CTX *ctx = encryptMap.value(*lpszUserId); + if(EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, NULL)) { + if(EVP_EncryptUpdate(ctx, outBuffer, &outLen, (unsigned char*)clearData.data(), clearData.length())) { + if(EVP_EncryptFinal_ex(ctx, outBuffer + outLen, &foutLen)) { outLen += foutLen; QByteArray byteArray((char*)outBuffer, outLen); free(outBuffer); @@ -144,10 +144,10 @@ QByteArray lmcCrypto::decrypt(QString* lpszUserId, QByteArray& cipherData) { } int foutLen = 0; - EVP_CIPHER_CTX ctx = decryptMap.value(*lpszUserId); - if(EVP_DecryptInit_ex(&ctx, NULL, NULL, NULL, NULL)) { - if(EVP_DecryptUpdate(&ctx, outBuffer, &outLen, (unsigned char*)cipherData.data(), cipherData.length())) { - if(EVP_DecryptFinal_ex(&ctx, outBuffer + outLen, &foutLen)) { + EVP_CIPHER_CTX *ctx = decryptMap.value(*lpszUserId); + if(EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, NULL)) { + if(EVP_DecryptUpdate(ctx, outBuffer, &outLen, (unsigned char*)cipherData.data(), cipherData.length())) { + if(EVP_DecryptFinal_ex(ctx, outBuffer + outLen, &foutLen)) { outLen += foutLen; QByteArray byteArray((char*)outBuffer, outLen); free(outBuffer); diff --git a/lmc/src/crypto.h b/lmc/src/crypto.h index f43bf24..60378d6 100644 --- a/lmc/src/crypto.h +++ b/lmc/src/crypto.h @@ -48,10 +48,10 @@ public: private: RSA* pRsa; - QMap encryptMap; - QMap decryptMap; + QMap encryptMap; + QMap decryptMap; int bits; long exponent; }; -#endif // CRYPTO_H \ No newline at end of file +#endif // CRYPTO_H