Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37862046
en ru br
Репозитории ALT

Группа :: 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
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin