diff --git a/archivers/unrar/Makefile b/archivers/unrar/Makefile index 6a40b3cf9032..555fdec77d84 100644 --- a/archivers/unrar/Makefile +++ b/archivers/unrar/Makefile @@ -1,45 +1,44 @@ # Created by: ache PORTNAME= unrar -PORTVERSION= 6.02 +PORTVERSION= 6.10 PORTEPOCH= 6 CATEGORIES+= archivers -MASTER_SITES= https://rarlab.com/rar/ \ - LOCAL/sunpoet -DISTNAME= unrarsrc-6.0.7 +MASTER_SITES= https://rarlab.com/rar/ +DISTNAME= unrarsrc-6.1.4 MAINTAINER?= sunpoet@FreeBSD.org COMMENT= Extract, view & test RAR archives LICENSE= UNRAR LICENSE_FILE= ${WRKSRC}/license.txt LICENSE_NAME= UnRAR license 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 SLAVEDIRS= archivers/unrar-iconv 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 b297eb825a48..3dfcf9659c83 100644 --- a/archivers/unrar/distinfo +++ b/archivers/unrar/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1623697046 -SHA256 (unrarsrc-6.0.7.tar.gz) = a7029942006cbcced3f3b7322ec197683f8e7be408972ca08099b196c038f518 -SIZE (unrarsrc-6.0.7.tar.gz) = 232903 +TIMESTAMP = 1643970970 +SHA256 (unrarsrc-6.1.4.tar.gz) = c0ed58629243961c3f1ec90c08b11ff93261e568dbfdce2bf3b759ee7a4a3b7c +SIZE (unrarsrc-6.1.4.tar.gz) = 235483 diff --git a/archivers/unrar/files/patch-os.hpp b/archivers/unrar/files/patch-os.hpp index 6e1ef0d20b34..c0a0c1604907 100644 --- a/archivers/unrar/files/patch-os.hpp +++ b/archivers/unrar/files/patch-os.hpp @@ -1,13 +1,13 @@ ---- os.hpp.orig 2019-04-27 20:05:18 UTC +--- os.hpp.orig 2022-01-24 07:33:18 UTC +++ os.hpp -@@ -166,6 +166,10 @@ +@@ -168,6 +168,10 @@ #include +#ifdef OPENSSL_AES +#include +#endif // OPENSSL_AES + #ifdef S_IFLNK #define SAVE_LINKS #endif diff --git a/archivers/unrar/files/patch-rijndael.cpp b/archivers/unrar/files/patch-rijndael.cpp index 2656ded5d19e..19749b3b7403 100644 --- a/archivers/unrar/files/patch-rijndael.cpp +++ b/archivers/unrar/files/patch-rijndael.cpp @@ -1,136 +1,136 @@ ---- rijndael.cpp.orig 2019-04-27 20:05:20 UTC +--- rijndael.cpp.orig 2022-01-24 07:33:18 UTC +++ rijndael.cpp -@@ -7,6 +7,8 @@ - ***************************************************************************/ +@@ -3,6 +3,8 @@ + **************************************************************************/ #include "rar.hpp" +#ifndef OPENSSL_AES + #ifdef USE_SSE #include #endif -@@ -56,6 +58,7 @@ inline void Copy128(byte *dest,const byt +@@ -75,6 +77,7 @@ inline void Copy128(byte *dest,const byte *src) #endif } +#endif // OPENSSL_AES ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API -@@ -63,14 +66,41 @@ inline void Copy128(byte *dest,const byt +@@ -82,14 +85,41 @@ inline void Copy128(byte *dest,const byte *src) Rijndael::Rijndael() { +#ifndef OPENSSL_AES - if (S[0]==0) + if (S5[0]==0) GenerateTables(); +#endif // OPENSSL_AES CBCMode = true; // Always true for RAR. } void Rijndael::Init(bool Encrypt,const byte *key,uint keyLen,const byte * initVector) { +#ifdef 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 + EVP_CIPHER_CTX_init(ctx); + EVP_CipherInit_ex(ctx, cipher, NULL, key, initVector, Encrypt); + EVP_CIPHER_CTX_set_padding(ctx, 0); +#endif +#else // OPENSSL_AES #ifdef USE_SSE // Check SSE here instead of constructor, so if object is a part of some // structure memset'ed before use, this variable is not lost. -@@ -114,6 +144,7 @@ void Rijndael::Init(bool Encrypt,const b +@@ -139,6 +169,7 @@ void Rijndael::Init(bool Encrypt,const byte *key,uint if(!Encrypt) keyEncToDec(); +#endif // OPENSSL_AES } void Rijndael::blockEncrypt(const byte *input,size_t inputLen,byte *outBuffer) -@@ -121,6 +152,15 @@ void Rijndael::blockEncrypt(const byte * +@@ -146,6 +177,15 @@ void Rijndael::blockEncrypt(const byte *input,size_t i if (inputLen <= 0) return; +#ifdef OPENSSL_AES + int outLen; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen); +#else + EVP_CipherUpdate(ctx, outBuffer, &outLen, input, inputLen); +#endif + return; +#else // OPENSSL_AES size_t numBlocks = inputLen/16; #ifdef USE_SSE if (AES_NI) -@@ -179,6 +219,7 @@ void Rijndael::blockEncrypt(const byte * +@@ -204,6 +244,7 @@ void Rijndael::blockEncrypt(const byte *input,size_t i input += 16; } Copy128(m_initVector,prevBlock); +#endif // OPENSSL_AES } -@@ -220,6 +261,15 @@ void Rijndael::blockDecrypt(const byte * +@@ -245,6 +286,15 @@ void Rijndael::blockDecrypt(const byte *input, size_t if (inputLen <= 0) return; +#ifdef OPENSSL_AES + int outLen; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen); +#else + EVP_CipherUpdate(ctx, outBuffer, &outLen, input, inputLen); +#endif + return; +#else // OPENSSL_AES size_t numBlocks=inputLen/16; #ifdef USE_SSE if (AES_NI) -@@ -282,6 +332,8 @@ void Rijndael::blockDecrypt(const byte * +@@ -307,6 +357,8 @@ void Rijndael::blockDecrypt(const byte *input, size_t } memcpy(m_initVector,iv,16); + +#endif // OPENSSL_AES } -@@ -317,7 +369,7 @@ void Rijndael::blockDecryptSSE(const byt +@@ -342,7 +394,7 @@ void Rijndael::blockDecryptSSE(const byte *input, size } #endif - +#ifndef OPENSSL_AES ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ALGORITHM ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@@ -457,7 +509,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]=FFmul0e(b); +@@ -471,7 +523,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/unrar/files/patch-rijndael.hpp b/archivers/unrar/files/patch-rijndael.hpp index e85656700db5..3c375833ef8e 100644 --- a/archivers/unrar/files/patch-rijndael.hpp +++ b/archivers/unrar/files/patch-rijndael.hpp @@ -1,24 +1,24 @@ ---- rijndael.hpp.orig 2018-06-24 15:10:31 UTC +--- rijndael.hpp.orig 2022-01-24 07:33:18 UTC +++ rijndael.hpp -@@ -16,6 +16,13 @@ +@@ -12,6 +12,13 @@ class Rijndael { private: +#ifdef OPENSSL_AES +#if OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_CIPHER_CTX ctx; +#else + EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); +#endif +#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); -@@ -25,6 +32,7 @@ class Rijndael +@@ -21,6 +28,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.