Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Sep 2020 09:37:39 +0000 (UTC)
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r548192 - in head: net-p2p/dclib net-p2p/dclib/files security/sslsniffer security/sslsniffer/files
Message-ID:  <202009100937.08A9bdwR033941@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: danfe
Date: Thu Sep 10 09:37:39 2020
New Revision: 548192
URL: https://svnweb.freebsd.org/changeset/ports/548192

Log:
  Unbreak the build against modern versions of OpenSSL.

Added:
  head/net-p2p/dclib/files/patch-dclib_core_cssl.cpp   (contents, props changed)
  head/security/sslsniffer/files/patch-sslsniffer.c   (contents, props changed)
Modified:
  head/net-p2p/dclib/Makefile
  head/security/sslsniffer/Makefile

Modified: head/net-p2p/dclib/Makefile
==============================================================================
--- head/net-p2p/dclib/Makefile	Thu Sep 10 09:36:48 2020	(r548191)
+++ head/net-p2p/dclib/Makefile	Thu Sep 10 09:37:39 2020	(r548192)
@@ -21,13 +21,6 @@ USE_GNOME=	libxml2
 INSTALL_TARGET=	install-strip
 USE_LDCONFIG=	yes
 
-.include <bsd.port.pre.mk>
-
-.if ${SSL_DEFAULT} == base
-BROKEN_FreeBSD_12=	variable has incomplete type 'EVP_CIPHER_CTX' (aka 'evp_cipher_ctx_st')
-BROKEN_FreeBSD_13=	variable has incomplete type 'EVP_CIPHER_CTX' (aka 'evp_cipher_ctx_st')
-.endif
-
 post-patch:
 	@${FIND} ${WRKSRC} -name Makefile.in | ${XARGS} \
 		${REINPLACE_CMD} -e 's|dclib-0.3/||g'
@@ -35,4 +28,4 @@ post-patch:
 	@${REINPLACE_CMD} -e 's|-D_XOPEN_SOURCE=500||g; \
 		s|-D_BSD_SOURCE||g' ${WRKSRC}/configure
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>

Added: head/net-p2p/dclib/files/patch-dclib_core_cssl.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-p2p/dclib/files/patch-dclib_core_cssl.cpp	Thu Sep 10 09:37:39 2020	(r548192)
@@ -0,0 +1,96 @@
+--- dclib/core/cssl.cpp.orig	2020-09-10 07:59:41 UTC
++++ dclib/core/cssl.cpp
+@@ -429,7 +429,7 @@ CString CSSL::EncryptData( CSSLObject * SSLObject, CSt
+ 	CString res;
+ 	CByteArray bain,baout;
+ 	int i,tmplen;
+-	EVP_CIPHER_CTX ctx;
++	EVP_CIPHER_CTX *ctx;
+ 
+ 	// sanity check
+ 	if ( !SSLObject || (s.IsEmpty()) )
+@@ -437,8 +437,9 @@ CString CSSL::EncryptData( CSSLObject * SSLObject, CSt
+ 		return res;
+ 	}
+ 	
+-	EVP_CIPHER_CTX_init(&ctx);
+-	EVP_EncryptInit(&ctx, EVP_bf_cbc(), SSLObject->m_remotekey, SSLObject->m_remoteiv);
++	ctx = EVP_CIPHER_CTX_new();
++	EVP_CIPHER_CTX_init(ctx);
++	EVP_EncryptInit(ctx, EVP_bf_cbc(), SSLObject->m_remotekey, SSLObject->m_remoteiv);
+ 
+ 	// init input array
+ 	bain.SetSize(2);
+@@ -448,13 +449,13 @@ CString CSSL::EncryptData( CSSLObject * SSLObject, CSt
+ 	// init output array
+ 	// input size + cipher_block_size for EVP_EncryptUpdate
+ 	// plus cipher_block_size for EVP_EncryptFinal
+-	baout.SetSize( bain.Size() + ( 2 * EVP_CIPHER_CTX_block_size(&ctx) ) );
++	baout.SetSize( bain.Size() + ( 2 * EVP_CIPHER_CTX_block_size(ctx) ) );
+ 	//printf("CSSL::EncryptData: wrong old size=%lu new size=%lu\n",bain.Size()*2,baout.Size());
+ 	i = baout.Size();
+ 
+-	if ( EVP_EncryptUpdate(&ctx, baout.Data(), &i, bain.Data(), bain.Size() ) )
++	if ( EVP_EncryptUpdate(ctx, baout.Data(), &i, bain.Data(), bain.Size() ) )
+ 	{
+-		if ( EVP_EncryptFinal(&ctx, baout.Data()+i, &tmplen) )
++		if ( EVP_EncryptFinal(ctx, baout.Data()+i, &tmplen) )
+ 		{
+ 			i+=tmplen;
+ 			bain.SetSize(0);
+@@ -465,7 +466,7 @@ CString CSSL::EncryptData( CSSLObject * SSLObject, CSt
+ 		}
+ 	}
+ 
+-	EVP_CIPHER_CTX_cleanup(&ctx);
++	EVP_CIPHER_CTX_free(ctx);
+ 
+ 	return res;
+ }
+@@ -476,7 +477,7 @@ CString CSSL::DecryptData( CSSLObject * SSLObject, CSt
+ 	CString res;
+ 	CByteArray bain,baout;
+ 	int i,tmplen;
+-	EVP_CIPHER_CTX ctx;
++	EVP_CIPHER_CTX *ctx;
+ 
+ 	// sanity check
+ 	if ( !SSLObject || (s.IsEmpty()) )
+@@ -484,22 +485,23 @@ CString CSSL::DecryptData( CSSLObject * SSLObject, CSt
+ 		return res;
+ 	}
+ 	
+-	EVP_CIPHER_CTX_init(&ctx);
+-	EVP_DecryptInit(&ctx, EVP_bf_cbc(), SSLObject->m_localkey, SSLObject->m_localiv);
++	ctx = EVP_CIPHER_CTX_new();
++	EVP_CIPHER_CTX_init(ctx);
++	EVP_DecryptInit(ctx, EVP_bf_cbc(), SSLObject->m_localkey, SSLObject->m_localiv);
+ 
+ 	bain.SetSize(0);
+ 	bain.Append(s.Data(),s.Length());
+ 
+ 	if ( CBase64::Decode(&baout,&bain) > 0 )
+ 	{
+-		bain.SetSize( baout.Size() + ( 2 * EVP_CIPHER_CTX_block_size(&ctx) ) );
++		bain.SetSize( baout.Size() + ( 2 * EVP_CIPHER_CTX_block_size(ctx) ) );
+ 		//printf("CSSL::DecryptData: wrong old size=%lu new size=%lu\n",baout.Size()*2,bain.Size());
+ 		i = 0;
+ 
+-		if ( EVP_DecryptUpdate(&ctx, bain.Data(), &i, baout.Data(), (int)baout.Size() ) )
++		if ( EVP_DecryptUpdate(ctx, bain.Data(), &i, baout.Data(), (int)baout.Size() ) )
+ 		{
+ 			tmplen = 0;
+-			if ( EVP_DecryptFinal(&ctx, bain.Data()+i, &tmplen) )
++			if ( EVP_DecryptFinal(ctx, bain.Data()+i, &tmplen) )
+ 			{
+ 				i+=tmplen;
+ 				res.Set((const char*)bain.Data()+2,i-2);
+@@ -507,7 +509,7 @@ CString CSSL::DecryptData( CSSLObject * SSLObject, CSt
+ 		}
+ 	}
+ 
+-	EVP_CIPHER_CTX_cleanup(&ctx);
++	EVP_CIPHER_CTX_free(ctx);
+ 
+ 	return res;
+ }

Modified: head/security/sslsniffer/Makefile
==============================================================================
--- head/security/sslsniffer/Makefile	Thu Sep 10 09:36:48 2020	(r548191)
+++ head/security/sslsniffer/Makefile	Thu Sep 10 09:37:39 2020	(r548192)
@@ -21,13 +21,6 @@ PLIST_FILES=	bin/sslsniffer
 
 OPTIONS_DEFINE=	DOCS
 
-.include <bsd.port.pre.mk>
-
-.if ${SSL_DEFAULT} == base
-BROKEN_FreeBSD_12=	incomplete definition of type 'struct evp_pkey_st'
-BROKEN_FreeBSD_13=	incomplete definition of type 'struct evp_pkey_st'
-.endif
-
 do-install:
 	${INSTALL_PROGRAM} ${WRKSRC}/sslsniffer ${STAGEDIR}${PREFIX}/bin
 
@@ -35,4 +28,4 @@ do-install-DOCS-on:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	${INSTALL_DATA} ${WRKSRC}/README ${STAGEDIR}${DOCSDIR}
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>

Added: head/security/sslsniffer/files/patch-sslsniffer.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/security/sslsniffer/files/patch-sslsniffer.c	Thu Sep 10 09:37:39 2020	(r548192)
@@ -0,0 +1,26 @@
+--- sslsniffer.c.orig	2001-10-08 22:10:44 UTC
++++ sslsniffer.c
+@@ -1573,14 +1573,22 @@ PrintCertificateInfo(UTL_CERT_INFO *buf, EVP_PKEY *key
+     
+     if (key == NULL) return;
+     
+-    switch (key->type) 
++    switch (EVP_PKEY_id(key))
+     {
+     case EVP_PKEY_RSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ 	buf->keysize = RSA_size(key->pkey.rsa)*8;
++#else
++	buf->keysize = RSA_size(EVP_PKEY_get0_RSA(key))*8;
++#endif
+ 	printf("  RSA Public key size %d bits\n\n",buf->keysize);
+ 	break;      
+     case EVP_PKEY_DSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ 	buf->keysize = DSA_size(key->pkey.dsa)*8;
++#else
++	buf->keysize = DSA_size(EVP_PKEY_get0_DSA(key))*8;
++#endif
+ 	printf("  DSS Public key size %d bits\n\n",buf->keysize);
+ 	break;
+     default:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009100937.08A9bdwR033941>