Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Sep 2020 03:00:49 +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: r548056 - in head/mail/libdkim: . files
Message-ID:  <202009090300.08930nAu095534@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: danfe
Date: Wed Sep  9 03:00:49 2020
New Revision: 548056
URL: https://svnweb.freebsd.org/changeset/ports/548056

Log:
  - Unbreak the build against modern versions of OpenSSL
  - While at it, provide more elaborate port description

Added:
  head/mail/libdkim/files/patch-dkimsign.cpp   (contents, props changed)
  head/mail/libdkim/files/patch-dkimsign.h   (contents, props changed)
  head/mail/libdkim/files/patch-dkimverify.cpp   (contents, props changed)
  head/mail/libdkim/files/patch-dkimverify.h   (contents, props changed)
Modified:
  head/mail/libdkim/Makefile
  head/mail/libdkim/pkg-descr

Modified: head/mail/libdkim/Makefile
==============================================================================
--- head/mail/libdkim/Makefile	Wed Sep  9 01:32:25 2020	(r548055)
+++ head/mail/libdkim/Makefile	Wed Sep  9 03:00:49 2020	(r548056)
@@ -19,16 +19,11 @@ PLIST_SUB=	SHLIB_MAJOR="${SHLIB_MAJOR}"
 
 WRKSRC=		${WRKDIR}/${PORTNAME}/src
 
-.include <bsd.port.pre.mk>
-
-.if ${SSL_DEFAULT} == base
-BROKEN_FreeBSD_12=	field has incomplete type 'EVP_MD_CTX' (aka 'evp_md_ctx_st')
-BROKEN_FreeBSD_13=	field has incomplete type 'EVP_MD_CTX' (aka 'evp_md_ctx_st')
-.endif
-
 post-patch:
 	${MV} ${WRKSRC}/Makefile ${WRKSRC}/Makefile.prev
 	@${SED} -e "s=%%SHLIB_MAJOR%%=${SHLIB_MAJOR}=g" \
 		${FILESDIR}/Makefile > ${WRKSRC}/Makefile
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
+
+PATCH_ARGS+=	-l

Added: head/mail/libdkim/files/patch-dkimsign.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/libdkim/files/patch-dkimsign.cpp	Wed Sep  9 03:00:49 2020	(r548056)
@@ -0,0 +1,119 @@
+--- dkimsign.cpp.orig	2020-09-09 02:13:04 UTC
++++ dkimsign.cpp
+@@ -40,21 +40,27 @@ CDKIMSign::CDKIMSign()
+ {
+ 	m_EmptyLineCount = 0;
+ 	m_pfnHdrCallback = NULL;
++
++	m_allman_sha1ctx = EVP_MD_CTX_create();
++	m_Hdr_ietf_sha1ctx = EVP_MD_CTX_create();
++	m_Hdr_ietf_sha256ctx = EVP_MD_CTX_create();
++	m_Bdy_ietf_sha1ctx = EVP_MD_CTX_create();
++	m_Bdy_ietf_sha256ctx = EVP_MD_CTX_create();
+ 
+-	EVP_SignInit( &m_allman_sha1ctx, EVP_sha1() );
+-	EVP_SignInit( &m_Hdr_ietf_sha1ctx, EVP_sha1() );
+-	EVP_SignInit( &m_Hdr_ietf_sha256ctx, EVP_sha256() );
+-	EVP_DigestInit( &m_Bdy_ietf_sha1ctx, EVP_sha1() );
+-	EVP_DigestInit( &m_Bdy_ietf_sha256ctx, EVP_sha256() );
++	EVP_SignInit( m_allman_sha1ctx, EVP_sha1() );
++	EVP_SignInit( m_Hdr_ietf_sha1ctx, EVP_sha1() );
++	EVP_SignInit( m_Hdr_ietf_sha256ctx, EVP_sha256() );
++	EVP_DigestInit( m_Bdy_ietf_sha1ctx, EVP_sha1() );
++	EVP_DigestInit( m_Bdy_ietf_sha256ctx, EVP_sha256() );
+ }
+ 
+ CDKIMSign::~CDKIMSign()
+ {
+-	EVP_MD_CTX_cleanup( &m_allman_sha1ctx );
+-	EVP_MD_CTX_cleanup( &m_Hdr_ietf_sha1ctx );
+-	EVP_MD_CTX_cleanup( &m_Hdr_ietf_sha256ctx );
+-	EVP_MD_CTX_cleanup( &m_Bdy_ietf_sha1ctx );
+-	EVP_MD_CTX_cleanup( &m_Bdy_ietf_sha256ctx );
++	EVP_MD_CTX_destroy( m_allman_sha1ctx );
++	EVP_MD_CTX_destroy( m_Hdr_ietf_sha1ctx );
++	EVP_MD_CTX_destroy( m_Hdr_ietf_sha256ctx );
++	EVP_MD_CTX_destroy( m_Bdy_ietf_sha1ctx );
++	EVP_MD_CTX_destroy( m_Bdy_ietf_sha256ctx );
+ }
+ 
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -150,34 +156,34 @@ void CDKIMSign::Hash( const char* szBuffer, int nBufLe
+ 	{
+ 		if( m_nIncludeBodyHash & DKIM_BODYHASH_ALLMAN_1 )
+ 		{
+-			EVP_SignUpdate( &m_allman_sha1ctx, szBuffer, nBufLength );
++			EVP_SignUpdate( m_allman_sha1ctx, szBuffer, nBufLength );
+ 		}
+ 	}
+ 	else
+ 	{
+ 		if( m_nIncludeBodyHash < DKIM_BODYHASH_IETF_1 )
+ 		{
+-			EVP_SignUpdate( &m_allman_sha1ctx, szBuffer, nBufLength );
++			EVP_SignUpdate( m_allman_sha1ctx, szBuffer, nBufLength );
+ 		}
+ 		else if( m_nIncludeBodyHash & DKIM_BODYHASH_IETF_1 )
+ 		{
+ 			if( m_nIncludeBodyHash & DKIM_BODYHASH_ALLMAN_1 )
+ 			{
+-				EVP_SignUpdate( &m_allman_sha1ctx, szBuffer, nBufLength );
++				EVP_SignUpdate( m_allman_sha1ctx, szBuffer, nBufLength );
+ 			}
+ 			if( m_nHash & DKIM_HASH_SHA256 )
+ 			{
+ 				if( bHdr )
+-					EVP_SignUpdate( &m_Hdr_ietf_sha256ctx, szBuffer, nBufLength );
++					EVP_SignUpdate( m_Hdr_ietf_sha256ctx, szBuffer, nBufLength );
+ 				else
+-					EVP_DigestUpdate( &m_Bdy_ietf_sha256ctx, szBuffer, nBufLength );
++					EVP_DigestUpdate( m_Bdy_ietf_sha256ctx, szBuffer, nBufLength );
+ 			}
+ 			if( m_nHash != DKIM_HASH_SHA256 )
+ 			{
+ 				if( bHdr )
+-					EVP_SignUpdate( &m_Hdr_ietf_sha1ctx, szBuffer, nBufLength );
++					EVP_SignUpdate( m_Hdr_ietf_sha1ctx, szBuffer, nBufLength );
+ 				else
+-					EVP_DigestUpdate( &m_Bdy_ietf_sha1ctx, szBuffer, nBufLength );
++					EVP_DigestUpdate( m_Bdy_ietf_sha1ctx, szBuffer, nBufLength );
+ 			}
+ 		}
+ 	}
+@@ -865,7 +871,7 @@ int CDKIMSign::ConstructSignature( char* szPrivKey, bo
+ 		unsigned char Hash[EVP_MAX_MD_SIZE];
+ 		unsigned int nHashLen = 0;
+ 
+-		EVP_DigestFinal( bUseSha256 ? &m_Bdy_ietf_sha256ctx : &m_Bdy_ietf_sha1ctx, Hash, &nHashLen );
++		EVP_DigestFinal( bUseSha256 ? m_Bdy_ietf_sha256ctx : m_Bdy_ietf_sha1ctx, Hash, &nHashLen );
+ 
+ 		bio = BIO_new(BIO_s_mem());
+ 		if (!bio) {
+@@ -936,11 +942,11 @@ int CDKIMSign::ConstructSignature( char* szPrivKey, bo
+ 
+ 	if( bUseIetfBodyHash )
+ 	{
+-		EVP_SignUpdate( bUseSha256 ? &m_Hdr_ietf_sha256ctx : &m_Hdr_ietf_sha1ctx, sTemp.c_str(), sTemp.size() );
++		EVP_SignUpdate( bUseSha256 ? m_Hdr_ietf_sha256ctx : m_Hdr_ietf_sha1ctx, sTemp.c_str(), sTemp.size() );
+ 	}
+ 	else
+ 	{
+-		EVP_SignUpdate( &m_allman_sha1ctx, sTemp.c_str(), sTemp.size() );
++		EVP_SignUpdate( m_allman_sha1ctx, sTemp.c_str(), sTemp.size() );
+ 	}
+  
+ 	bio = BIO_new_mem_buf(szPrivKey, -1);
+@@ -967,11 +973,11 @@ int CDKIMSign::ConstructSignature( char* szPrivKey, bo
+ 	
+ 	if( bUseIetfBodyHash )
+ 	{
+-		nSignRet = EVP_SignFinal( bUseSha256 ? &m_Hdr_ietf_sha256ctx : &m_Hdr_ietf_sha1ctx, sig, &siglen, pkey);
++		nSignRet = EVP_SignFinal( bUseSha256 ? m_Hdr_ietf_sha256ctx : m_Hdr_ietf_sha1ctx, sig, &siglen, pkey);
+ 	}
+ 	else
+ 	{
+-		nSignRet = EVP_SignFinal( &m_allman_sha1ctx, sig, &siglen, pkey);
++		nSignRet = EVP_SignFinal( m_allman_sha1ctx, sig, &siglen, pkey);
+ 	}
+ 
+     EVP_PKEY_free(pkey);

Added: head/mail/libdkim/files/patch-dkimsign.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/libdkim/files/patch-dkimsign.h	Wed Sep  9 03:00:49 2020	(r548056)
@@ -0,0 +1,21 @@
+--- dkimsign.h.orig	2008-05-12 03:07:58 UTC
++++ dkimsign.h
+@@ -60,13 +60,13 @@ class CDKIMSign : public CDKIMBase (protected)
+ 
+ 	int AssembleReturnedSig( char* szPrivKey );
+ 
+-	EVP_MD_CTX m_Hdr_ietf_sha1ctx;		/* the header hash for ietf sha1  */
+-	EVP_MD_CTX m_Hdr_ietf_sha256ctx;	/* the header hash for ietf sha256 */
++	EVP_MD_CTX *m_Hdr_ietf_sha1ctx;		/* the header hash for ietf sha1  */
++	EVP_MD_CTX *m_Hdr_ietf_sha256ctx;	/* the header hash for ietf sha256 */
+ 
+-	EVP_MD_CTX m_Bdy_ietf_sha1ctx;		/* the body hash for ietf sha1  */
+-	EVP_MD_CTX m_Bdy_ietf_sha256ctx;	/* the body hash for ietf sha256 */
++	EVP_MD_CTX *m_Bdy_ietf_sha1ctx;		/* the body hash for ietf sha1  */
++	EVP_MD_CTX *m_Bdy_ietf_sha256ctx;	/* the body hash for ietf sha256 */
+ 
+-	EVP_MD_CTX m_allman_sha1ctx;		/* the hash for allman sha1  */
++	EVP_MD_CTX *m_allman_sha1ctx;		/* the hash for allman sha1  */
+ 
+ 	int m_Canon;				// canonization method
+ 

Added: head/mail/libdkim/files/patch-dkimverify.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/libdkim/files/patch-dkimverify.cpp	Wed Sep  9 03:00:49 2020	(r548056)
@@ -0,0 +1,85 @@
+--- dkimverify.cpp.orig	2020-09-09 02:39:20 UTC
++++ dkimverify.cpp
+@@ -43,8 +43,10 @@ SignatureInfo::SignatureInfo(bool s)
+ {
+ 	VerifiedBodyCount = 0;
+ 	UnverifiedBodyCount = 0;
+-	EVP_MD_CTX_init( &m_Hdr_ctx );
+-	EVP_MD_CTX_init( &m_Bdy_ctx );
++	m_Hdr_ctx = EVP_MD_CTX_create();
++	m_Bdy_ctx = EVP_MD_CTX_create();
++	EVP_MD_CTX_init( m_Hdr_ctx );
++	EVP_MD_CTX_init( m_Bdy_ctx );
+ 	m_pSelector = NULL;
+ 	Status = DKIM_SUCCESS;
+ 	m_nHash = 0;
+@@ -54,8 +56,8 @@ SignatureInfo::SignatureInfo(bool s)
+ 
+ SignatureInfo::~SignatureInfo()
+ {
+-	EVP_MD_CTX_cleanup( &m_Hdr_ctx );
+-	EVP_MD_CTX_cleanup( &m_Bdy_ctx );
++	EVP_MD_CTX_destroy( m_Hdr_ctx );
++	EVP_MD_CTX_destroy( m_Bdy_ctx );
+ }
+ 
+ 
+@@ -459,7 +461,7 @@ int CDKIMVerify::GetResults(void)
+ 				unsigned char md[EVP_MAX_MD_SIZE];
+ 				unsigned len = 0;
+ 
+-				int res = EVP_DigestFinal( &i->m_Bdy_ctx, md, &len);
++				int res = EVP_DigestFinal( i->m_Bdy_ctx, md, &len);
+ 
+ 				if (!res || len != i->BodyHashData.length() || memcmp(i->BodyHashData.data(), md, len) != 0)
+ 				{
+@@ -515,7 +517,7 @@ int CDKIMVerify::GetResults(void)
+ 
+ 			assert( i->m_pSelector != NULL );
+ 
+-			int res = EVP_VerifyFinal( &i->m_Hdr_ctx, (unsigned char *) i->SignatureData.data(), i->SignatureData.length(), i->m_pSelector->PublicKey);
++			int res = EVP_VerifyFinal( i->m_Hdr_ctx, (unsigned char *) i->SignatureData.data(), i->SignatureData.length(), i->m_pSelector->PublicKey);
+ 
+ 			if (res == 1)
+ 			{
+@@ -658,11 +660,11 @@ void SignatureInfo::Hash( const char* szBuffer, unsign
+ 
+ 	if (IsBody && !BodyHashData.empty())
+ 	{
+-		EVP_DigestUpdate( &m_Bdy_ctx, szBuffer, nBufLength );
++		EVP_DigestUpdate( m_Bdy_ctx, szBuffer, nBufLength );
+ 	}
+ 	else
+ 	{
+-		EVP_VerifyUpdate( &m_Hdr_ctx, szBuffer, nBufLength );
++		EVP_VerifyUpdate( m_Hdr_ctx, szBuffer, nBufLength );
+ 	}
+ 
+ 	if (m_SaveCanonicalizedData)
+@@ -741,13 +743,13 @@ int CDKIMVerify::ProcessHeaders(void)
+ 		// initialize the hashes
+ 		if (sig.m_nHash == DKIM_HASH_SHA256)
+ 		{
+-			EVP_VerifyInit( &sig.m_Hdr_ctx, EVP_sha256() );
+-			EVP_DigestInit( &sig.m_Bdy_ctx, EVP_sha256() );
++			EVP_VerifyInit( sig.m_Hdr_ctx, EVP_sha256() );
++			EVP_DigestInit( sig.m_Bdy_ctx, EVP_sha256() );
+ 		}
+ 		else
+ 		{
+-			EVP_VerifyInit( &sig.m_Hdr_ctx, EVP_sha1() );
+-			EVP_DigestInit( &sig.m_Bdy_ctx, EVP_sha1() );
++			EVP_VerifyInit( sig.m_Hdr_ctx, EVP_sha1() );
++			EVP_DigestInit( sig.m_Bdy_ctx, EVP_sha1() );
+ 		}
+ 
+ 		// compute the hash of the header
+@@ -1337,7 +1339,7 @@ int SelectorInfo::Parse( char* Buffer )
+ 			return DKIM_SELECTOR_PUBLIC_KEY_INVALID;
+ 
+ 		// make sure public key is the correct type (we only support rsa)
+-		if (pkey->type == EVP_PKEY_RSA || pkey->type == EVP_PKEY_RSA2)
++		if (EVP_PKEY_id(pkey) == EVP_PKEY_RSA || EVP_PKEY_id(pkey) == EVP_PKEY_RSA2)
+ 		{
+ 			PublicKey = pkey;
+ 		}

Added: head/mail/libdkim/files/patch-dkimverify.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/libdkim/files/patch-dkimverify.h	Wed Sep  9 03:00:49 2020	(r548056)
@@ -0,0 +1,13 @@
+--- dkimverify.h.orig	2008-09-15 00:22:00 UTC
++++ dkimverify.h
+@@ -83,8 +83,8 @@ class SignatureInfo (public)
+ 	unsigned VerifiedBodyCount;
+ 	unsigned UnverifiedBodyCount;
+ 
+-	EVP_MD_CTX m_Hdr_ctx;
+-	EVP_MD_CTX m_Bdy_ctx;
++	EVP_MD_CTX *m_Hdr_ctx;
++	EVP_MD_CTX *m_Bdy_ctx;
+ 	SelectorInfo *m_pSelector;
+ 
+ 	int Status;

Modified: head/mail/libdkim/pkg-descr
==============================================================================
--- head/mail/libdkim/pkg-descr	Wed Sep  9 01:32:25 2020	(r548055)
+++ head/mail/libdkim/pkg-descr	Wed Sep  9 03:00:49 2020	(r548056)
@@ -1,3 +1,5 @@
-This library implements DKIM (DomainKeys Identified Mail).
+This is a C++ library which allows incorporating DKIM into existing MTA
+or other application.  It provides full support for signing, verifying,
+and SSP.  It is compliant with RFC 4871.
 
 WWW: http://dkim.org/



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