diff --git a/archivers/unrar/Makefile b/archivers/unrar/Makefile index 7833aaa5db80..a8b735956e6c 100644 --- a/archivers/unrar/Makefile +++ b/archivers/unrar/Makefile @@ -1,41 +1,41 @@ PORTNAME= unrar -PORTVERSION= 7.13 +PORTVERSION= 7.21 PORTEPOCH= 6 CATEGORIES= archivers MASTER_SITES= https://www.rarlab.com/rar/ -DISTNAME= unrarsrc-7.1.10 +DISTNAME= unrarsrc-7.2.6 MAINTAINER?= sunpoet@FreeBSD.org COMMENT= Extract, view & test RAR archives WWW= https://www.rarlab.com/ LICENSE= UNRAR LICENSE_NAME= UnRAR license LICENSE_FILE= ${WRKSRC}/license.txt LICENSE_PERMS= auto-accept dist-mirror pkg-mirror USES= compiler:c++11-lang cpe LDFLAGS+= -lpthread MAKE_ARGS= CXX="${CXX}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" STRIP="${STRIP_CMD}" MAKEFILE= makefile WRKSRC= ${WRKDIR}/unrar PLIST_FILES= bin/unrar CONFLICTS_INSTALL= unrar-iconv CPE_VENDOR= rarlab OPTIONS_DEFINE= OPENSSL_AES OPTIONS_DEFAULT=OPENSSL_AES OPENSSL_AES_DESC= Use OpenSSL implementation of AES OPENSSL_AES_CPPFLAGS= -DOPENSSL_AES -I${OPENSSLINC} OPENSSL_AES_LDFLAGS= ${${OPENSSLLIB} == /usr/lib :? :-L${OPENSSLLIB}} -lcrypto OPENSSL_AES_USES= ssl do-install: ${INSTALL_PROGRAM} ${WRKSRC}/unrar ${STAGEDIR}${PREFIX}/bin/ .include diff --git a/archivers/unrar/distinfo b/archivers/unrar/distinfo index 3cf469d62881..31a887a955da 100644 --- a/archivers/unrar/distinfo +++ b/archivers/unrar/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1755062440 -SHA256 (unrarsrc-7.1.10.tar.gz) = 72a9ccca146174f41876e8b21ab27e973f039c6d10b13aabcb320e7055b9bb98 -SIZE (unrarsrc-7.1.10.tar.gz) = 268008 +TIMESTAMP = 1779520098 +SHA256 (unrarsrc-7.2.6.tar.gz) = d1afa67ef4121ebc5986815699e05db0ce8648499e5dca854f282a4c3f72c003 +SIZE (unrarsrc-7.2.6.tar.gz) = 270264 diff --git a/archivers/unrar/files/patch-rijndael.cpp b/archivers/unrar/files/patch-rijndael.cpp index 87a02086af3c..db79e1c8e043 100644 --- a/archivers/unrar/files/patch-rijndael.cpp +++ b/archivers/unrar/files/patch-rijndael.cpp @@ -1,160 +1,162 @@ ---- rijndael.cpp.orig 2024-05-12 10:19:02 UTC +--- rijndael.cpp.orig 2026-04-27 08:23:53 UTC +++ rijndael.cpp @@ -3,6 +3,7 @@ **************************************************************************/ #include "rar.hpp" +#if !defined(OPENSSL_AES) #ifdef USE_SSE #include #endif @@ -74,6 +75,7 @@ inline void Copy128(byte *dest,const byte *src) dest[I]=src[I]; #endif } +#endif // OPENSSL_AES ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@@ -82,21 +84,50 @@ Rijndael::Rijndael() +@@ -82,16 +84,20 @@ Rijndael::Rijndael() Rijndael::Rijndael() { +#if !defined(OPENSSL_AES) if (S5[0]==0) GenerateTables(); +#endif // OPENSSL_AES m_uRounds = 0; CBCMode = true; // Always true for RAR. +#if !defined(OPENSSL_AES) #ifdef USE_SSE AES_NI=false; #endif #ifdef USE_NEON_AES AES_Neon=false; #endif +#endif // OPENSSL_AES } +@@ -104,6 +110,31 @@ void Rijndael::Init(bool Encrypt,const byte *key,uint + void Rijndael::Init(bool Encrypt,const byte *key,uint keyLen,const byte * initVector) { +#if defined(OPENSSL_AES) + const EVP_CIPHER *cipher; + switch(keyLen) + { + case 128: + cipher = EVP_aes_128_cbc(); + break; + case 192: + cipher = EVP_aes_192_cbc(); + break; + case 256: + cipher = EVP_aes_256_cbc(); + break; + } + +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CIPHER_CTX_init(&ctx); + EVP_CipherInit_ex(&ctx, cipher, NULL, key, initVector, Encrypt); + EVP_CIPHER_CTX_set_padding(&ctx, 0); +#else // OPENSSL_VERSION_NUMBER + EVP_CIPHER_CTX_init(ctx); + EVP_CipherInit_ex(ctx, cipher, NULL, key, initVector, Encrypt); + EVP_CIPHER_CTX_set_padding(ctx, 0); +#endif // OPENSSL_VERSION_NUMBER +#else // OPENSSL_AES // Check SIMD here instead of constructor, so if object is a part of some // structure memset'ed before use, these variables are not lost. #if defined(USE_SSE) -@@ -166,6 +197,7 @@ void Rijndael::Init(bool Encrypt,const byte *key,uint +@@ -173,6 +204,7 @@ void Rijndael::Init(bool Encrypt,const byte *key,uint if(!Encrypt) keyEncToDec(); +#endif // OPENSSL_AES } -@@ -174,6 +206,15 @@ void Rijndael::blockEncrypt(const byte *input,size_t i +@@ -181,6 +213,15 @@ void Rijndael::blockEncrypt(const byte *input,size_t i if (inputLen <= 0) return; +#if defined(OPENSSL_AES) + int outLen; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen); +#else // OPENSSL_VERSION_NUMBER + EVP_CipherUpdate(ctx, outBuffer, &outLen, input, inputLen); +#endif // OPENSSL_VERSION_NUMBER + return; +#else // OPENSSL_AES size_t numBlocks = inputLen/16; #if defined(USE_SSE) if (AES_NI) -@@ -238,9 +279,11 @@ void Rijndael::blockEncrypt(const byte *input,size_t i +@@ -245,9 +286,11 @@ void Rijndael::blockEncrypt(const byte *input,size_t i input += 16; } Copy128(m_initVector,prevBlock); +#endif // OPENSSL_AES } +#if !defined(OPENSSL_AES) #ifdef USE_SSE void Rijndael::blockEncryptSSE(const byte *input,size_t numBlocks,byte *outBuffer) { -@@ -306,6 +349,7 @@ void Rijndael::blockEncryptNeon(const byte *input,size +@@ -313,6 +356,7 @@ void Rijndael::blockEncryptNeon(const byte *input,size return; } #endif +#endif // OPENSSL_AES void Rijndael::blockDecrypt(const byte *input, size_t inputLen, byte *outBuffer) -@@ -313,6 +357,15 @@ void Rijndael::blockDecrypt(const byte *input, size_t +@@ -320,6 +364,15 @@ void Rijndael::blockDecrypt(const byte *input, size_t if (inputLen <= 0) return; +#if defined(OPENSSL_AES) + int outLen; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen); +#else // OPENSSL_VERSION_NUMBER + EVP_CipherUpdate(ctx, outBuffer, &outLen, input, inputLen); +#endif // OPENSSL_VERSION_NUMBER + return; +#else // OPENSSL_AES size_t numBlocks=inputLen/16; #if defined(USE_SSE) if (AES_NI) -@@ -381,9 +434,11 @@ void Rijndael::blockDecrypt(const byte *input, size_t +@@ -388,9 +441,11 @@ void Rijndael::blockDecrypt(const byte *input, size_t } memcpy(m_initVector,iv,16); +#endif // OPENSSL_AES } +#if !defined(OPENSSL_AES) #ifdef USE_SSE void Rijndael::blockDecryptSSE(const byte *input, size_t numBlocks, byte *outBuffer) { -@@ -450,8 +505,10 @@ void Rijndael::blockDecryptNeon(const byte *input, siz +@@ -457,8 +512,10 @@ void Rijndael::blockDecryptNeon(const byte *input, siz memcpy(m_initVector,iv,16); } #endif +#endif // OPENSSL_AES +#if !defined(OPENSSL_AES) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ALGORITHM ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@@ -580,6 +637,7 @@ void Rijndael::GenerateTables() +@@ -587,6 +644,7 @@ void Rijndael::GenerateTables() U1[b][0]=U2[b][1]=U3[b][2]=U4[b][3]=T5[I][0]=T6[I][1]=T7[I][2]=T8[I][3]=gmul(b,0xe); } } +#endif // OPENSSL_AES #if 0