diff --git a/archivers/libunrar/Makefile b/archivers/libunrar/Makefile index d25f713b0212..ce4f45219d21 100644 --- a/archivers/libunrar/Makefile +++ b/archivers/libunrar/Makefile @@ -1,50 +1,50 @@ PORTNAME= libunrar -PORTVERSION= 6.2.12 +PORTVERSION= 7.0.9 PORTEPOCH= 1 CATEGORIES= archivers MASTER_SITES= http://www.rarlab.com/rar/ DISTNAME= unrarsrc-${PORTVERSION} MAINTAINER= jhale@FreeBSD.org COMMENT= RAR archive extraction library WWW= https://www.rarlab.com/ LICENSE= UNRAR LICENSE_NAME= UnRAR License LICENSE_FILE= ${WRKSRC}/license.txt LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept USES= compiler:c++11-lang gmake USE_LDCONFIG= yes ALL_TARGET= lib MAKEFILE= makefile MAKE_ARGS= AR="${AR}" \ CXX="${CXX}" \ CXXFLAGS="${CXXFLAGS} -fPIC" \ LDFLAGS="-Wl,-soname,${SONAME} -pthread ${LDFLAGS}" \ STRIP="${STRIP_CMD}" -SONAME= libunrar.so.6 +SONAME= libunrar.so.${PORTVERSION:R:R} WRKSRC= ${WRKDIR}/unrar 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= -L${OPENSSLLIB} -lcrypto OPENSSL_AES_USES= ssl PLIST_FILES= lib/libunrar.a \ lib/libunrar.so \ lib/${SONAME} \ include/${PORTNAME}/dll.hpp do-install: ${INSTALL_DATA} ${WRKSRC}/libunrar.a ${STAGEDIR}${PREFIX}/lib/libunrar.a ${INSTALL_LIB} ${WRKSRC}/libunrar.so ${STAGEDIR}${PREFIX}/lib/${SONAME} ${RLN} ${STAGEDIR}${PREFIX}/lib/${SONAME} ${STAGEDIR}${PREFIX}/lib/${SONAME:R} @${MKDIR} ${STAGEDIR}${PREFIX}/include/${PORTNAME} ${INSTALL_DATA} ${WRKSRC}/dll.hpp ${STAGEDIR}${PREFIX}/include/${PORTNAME}/dll.hpp .include diff --git a/archivers/libunrar/distinfo b/archivers/libunrar/distinfo index 0c053b59197c..9e79fd04e174 100644 --- a/archivers/libunrar/distinfo +++ b/archivers/libunrar/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1696565467 -SHA256 (unrarsrc-6.2.12.tar.gz) = a008b5f949bca9bb4ffa1bebbfc8b3c14b89df10a10354809b845232d5f582e5 -SIZE (unrarsrc-6.2.12.tar.gz) = 246918 +TIMESTAMP = 1718185508 +SHA256 (unrarsrc-7.0.9.tar.gz) = 505c13f9e4c54c01546f2e29b2fcc2d7fabc856a060b81e5cdfe6012a9198326 +SIZE (unrarsrc-7.0.9.tar.gz) = 258287 diff --git a/archivers/libunrar/files/patch-os.hpp b/archivers/libunrar/files/patch-os.hpp index ef633fb42257..900ac20f3c86 100644 --- a/archivers/libunrar/files/patch-os.hpp +++ b/archivers/libunrar/files/patch-os.hpp @@ -1,13 +1,13 @@ ---- os.hpp.orig 2023-01-17 16:25:54 UTC +--- os.hpp.orig 2024-05-12 10:19:01 UTC +++ os.hpp -@@ -173,6 +173,10 @@ - #include - +@@ -166,6 +166,10 @@ + #endif + #endif -+#ifdef OPENSSL_AES ++#if defined(OPENSSL_AES) +#include +#endif // OPENSSL_AES + #ifdef S_IFLNK #define SAVE_LINKS #endif diff --git a/archivers/libunrar/files/patch-rijndael.cpp b/archivers/libunrar/files/patch-rijndael.cpp index 92b411d99b5c..87a02086af3c 100644 --- a/archivers/libunrar/files/patch-rijndael.cpp +++ b/archivers/libunrar/files/patch-rijndael.cpp @@ -1,136 +1,160 @@ ---- rijndael.cpp.orig 2023-01-17 16:25:54 UTC +--- rijndael.cpp.orig 2024-05-12 10:19:02 UTC +++ rijndael.cpp -@@ -3,6 +3,8 @@ +@@ -3,6 +3,7 @@ **************************************************************************/ #include "rar.hpp" -+#ifndef OPENSSL_AES -+ ++#if !defined(OPENSSL_AES) #ifdef USE_SSE #include #endif -@@ -75,6 +77,7 @@ inline void Copy128(byte *dest,const byte *src) +@@ -74,6 +75,7 @@ inline void Copy128(byte *dest,const byte *src) + dest[I]=src[I]; #endif } - +#endif // OPENSSL_AES + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // API -@@ -82,14 +85,41 @@ inline void Copy128(byte *dest,const byte *src) +@@ -82,21 +84,50 @@ Rijndael::Rijndael() Rijndael::Rijndael() { -+#ifndef OPENSSL_AES ++#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 } void Rijndael::Init(bool Encrypt,const byte *key,uint keyLen,const byte * initVector) { -+#ifdef OPENSSL_AES ++#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 ++#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 ++#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) -@@ -141,6 +171,7 @@ void Rijndael::Init(bool Encrypt,const byte *key,uint +@@ -166,6 +197,7 @@ void Rijndael::Init(bool Encrypt,const byte *key,uint if(!Encrypt) keyEncToDec(); +#endif // OPENSSL_AES } -@@ -149,6 +180,15 @@ void Rijndael::blockEncrypt(const byte *input,size_t i +@@ -174,6 +206,15 @@ void Rijndael::blockEncrypt(const byte *input,size_t i if (inputLen <= 0) return; -+#ifdef OPENSSL_AES ++#if defined(OPENSSL_AES) + int outLen; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen); -+#else ++#else // OPENSSL_VERSION_NUMBER + EVP_CipherUpdate(ctx, outBuffer, &outLen, input, inputLen); -+#endif ++#endif // OPENSSL_VERSION_NUMBER + return; +#else // OPENSSL_AES size_t numBlocks = inputLen/16; #if defined(USE_SSE) if (AES_NI) -@@ -213,6 +253,7 @@ void Rijndael::blockEncrypt(const byte *input,size_t i +@@ -238,9 +279,11 @@ void Rijndael::blockEncrypt(const byte *input,size_t i input += 16; } Copy128(m_initVector,prevBlock); +#endif // OPENSSL_AES } -@@ -288,6 +329,15 @@ void Rijndael::blockDecrypt(const byte *input, size_t ++#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 + 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 if (inputLen <= 0) return; -+#ifdef OPENSSL_AES ++#if defined(OPENSSL_AES) + int outLen; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen); -+#else ++#else // OPENSSL_VERSION_NUMBER + EVP_CipherUpdate(ctx, outBuffer, &outLen, input, inputLen); -+#endif ++#endif // OPENSSL_VERSION_NUMBER + return; +#else // OPENSSL_AES size_t numBlocks=inputLen/16; #if defined(USE_SSE) if (AES_NI) -@@ -356,6 +406,8 @@ void Rijndael::blockDecrypt(const byte *input, size_t +@@ -381,9 +434,11 @@ void Rijndael::blockDecrypt(const byte *input, size_t } memcpy(m_initVector,iv,16); -+ +#endif // OPENSSL_AES } -@@ -426,7 +478,7 @@ void Rijndael::blockDecryptNeon(const byte *input, siz ++#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 + memcpy(m_initVector,iv,16); } #endif ++#endif // OPENSSL_AES -- -+#ifndef OPENSSL_AES + ++#if !defined(OPENSSL_AES) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ALGORITHM ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@@ -555,7 +607,7 @@ void Rijndael::GenerateTables() +@@ -580,6 +637,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 - static void TestRijndael(); diff --git a/archivers/libunrar/files/patch-rijndael.hpp b/archivers/libunrar/files/patch-rijndael.hpp index 0e1ccbfbd379..09ab2a798f94 100644 --- a/archivers/libunrar/files/patch-rijndael.hpp +++ b/archivers/libunrar/files/patch-rijndael.hpp @@ -1,24 +1,24 @@ ---- rijndael.hpp.orig 2023-01-17 16:25:54 UTC +--- rijndael.hpp.orig 2024-02-26 09:03:53 UTC +++ rijndael.hpp -@@ -12,6 +12,13 @@ +@@ -12,6 +12,13 @@ class Rijndael class Rijndael { private: -+#ifdef OPENSSL_AES ++#if defined(OPENSSL_AES) +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CIPHER_CTX ctx; -+#else ++#else // OPENSSL_VERSION_NUMBER + EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); -+#endif ++#endif // OPENSSL_VERSION_NUMBER +#else // OPENSSL_AES + #ifdef USE_SSE - void blockEncryptSSE(const byte *input,size_t numBlocks,byte *outBuffer); - void blockDecryptSSE(const byte *input, size_t numBlocks, byte *outBuffer); -@@ -31,6 +38,7 @@ class Rijndael + #ifdef __GNUC__ +@@ -40,6 +47,7 @@ class Rijndael void keySched(byte key[_MAX_KEY_COLUMNS][4]); void keyEncToDec(); void GenerateTables(); +#endif // OPENSSL_AES // RAR always uses CBC, but we may need to turn it off when calling // this code from other archive formats with CTR and other modes.