Группа :: Other
Пакет: lanmessenger
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: lanmessenger-alt-openssl1.1.patch
Скачать
Скачать
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<QString, EVP_CIPHER_CTX> encryptMap;
- QMap<QString, EVP_CIPHER_CTX> decryptMap;
+ QMap<QString, EVP_CIPHER_CTX*> encryptMap;
+ QMap<QString, EVP_CIPHER_CTX*> decryptMap;
int bits;
long exponent;
};
-#endif // CRYPTO_H
\ No newline at end of file
+#endif // CRYPTO_H