diff --git a/0001-Add-compatibility-with-OpenSSL-1.1.0.patch b/0001-Add-compatibility-with-OpenSSL-1.1.0.patch new file mode 100644 index 0000000..a3b3913 --- /dev/null +++ b/0001-Add-compatibility-with-OpenSSL-1.1.0.patch @@ -0,0 +1,149 @@ +From e498737a96e8832a2cb9141ab1fe51e129185a48 Mon Sep 17 00:00:00 2001 +From: Simo Sorce +Date: Wed, 29 Jun 2016 11:15:11 -0400 +Subject: [PATCH] Add compatibility with OpenSSL 1.1.0 + +In their continued wisdom OpenSSL developers keep breaking APIs left and right +with very poor documentation and forward/backward source compatibility. + +Signed-off-by: Simo Sorce +--- + src/crypto.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 48 insertions(+), 12 deletions(-) + +diff --git a/src/crypto.c b/src/crypto.c +index 9fe69f97cfe9a4c1c9a5fb1861fef3fdfb8ae596..33a0c3e9060df0fa14784e869b5edce2f462b238 100644 +--- a/src/crypto.c ++++ b/src/crypto.c +@@ -27,6 +27,32 @@ + + #include "crypto.h" + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++HMAC_CTX *HMAC_CTX_new(void) ++{ ++ HMAC_CTX *ctx; ++ ++ ctx = OPENSSL_malloc(sizeof(HMAC_CTX)); ++ if (!ctx) return NULL; ++ ++ HMAC_CTX_init(ctx); ++ ++ return ctx; ++} ++ ++void HMAC_CTX_free(HMAC_CTX *ctx) ++{ ++ if (ctx == NULL) return; ++ ++ HMAC_CTX_cleanup(ctx); ++ OPENSSL_free(ctx); ++} ++ ++#define EVP_MD_CTX_new EVP_MD_CTX_create ++#define EVP_MD_CTX_free EVP_MD_CTX_destroy ++ ++#endif ++ + int RAND_BUFFER(struct ntlm_buffer *random) + { + int ret; +@@ -42,30 +68,34 @@ int HMAC_MD5_IOV(struct ntlm_buffer *key, + struct ntlm_iov *iov, + struct ntlm_buffer *result) + { +- HMAC_CTX hmac_ctx; ++ HMAC_CTX *hmac_ctx; + unsigned int len; + size_t i; + int ret = 0; + + if (result->length != 16) return EINVAL; + +- HMAC_CTX_init(&hmac_ctx); ++ hmac_ctx = HMAC_CTX_new(); ++ if (!hmac_ctx) { ++ ret = ERR_CRYPTO; ++ goto done; ++ } + +- ret = HMAC_Init_ex(&hmac_ctx, key->data, key->length, EVP_md5(), NULL); ++ ret = HMAC_Init_ex(hmac_ctx, key->data, key->length, EVP_md5(), NULL); + if (ret == 0) { + ret = ERR_CRYPTO; + goto done; + } + + for (i = 0; i < iov->num; i++) { +- ret = HMAC_Update(&hmac_ctx, iov->data[i]->data, iov->data[i]->length); ++ ret = HMAC_Update(hmac_ctx, iov->data[i]->data, iov->data[i]->length); + if (ret == 0) { + ret = ERR_CRYPTO; + goto done; + } + } + +- ret = HMAC_Final(&hmac_ctx, result->data, &len); ++ ret = HMAC_Final(hmac_ctx, result->data, &len); + if (ret == 0) { + ret = ERR_CRYPTO; + goto done; +@@ -74,7 +104,7 @@ int HMAC_MD5_IOV(struct ntlm_buffer *key, + ret = 0; + + done: +- HMAC_CTX_cleanup(&hmac_ctx); ++ HMAC_CTX_free(hmac_ctx); + return ret; + } + +@@ -93,26 +123,32 @@ static int mdx_hash(const EVP_MD *type, + struct ntlm_buffer *payload, + struct ntlm_buffer *result) + { +- EVP_MD_CTX ctx; ++ EVP_MD_CTX *ctx; + unsigned int len; + int ret; + + if (result->length != 16) return EINVAL; + +- EVP_MD_CTX_init(&ctx); +- ret = EVP_DigestInit_ex(&ctx, type, NULL); ++ ctx = EVP_MD_CTX_new(); ++ if (!ctx) { ++ ret = ERR_CRYPTO; ++ goto done; ++ } ++ ++ EVP_MD_CTX_init(ctx); ++ ret = EVP_DigestInit_ex(ctx, type, NULL); + if (ret == 0) { + ret = ERR_CRYPTO; + goto done; + } + +- ret = EVP_DigestUpdate(&ctx, payload->data, payload->length); ++ ret = EVP_DigestUpdate(ctx, payload->data, payload->length); + if (ret == 0) { + ret = ERR_CRYPTO; + goto done; + } + +- ret = EVP_DigestFinal_ex(&ctx, result->data, &len); ++ ret = EVP_DigestFinal_ex(ctx, result->data, &len); + if (ret == 0) { + ret = ERR_CRYPTO; + goto done; +@@ -121,7 +157,7 @@ static int mdx_hash(const EVP_MD *type, + ret = 0; + + done: +- EVP_MD_CTX_cleanup(&ctx); ++ if (ctx) EVP_MD_CTX_free(ctx); + return ret; + } + +-- +2.9.3 + diff --git a/gssntlmssp-0.7.0.tar.gz b/gssntlmssp-0.7.0.tar.gz new file mode 100644 index 0000000..bd1283a Binary files /dev/null and b/gssntlmssp-0.7.0.tar.gz differ diff --git a/gssntlmssp.spec b/gssntlmssp.spec new file mode 100644 index 0000000..329d054 --- /dev/null +++ b/gssntlmssp.spec @@ -0,0 +1,66 @@ +Name: gssntlmssp +Version: 0.7.0 +Release: 8 +Summary: The mechanism of GSSAPI NTLMSSP +License: LGPLv3+ +URL: https://pagure.io/gssntlmssp +Source0: https://fedorahosted.org/released/gss-ntlmssp/%{name}-%{version}.tar.gz +Patch01: 0001-Add-compatibility-with-OpenSSL-1.1.0.patch + +Requires: krb5-libs >= 1.12.1-9 + +BuildRequires: autoconf automake libtool m4 libxslt libxml2 docbook-style-xsl doxygen gettext-devel +BuildRequires: pkgconfig krb5-devel >= 1.11.2 libunistring-devel openssl-devel pkgconfig(wbclient) + +%description +Implementing the GSSAPI mechanism of NTLMSSP. + +%package devel +Summary: The development header of GSSAPI NTLMSSP +License: LGPLv3+ + +%description devel +Add header file with custom GSSAPI extension defined for NTLMSSP. + +%package help +Summary: Documentation for gssntlmssp + +%description help +This package provides documentation for gssntlmssp. + +%prep +%autosetup -n gssntlmssp-0.7.0 -p1 + +%build +autoreconf -fiv +%configure \ + --with-wbclient \ + --disable-static \ + --disable-rpath + +%make_build all + +%install +%make_install +rm -f %{buildroot}%{_libdir}/gssntlmssp/gssntlmssp.la +install -d %{buildroot}%{_sysconfdir}/gss/mech.d +install -pm644 examples/mech.ntlmssp %{buildroot}%{_sysconfdir}/gss/mech.d/ntlmssp.conf +%{find_lang} gssntlmssp + +%check +make test_gssntlmssp + +%files -f gssntlmssp.lang +%config(noreplace) %{_sysconfdir}/gss/mech.d/ntlmssp.conf +%{_libdir}/gssntlmssp/ +%doc COPYING + +%files devel +%{_includedir}/gssapi/gssapi_ntlmssp.h + +%files help +%{_mandir}/man8/gssntlmssp.8* + +%changelog +* Tue Feb 25 2020 fengbing - 0.7.0-8 +- DESC:Package init