8
0

Accepting request 517894 from home:scarabeus_iv:branches:devel:languages:perl

- Sort with spec-cleaner
- Add patch openssl11.patch fixing compatibility with openssl-1.1.0

OBS-URL: https://build.opensuse.org/request/show/517894
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Crypt-OpenSSL-RSA?expand=0&rev=21
This commit is contained in:
Stephan Kulow
2017-09-03 08:58:28 +00:00
committed by Git OBS Bridge
parent a6321d6818
commit 3a00578e66
3 changed files with 191 additions and 18 deletions

172
openssl110.patch Normal file
View File

@@ -0,0 +1,172 @@
From 5e7842169fe47f4cd63b2b4acca39d5f34febf8f Mon Sep 17 00:00:00 2001
From: Petr Pisar <ppisar@redhat.com>
Date: Thu, 29 Jun 2017 23:20:06 +0300
Subject: [PATCH] Adapt to OpenSSL 1.1.0
---
RSA.xs | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 73 insertions(+), 16 deletions(-)
diff --git a/RSA.xs b/RSA.xs
index de512e7..9bf6f01 100644
--- a/RSA.xs
+++ b/RSA.xs
@@ -49,7 +49,13 @@ void croakSsl(char* p_file, int p_line)
char _is_private(rsaData* p_rsa)
{
- return(p_rsa->rsa->d != NULL);
+ const BIGNUM *d;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ d = p_rsa->rsa->d;
+#else
+ RSA_get0_key(p_rsa->rsa, NULL, NULL, &d);
+#endif
+ return(d != NULL);
}
SV* make_rsa_obj(SV* p_proto, RSA* p_rsa)
@@ -136,7 +142,7 @@ unsigned char* get_message_digest(SV* text_SV, int hash_method)
}
}
-SV* bn2sv(BIGNUM* p_bn)
+SV* bn2sv(const BIGNUM* p_bn)
{
return p_bn != NULL
? sv_2mortal(newSViv((IV) BN_dup(p_bn)))
@@ -317,6 +323,9 @@ _new_key_from_parameters(proto, n, e, d, p, q)
BN_CTX* ctx;
BIGNUM* p_minus_1 = NULL;
BIGNUM* q_minus_1 = NULL;
+ BIGNUM* dmp1 = NULL;
+ BIGNUM* dmq1 = NULL;
+ BIGNUM* iqmp = NULL;
int error;
CODE:
{
@@ -325,8 +334,10 @@ _new_key_from_parameters(proto, n, e, d, p, q)
croak("At least a modulous and public key must be provided");
}
CHECK_OPEN_SSL(rsa = RSA_new());
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
rsa->n = n;
rsa->e = e;
+#endif
if (p || q)
{
error = 0;
@@ -341,8 +352,12 @@ _new_key_from_parameters(proto, n, e, d, p, q)
q = BN_new();
THROW(BN_div(q, NULL, n, p, ctx));
}
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
rsa->p = p;
rsa->q = q;
+#else
+ THROW(RSA_set0_factors(rsa, p, q));
+#endif
THROW(p_minus_1 = BN_new());
THROW(BN_sub(p_minus_1, p, BN_value_one()));
THROW(q_minus_1 = BN_new());
@@ -353,17 +368,32 @@ _new_key_from_parameters(proto, n, e, d, p, q)
THROW(BN_mul(d, p_minus_1, q_minus_1, ctx));
THROW(BN_mod_inverse(d, e, d, ctx));
}
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
rsa->d = d;
- THROW(rsa->dmp1 = BN_new());
- THROW(BN_mod(rsa->dmp1, d, p_minus_1, ctx));
- THROW(rsa->dmq1 = BN_new());
- THROW(BN_mod(rsa->dmq1, d, q_minus_1, ctx));
- THROW(rsa->iqmp = BN_new());
- THROW(BN_mod_inverse(rsa->iqmp, q, p, ctx));
+#else
+ THROW(RSA_set0_key(rsa, n, e, d));
+#endif
+ THROW(dmp1 = BN_new());
+ THROW(BN_mod(dmp1, d, p_minus_1, ctx));
+ THROW(dmq1 = BN_new());
+ THROW(BN_mod(dmq1, d, q_minus_1, ctx));
+ THROW(iqmp = BN_new());
+ THROW(BN_mod_inverse(iqmp, q, p, ctx));
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ rsa->dmp1 = dmp1;
+ rsa->dmq1 = dmq1;
+ rsa->iqmp = iqmp;
+#else
+ THROW(RSA_set0_crt_params(rsa, dmp1, dmq1, iqmp));
+#endif
+ dmp1 = dmq1 = iqmp = NULL;
THROW(RSA_check_key(rsa) == 1);
err:
if (p_minus_1) BN_clear_free(p_minus_1);
if (q_minus_1) BN_clear_free(q_minus_1);
+ if (dmp1) BN_clear_free(dmp1);
+ if (dmq1) BN_clear_free(dmq1);
+ if (iqmp) BN_clear_free(iqmp);
if (ctx) BN_CTX_free(ctx);
if (error)
{
@@ -373,7 +403,11 @@ _new_key_from_parameters(proto, n, e, d, p, q)
}
else
{
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
rsa->d = d;
+#else
+ CHECK_OPEN_SSL(RSA_set0_key(rsa, n, e, d));
+#endif
}
RETVAL = make_rsa_obj(proto, rsa);
}
@@ -383,18 +417,41 @@ _new_key_from_parameters(proto, n, e, d, p, q)
void
_get_key_parameters(p_rsa)
rsaData* p_rsa;
+PREINIT:
+ const BIGNUM* n;
+ const BIGNUM* e;
+ const BIGNUM* d;
+ const BIGNUM* p;
+ const BIGNUM* q;
+ const BIGNUM* dmp1;
+ const BIGNUM* dmq1;
+ const BIGNUM* iqmp;
PPCODE:
{
RSA* rsa;
rsa = p_rsa->rsa;
- XPUSHs(bn2sv(rsa->n));
- XPUSHs(bn2sv(rsa->e));
- XPUSHs(bn2sv(rsa->d));
- XPUSHs(bn2sv(rsa->p));
- XPUSHs(bn2sv(rsa->q));
- XPUSHs(bn2sv(rsa->dmp1));
- XPUSHs(bn2sv(rsa->dmq1));
- XPUSHs(bn2sv(rsa->iqmp));
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ n = rsa->n;
+ e = rsa->e;
+ d = rsa->d;
+ p = rsa->p;
+ q = rsa->q;
+ dmp1 = rsa->dmp1;
+ dmq1 = rsa->dmq1;
+ iqmp = rsa->iqmp;
+#else
+ RSA_get0_key(rsa, &n, &e, &d);
+ RSA_get0_factors(rsa, &p, &q);
+ RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp);
+#endif
+ XPUSHs(bn2sv(n));
+ XPUSHs(bn2sv(e));
+ XPUSHs(bn2sv(d));
+ XPUSHs(bn2sv(p));
+ XPUSHs(bn2sv(q));
+ XPUSHs(bn2sv(dmp1));
+ XPUSHs(bn2sv(dmq1));
+ XPUSHs(bn2sv(iqmp));
}
SV*

View File

@@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Aug 21 10:28:25 UTC 2017 - tchvatal@suse.com
- Sort with spec-cleaner
- Add patch openssl11.patch fixing compatibility with openssl-1.1.0
-------------------------------------------------------------------
Wed Nov 30 09:30:10 UTC 2011 - coolo@suse.com

View File

@@ -1,7 +1,7 @@
#
# spec file for package perl-Crypt-OpenSSL-RSA
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -15,26 +15,24 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: perl-Crypt-OpenSSL-RSA
%define cpan_name Crypt-OpenSSL-RSA
Summary: RSA encoding and decoding, using the openSSL libraries
Name: perl-Crypt-OpenSSL-RSA
Version: 0.28
Release: 0
License: GPL-1.0+ or Artistic-1.0
Summary: RSA encoding and decoding, using the openSSL libraries
License: GPL-1.0+ OR Artistic-1.0
Group: Development/Libraries/Perl
Url: http://search.cpan.org/dist/Crypt-OpenSSL-RSA
Source: http://search.cpan.org/CPAN/authors/id/P/PE/PERLER/Crypt-OpenSSL-RSA-%{version}.tar.gz
Patch: %{cpan_name}.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{perl_requires}
Patch0: %{cpan_name}.patch
Patch1: openssl110.patch
BuildRequires: openssl-devel
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Crypt::OpenSSL::Random)
Requires: perl(Crypt::OpenSSL::Random)
%{perl_requires}
%description
Crypt::OpenSSL::RSA is an XS perl module designed to provide basic RSA
@@ -42,26 +40,23 @@ functionality. It does this by providing a glue to the RSA functions
in the OpenSSL library.
%prep
%setup -n %{cpan_name}-%{version}
%patch
%setup -q -n %{cpan_name}-%{version}
%patch0
%patch1 -p1
%build
%{__perl} Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
%{__make} %{?_smp_mflags}
perl Makefile.PL OPTIMIZE="%{optflags} -Wall"
make %{?_smp_mflags}
%check
%{__make} test
make %{?_smp_mflags} test
%install
%perl_make_install
%perl_process_packlist
%perl_gen_filelist
%clean
%{__rm} -rf $RPM_BUILD_ROOT
%files -f %{name}.files
%defattr(-, root, root)
%doc Changes LICENSE README
%changelog