Accepting request 503341 from home:dmolkentin:branches:network:utilities
- Add support for OpenSSL 1.1. Commit from upstream [bsc#1042665] new patch: openslp.openssl-1.1.diff OBS-URL: https://build.opensuse.org/request/show/503341 OBS-URL: https://build.opensuse.org/package/show/network:utilities/openslp?expand=0&rev=52
This commit is contained in:
parent
64f99c5a92
commit
f766c879b7
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jun 13 08:28:35 UTC 2017 - daniel.molkentin@suse.com
|
||||||
|
|
||||||
|
- Add support for OpenSSL 1.1. Commit from upstream [bsc#1042665]
|
||||||
|
new patch: openslp.openssl-1.1.diff
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jan 9 10:43:57 UTC 2017 - fbui@suse.com
|
Mon Jan 9 10:43:57 UTC 2017 - fbui@suse.com
|
||||||
|
|
||||||
|
106
openslp.openssl-1.1.diff
Normal file
106
openslp.openssl-1.1.diff
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
--- a/openslp/common/slp_crypto.c
|
||||||
|
+++ b/openslp/common/slp_crypto.c
|
||||||
|
@@ -53,6 +53,80 @@
|
||||||
|
#include "slp_crypto.h"
|
||||||
|
#include "slp_message.h"
|
||||||
|
|
||||||
|
+/* 1.1.0 -> 1.0.x compatibility layer
|
||||||
|
+ * See https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes#Compatibility_Layer
|
||||||
|
+ * for details and additiona compatibility routines if needed in the future.
|
||||||
|
+ */
|
||||||
|
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
|
+static void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
|
||||||
|
+{
|
||||||
|
+ if (p != NULL)
|
||||||
|
+ *p = d->p;
|
||||||
|
+ if (q != NULL)
|
||||||
|
+ *q = d->q;
|
||||||
|
+ if (g != NULL)
|
||||||
|
+ *g = d->g;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g)
|
||||||
|
+{
|
||||||
|
+ /* If the fields p, q and g in d are NULL, the corresponding input
|
||||||
|
+ * parameters MUST be non-NULL.
|
||||||
|
+ */
|
||||||
|
+ if ((d->p == NULL && p == NULL)
|
||||||
|
+ || (d->q == NULL && q == NULL)
|
||||||
|
+ || (d->g == NULL && g == NULL))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (p != NULL)
|
||||||
|
+ {
|
||||||
|
+ BN_free(d->p);
|
||||||
|
+ d->p = p;
|
||||||
|
+ }
|
||||||
|
+ if (q != NULL)
|
||||||
|
+ {
|
||||||
|
+ BN_free(d->q);
|
||||||
|
+ d->q = q;
|
||||||
|
+ }
|
||||||
|
+ if (g != NULL)
|
||||||
|
+ {
|
||||||
|
+ BN_free(d->g);
|
||||||
|
+ d->g = g;
|
||||||
|
+ }
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
|
||||||
|
+{
|
||||||
|
+ if (pub_key != NULL)
|
||||||
|
+ *pub_key = d->pub_key;
|
||||||
|
+ if (priv_key != NULL)
|
||||||
|
+ *priv_key = d->priv_key;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key)
|
||||||
|
+{
|
||||||
|
+ /* If the field pub_key in d is NULL, the corresponding input
|
||||||
|
+ * parameters MUST be non-NULL. The priv_key field may
|
||||||
|
+ * be left NULL.
|
||||||
|
+ */
|
||||||
|
+ if (d->pub_key == NULL && pub_key == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (pub_key != NULL)
|
||||||
|
+ {
|
||||||
|
+ BN_free(d->pub_key);
|
||||||
|
+ d->pub_key = pub_key;
|
||||||
|
+ }
|
||||||
|
+ if (priv_key != NULL)
|
||||||
|
+ {
|
||||||
|
+ BN_free(d->priv_key);
|
||||||
|
+ d->priv_key = priv_key;
|
||||||
|
+ }
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/** Generate a SHA1 digest for the specified block data.
|
||||||
|
*
|
||||||
|
* @param[in] data - The data block to be hashed.
|
||||||
|
@@ -88,11 +162,17 @@
|
||||||
|
result = DSA_new();
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
- result->p = BN_dup(dsa->p);
|
||||||
|
- result->q = BN_dup(dsa->q);
|
||||||
|
- result->g = BN_dup(dsa->g);
|
||||||
|
- result->priv_key = BN_dup(dsa->priv_key);
|
||||||
|
- result->pub_key = BN_dup(dsa->pub_key);
|
||||||
|
+ const BIGNUM *p, *q, *g;
|
||||||
|
+ const BIGNUM *priv_key, *pub_key;
|
||||||
|
+
|
||||||
|
+ DSA_get0_pqg(dsa, &p, &q, &g);
|
||||||
|
+ DSA_get0_key(dsa, &pub_key, &priv_key);
|
||||||
|
+
|
||||||
|
+ /* would be nice to check return values,
|
||||||
|
+ * but original code didn't do that either...
|
||||||
|
+ */
|
||||||
|
+ DSA_set0_pqg(result, BN_dup(p), BN_dup(q), BN_dup(g));
|
||||||
|
+ DSA_set0_key(result, BN_dup(pub_key), BN_dup(priv_key));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
@ -62,6 +62,7 @@ Patch14: openslp.doubleequal.diff
|
|||||||
Patch15: openslp.noconvenience.diff
|
Patch15: openslp.noconvenience.diff
|
||||||
Patch16: openslp.xrealloc.diff
|
Patch16: openslp.xrealloc.diff
|
||||||
Patch17: openslp.foldws.diff
|
Patch17: openslp.foldws.diff
|
||||||
|
Patch18: openslp.openssl-1.1.diff
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Service Location Protocol is an IETF standards track protocol that
|
Service Location Protocol is an IETF standards track protocol that
|
||||||
@ -131,6 +132,7 @@ such applications.
|
|||||||
%patch15
|
%patch15
|
||||||
%patch16
|
%patch16
|
||||||
%patch17
|
%patch17
|
||||||
|
%patch18 -p2
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
|
Loading…
x
Reference in New Issue
Block a user