Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Crypt-OpenSSL-RSA for
openSUSE:Factory checked in at 2022-07-14 16:33:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Crypt-OpenSSL-RSA (Old)
and /work/SRC/openSUSE:Factory/.perl-Crypt-OpenSSL-RSA.new.1523 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Crypt-OpenSSL-RSA"
Thu Jul 14 16:33:23 2022 rev:23 rq:988975 version:0.33
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Crypt-OpenSSL-RSA/perl-Crypt-OpenSSL-RSA.changes
2021-10-20 20:23:05.465333882 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Crypt-OpenSSL-RSA.new.1523/perl-Crypt-OpenSSL-RSA.changes
2022-07-14 16:33:29.672584119 +0200
@@ -1,0 +2,18 @@
+Sat Jul 9 03:06:13 UTC 2022 - Tina M??ller <[email protected]>
+
+- updated to 0.33
+ see /usr/share/doc/packages/perl-Crypt-OpenSSL-RSA/Changes
+
+ 0.33 July 7 2022
+ - Update for windows github CI
+ - Remove duplicit 'LICENSE' key
+ - Remove EUMM Remove version check
+ - #31 by removing reference to RSA_SSLV23_PADDING (removed from OpenSSL
starting from v3.0.0)
+ - support passphase protected private key load
+ - fix 'unsupported encryption' error on old library versions
+ - Clarify croak message for missing passphrase on older cyphers
+ - More structs opaqued in LibreSSL 3.5
+ - Use a macro for dealing with older SSL lacking macros
+ - more CI fixups. Drop testing for 5.10 and 5.8. Something is broken
upstream.
+
+-------------------------------------------------------------------
Old:
----
Crypt-OpenSSL-RSA-0.32.tar.gz
New:
----
Crypt-OpenSSL-RSA-0.33.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Crypt-OpenSSL-RSA.spec ++++++
--- /var/tmp/diff_new_pack.27iSAH/_old 2022-07-14 16:33:30.124584543 +0200
+++ /var/tmp/diff_new_pack.27iSAH/_new 2022-07-14 16:33:30.128584547 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Crypt-OpenSSL-RSA
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,14 @@
%define cpan_name Crypt-OpenSSL-RSA
Name: perl-Crypt-OpenSSL-RSA
-Version: 0.32
+Version: 0.33
Release: 0
-Summary: RSA encoding and decoding, using the openSSL libraries
License: Artistic-1.0 OR GPL-1.0-or-later
+Summary: RSA encoding and decoding, using the openSSL libraries
URL: https://metacpan.org/release/%{cpan_name}
Source0:
https://cpan.metacpan.org/authors/id/T/TO/TODDR/%{cpan_name}-%{version}.tar.gz
Source1: cpanspec.yml
Patch0: Crypt-OpenSSL-RSA.patch
-BuildRequires: openssl-devel
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Crypt::OpenSSL::Guess) >= 0.11
@@ -34,6 +33,9 @@
Requires: perl(Crypt::OpenSSL::Random)
Recommends: perl(Crypt::OpenSSL::Bignum)
%{perl_requires}
+# MANUAL BEGIN
+BuildRequires: openssl-devel
+# MANUAL END
%description
'Crypt::OpenSSL::RSA' provides the ability to RSA encrypt strings which are
@@ -46,7 +48,7 @@
documented) behavior is no longer the case.
%prep
-%autosetup -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{version} -p1
%build
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
++++++ Crypt-OpenSSL-RSA-0.32.tar.gz -> Crypt-OpenSSL-RSA-0.33.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/Changes
new/Crypt-OpenSSL-RSA-0.33/Changes
--- old/Crypt-OpenSSL-RSA-0.32/Changes 2021-09-08 17:49:07.000000000 +0200
+++ new/Crypt-OpenSSL-RSA-0.33/Changes 2022-07-08 02:46:41.000000000 +0200
@@ -1,5 +1,17 @@
Revision history for Perl extension Crypt::OpenSSL::RSA.
+0.33 July 7 2022
+ - Update for windows github CI
+ - Remove duplicit 'LICENSE' key
+ - Remove EUMM Remove version check
+ - #31 by removing reference to RSA_SSLV23_PADDING (removed from OpenSSL
starting from v3.0.0)
+ - support passphase protected private key load
+ - fix 'unsupported encryption' error on old library versions
+ - Clarify croak message for missing passphrase on older cyphers
+ - More structs opaqued in LibreSSL 3.5
+ - Use a macro for dealing with older SSL lacking macros
+ - more CI fixups. Drop testing for 5.10 and 5.8. Something is broken
upstream.
+
0.32 Wed Sep 8 2021
- Prefix internal bn2sv function so it doesn't collide with Net::SSLeay
- Ensure that verify() leaves openssl error stack clean on failure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/META.json
new/Crypt-OpenSSL-RSA-0.33/META.json
--- old/Crypt-OpenSSL-RSA-0.32/META.json 2021-09-08 17:49:08.000000000
+0200
+++ new/Crypt-OpenSSL-RSA-0.33/META.json 2022-07-08 02:46:41.000000000
+0200
@@ -56,6 +56,6 @@
"url" : "http://github.com/toddr/Crypt-OpenSSL-RSA"
}
},
- "version" : "0.32",
+ "version" : "0.33",
"x_serialization_backend" : "JSON::PP version 4.04"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/META.yml
new/Crypt-OpenSSL-RSA-0.33/META.yml
--- old/Crypt-OpenSSL-RSA-0.32/META.yml 2021-09-08 17:49:08.000000000 +0200
+++ new/Crypt-OpenSSL-RSA-0.33/META.yml 2022-07-08 02:46:41.000000000 +0200
@@ -30,5 +30,5 @@
homepage: http://github.com/toddr/Crypt-OpenSSL-RSA
license: http://dev.perl.org/licenses/
repository: http://github.com/toddr/Crypt-OpenSSL-RSA
-version: '0.32'
+version: '0.33'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/Makefile.PL
new/Crypt-OpenSSL-RSA-0.33/Makefile.PL
--- old/Crypt-OpenSSL-RSA-0.32/Makefile.PL 2021-09-08 17:49:02.000000000
+0200
+++ new/Crypt-OpenSSL-RSA-0.33/Makefile.PL 2022-07-08 02:46:41.000000000
+0200
@@ -10,13 +10,13 @@
WriteMakefile(
'NAME' => 'Crypt::OpenSSL::RSA',
- AUTHOR => 'Ian Robertson <[email protected]>',
+ 'AUTHOR' => 'Ian Robertson <[email protected]>',
'VERSION_FROM' => 'RSA.pm', # finds
$VERSION
'DISTNAME' => 'Crypt-OpenSSL-RSA',
'ABSTRACT_FROM' => 'RSA.pm',
'MIN_PERL_VERSION' => 5.006,
'PL_FILES' => {},
- ( $ExtUtils::MakeMaker::VERSION >= 6.3002 ? ( 'LICENSE' => 'perl', ) : ()
),
+ 'LICENSE' => 'perl',
'PREREQ_PM' => {
'Crypt::OpenSSL::Random' => 0,
'Test::More' => 0,
@@ -30,29 +30,21 @@
'dist' => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
'clean' => { FILES => 'Crypt-OpenSSL-RSA-*' },
- ( $ExtUtils::MakeMaker::VERSION >= 6.3002 ? ( 'LICENSE' => 'perl', ) : ()
),
- (
- $ExtUtils::MakeMaker::VERSION >= 6.46
- ? (
- 'META_MERGE' => {
- recommends => {
- 'Crypt::OpenSSL::Bignum' => 0,
- },
- configure_requires => {
- 'Crypt::OpenSSL::Guess' => '0.11',
- },
- build_requires => {
- 'Test' => 0, # For testing
- },
- resources => {
- 'license' => 'http://dev.perl.org/licenses/',
- 'homepage' =>
'http://github.com/toddr/Crypt-OpenSSL-RSA',
- 'bugtracker' =>
'https://github.com/toddr/Crypt-OpenSSL-RSA/issues',
- 'repository' =>
'http://github.com/toddr/Crypt-OpenSSL-RSA',
- }
- }
- )
- : ()
- ),
+ 'META_MERGE' => {
+ recommends => {
+ 'Crypt::OpenSSL::Bignum' => 0,
+ },
+ configure_requires => {
+ 'Crypt::OpenSSL::Guess' => '0.11',
+ },
+ build_requires => {
+ 'Test' => 0, # For testing
+ },
+ resources => {
+ 'license' => 'http://dev.perl.org/licenses/',
+ 'homepage' => 'http://github.com/toddr/Crypt-OpenSSL-RSA',
+ 'bugtracker' =>
'https://github.com/toddr/Crypt-OpenSSL-RSA/issues',
+ 'repository' => 'http://github.com/toddr/Crypt-OpenSSL-RSA',
+ }
+ }
);
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/RSA.pm
new/Crypt-OpenSSL-RSA-0.33/RSA.pm
--- old/Crypt-OpenSSL-RSA-0.32/RSA.pm 2021-09-08 17:49:02.000000000 +0200
+++ new/Crypt-OpenSSL-RSA-0.33/RSA.pm 2022-07-08 02:46:41.000000000 +0200
@@ -5,7 +5,7 @@
use Carp; # Removing carp will break the XS code.
-our $VERSION = '0.32';
+our $VERSION = '0.33';
our $AUTOLOAD;
use AutoLoader 'AUTOLOAD';
@@ -37,7 +37,6 @@
Crypt::OpenSSL::Random::random_seed($good_entropy);
Crypt::OpenSSL::RSA->import_random_seed();
$rsa_pub = Crypt::OpenSSL::RSA->new_public_key($key_string);
- $rsa_pub->use_sslv23_padding(); # use_pkcs1_oaep_padding is the default
$ciphertext = $rsa->encrypt($plaintext);
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
@@ -103,6 +102,16 @@
C<-----BEGIN...-----> and C<-----END...-----> lines. The padding is set to
PKCS1_OAEP, but can be changed with C<use_xxx_padding>.
+An optional parameter can be passed for passphase protected private key:
+
+=over
+
+=item passphase
+
+The passphase which protects the private key.
+
+=back
+
=item generate_key
Create a new C<Crypt::OpenSSL::RSA> object by constructing a
@@ -180,6 +189,22 @@
-----BEGIN RSA PRIVATE KEY------
-----END RSA PRIVATE KEY------
+2 optional parameters can be passed for passphase protected private key
+string:
+
+=over
+
+=item passphase
+
+The passphase which protects the private key.
+
+=item cipher name
+
+The cipher algorithm used to protect the private key. Default to
+'des3'.
+
+=back
+
=item encrypt
Encrypt a binary "string" using the public (portion of the) key.
@@ -228,6 +253,8 @@
Use C<PKCS #1 v1.5> padding with an SSL-specific modification that
denotes that the server is SSL3 capable.
+Not available since OpenSSL 3.
+
=item use_md5_hash
Use the RFC 1321 MD5 hashing algorithm by Ron Rivest when signing and
@@ -324,11 +351,11 @@
=head1 SEE ALSO
-L<perl(1)>, L<Crypt::OpenSSL::Random>, L<Crypt::OpenSSL::Bignum>,
-L<rsa(3)>, L<RSA_new(3)|http://man.he.net/?topic=RSA_new§ion=3>,
-L<RSA_public_encrypt(3)|http://man.he.net/?topic=RSA_public_encrypt§ion=3>,
+L<perl(1)>, L<Crypt::OpenSSL::Random>, L<Crypt::OpenSSL::Bignum>,
+L<rsa(3)>, L<RSA_new(3)|http://man.he.net/?topic=RSA_new§ion=3>,
+L<RSA_public_encrypt(3)|http://man.he.net/?topic=RSA_public_encrypt§ion=3>,
L<RSA_size(3)|http://man.he.net/?topic=RSA_size§ion=3>,
-L<RSA_generate_key(3)|http://man.he.net/?topic=RSA_generate_key§ion=3>,
+L<RSA_generate_key(3)|http://man.he.net/?topic=RSA_generate_key§ion=3>,
L<RSA_check_key(3)|http://man.he.net/?topic=RSA_check_key§ion=3>
=cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/RSA.xs
new/Crypt-OpenSSL-RSA-0.33/RSA.xs
--- old/Crypt-OpenSSL-RSA-0.32/RSA.xs 2021-09-08 17:49:02.000000000 +0200
+++ new/Crypt-OpenSSL-RSA-0.33/RSA.xs 2022-07-08 02:46:41.000000000 +0200
@@ -13,6 +13,7 @@
#include <openssl/rsa.h>
#include <openssl/sha.h>
#include <openssl/ssl.h>
+#include <openssl/evp.h>
typedef struct
{
@@ -29,6 +30,8 @@
#define PACKAGE_NAME "Crypt::OpenSSL::RSA"
+#define OLD_CRUFTY_SSL_VERSION (OPENSSL_VERSION_NUMBER < 0x10100000L ||
(defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x03050000fL))
+
void croakSsl(char* p_file, int p_line)
{
const char* errorReason;
@@ -50,7 +53,7 @@
char _is_private(rsaData* p_rsa)
{
const BIGNUM *d;
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
d = p_rsa->rsa->d;
#else
RSA_get0_key(p_rsa->rsa, NULL, NULL, &d);
@@ -174,19 +177,25 @@
}
RSA* _load_rsa_key(SV* p_keyStringSv,
- RSA*(*p_loader)(BIO*, RSA**, pem_password_cb*, void*))
+ RSA*(*p_loader)(BIO*, RSA**, pem_password_cb*, void*),
+ SV* p_passphaseSv)
{
STRLEN keyStringLength;
char* keyString;
+ char* passphase = NULL;
RSA* rsa;
BIO* stringBIO;
keyString = SvPV(p_keyStringSv, keyStringLength);
+ if (SvPOK(p_passphaseSv)) {
+ passphase = SvPV_nolen(p_passphaseSv);
+ }
+
CHECK_OPEN_SSL(stringBIO = BIO_new_mem_buf(keyString, keyStringLength));
- rsa = p_loader(stringBIO, NULL, NULL, NULL);
+ rsa = p_loader(stringBIO, NULL, NULL, passphase);
CHECK_OPEN_SSL(BIO_set_close(stringBIO, BIO_CLOSE) == 1);
BIO_free(stringBIO);
@@ -227,15 +236,23 @@
PROTOTYPES: DISABLE
BOOT:
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ # might introduce memory leak without calling EVP_cleanup() on exit
+ # see https://wiki.openssl.org/index.php/Library_Initialization
ERR_load_crypto_strings();
+ OpenSSL_add_all_algorithms();
+#else
+ # NOOP
+#endif
SV*
-new_private_key(proto, key_string_SV)
+new_private_key(proto, key_string_SV, passphase_SV=&PL_sv_undef)
SV* proto;
SV* key_string_SV;
+ SV* passphase_SV;
CODE:
RETVAL = make_rsa_obj(
- proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSAPrivateKey));
+ proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSAPrivateKey,
passphase_SV));
OUTPUT:
RETVAL
@@ -245,7 +262,7 @@
SV* key_string_SV;
CODE:
RETVAL = make_rsa_obj(
- proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSAPublicKey));
+ proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSAPublicKey,
&PL_sv_undef));
OUTPUT:
RETVAL
@@ -255,7 +272,7 @@
SV* key_string_SV;
CODE:
RETVAL = make_rsa_obj(
- proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSA_PUBKEY));
+ proto, _load_rsa_key(key_string_SV, PEM_read_bio_RSA_PUBKEY,
&PL_sv_undef));
OUTPUT:
RETVAL
@@ -267,14 +284,37 @@
Safefree(p_rsa);
SV*
-get_private_key_string(p_rsa)
+get_private_key_string(p_rsa, passphase_SV=&PL_sv_undef,
cipher_name_SV=&PL_sv_undef)
rsaData* p_rsa;
+ SV* passphase_SV;
+ SV* cipher_name_SV;
PREINIT:
BIO* stringBIO;
+ char* passphase = NULL;
+ STRLEN passphaseLength = 0;
+ char* cipher_name;
+ const EVP_CIPHER* enc = NULL;
CODE:
+ if (SvPOK(cipher_name_SV) && !SvPOK(passphase_SV)) {
+ croak("Passphrase is required for cipher");
+ }
+ if (SvPOK(passphase_SV)) {
+ passphase = SvPV(passphase_SV, passphaseLength);
+ if (SvPOK(cipher_name_SV)) {
+ cipher_name = SvPV_nolen(cipher_name_SV);
+ }
+ else {
+ cipher_name = "des3";
+ }
+ enc = EVP_get_cipherbyname(cipher_name);
+ if (enc == NULL) {
+ croak("Unsupported cipher: %s", cipher_name);
+ }
+ }
+
CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem()));
PEM_write_bio_RSAPrivateKey(
- stringBIO, p_rsa->rsa, NULL, NULL, 0, NULL, NULL);
+ stringBIO, p_rsa->rsa, enc, passphase, passphaseLength, NULL, NULL);
RETVAL = extractBioString(stringBIO);
OUTPUT:
@@ -357,7 +397,7 @@
croak("At least a modulus and public key must be provided");
}
CHECK_OPEN_SSL(rsa = RSA_new());
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
rsa->n = n;
rsa->e = e;
#endif
@@ -375,7 +415,7 @@
q = BN_new();
THROW(BN_div(q, NULL, n, p, ctx));
}
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
rsa->p = p;
rsa->q = q;
#else
@@ -391,7 +431,7 @@
THROW(BN_mul(d, p_minus_1, q_minus_1, ctx));
THROW(BN_mod_inverse(d, e, d, ctx));
}
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
rsa->d = d;
#else
THROW(RSA_set0_key(rsa, n, e, d));
@@ -402,7 +442,7 @@
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 || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
rsa->dmp1 = dmp1;
rsa->dmq1 = dmq1;
rsa->iqmp = iqmp;
@@ -426,7 +466,7 @@
}
else
{
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
rsa->d = d;
#else
CHECK_OPEN_SSL(RSA_set0_key(rsa, n, e, d));
@@ -453,7 +493,7 @@
{
RSA* rsa;
rsa = p_rsa->rsa;
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined LIBRESSL_VERSION_NUMBER
+#if OLD_CRUFTY_SSL_VERSION
n = rsa->n;
e = rsa->e;
d = rsa->d;
@@ -640,12 +680,16 @@
CODE:
p_rsa->padding = RSA_PKCS1_OAEP_PADDING;
+#if OPENSSL_VERSION_NUMBER < 0x30000000L
+
void
use_sslv23_padding(p_rsa)
rsaData* p_rsa;
CODE:
p_rsa->padding = RSA_SSLV23_PADDING;
+#endif
+
# Sign text. Returns the signature.
SV*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Crypt-OpenSSL-RSA-0.32/t/format.t
new/Crypt-OpenSSL-RSA-0.33/t/format.t
--- old/Crypt-OpenSSL-RSA-0.32/t/format.t 2021-09-08 17:49:02.000000000
+0200
+++ new/Crypt-OpenSSL-RSA-0.33/t/format.t 2022-07-08 02:46:41.000000000
+0200
@@ -3,7 +3,7 @@
use Crypt::OpenSSL::RSA;
-BEGIN { plan tests => 10 }
+BEGIN { plan tests => 19 }
my $PRIVATE_KEY_STRING = <<EOF;
-----BEGIN RSA PRIVATE KEY-----
@@ -23,7 +23,47 @@
-----END PUBLIC KEY-----
EOF
-my ( $private_key, $public_key );
+# openssl genrsa -des3 -passout pass:123456 1024
+my $ENCRYPT_PRIVATE_KEY_STRING = <<EOF;
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,319C89EE262DB309
+
+FPj3QbILNMiDvpoSkA38WZnjvjH+c2b5lKdge0mXJu2k3ZnbM+D51RL/iCTbItsU
+Pgw1pjB7w2pkapSwdwzOwbsaiznLF9S8fj4XxDYWuWAlPGAwk6GA8YxAaCIbpSkr
+QdJoDAsdaIBj1JA73C8HCtnw7h5dN3VLZfwmJVcFeSddz1S5MgN5tgD6YyIhdVwe
+0tlQ3Jk4/j80MzgBoJlkKccVurnUVUKw6S5RkVd91tAj7WXlqepuGV4a1X4JtFpV
+KUNlNt8Hrnf6zq5mNqHqLtXtDpVWj9zW7FIYFqXiq37VKr5qJ8s8RI/ACQK2q7E/
+rJTXqoZFg2fpVW4CDO1Rpm3HF3k8hzCpVFYHHI6j0qmLl7YY5aSKUqFaVIv3O9so
+w/dXO1jWLxiQH1rijl1GBdg86012CtT5hwQbetUjo2leaq5hxdHo0ynXM0Q8aYPU
+I/QUGJvDW5gHE0n6aKQxfWq9OfhraqBKF/SA6S7aHdk7lrjsJPAxa0IGJfO0O471
+SjXj6HHuL376r0KQmDAO4qXpckzfthztwRqDGpdStTVdD+iDOD7NbRW5OJZTvjvM
+/866bpy5py65E6DtQJDAi2NHwQHbV4KEGlocavJybQ7Smaf2JSOMg4DKRwyIQucw
+KdgWUX1Brg70pd8Zr/iGpvE1I7bBWzNbwGbO51srKD+0uZMBz3dwJ0iVrbBInSFW
+UOviCyfFSHIyA5gWxi7ccQYfFj71FH5//4dJOLlh1FtNEYaNod57jE9yDtUPEunQ
+Kg+us0d7vFPttZ5QfBq5yP1povSTgITcXLjjkBxJVvqH0exmSIA22w==
+-----END RSA PRIVATE KEY-----
+EOF
+
+my $DECRYPT_PRIVATE_KEY_STRING = <<EOF;
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC9KazkIUqBOg6QBQJTItC5XBhQYyf+ohQZHsQ/f1URKOYtqsv9
+VtKBSxc7ObSw9ctWEca8VWqqV2Xfmika5XCC/t91Sx8QLO9UAO2ycQeHSFjoYZ18
+ch4Ostgmkbr1blbEDPCFCyIJFb3UzhX5raCIfIByWOvtkXKWuKDkPZD6VQIDAQAB
+AoGBALxoFP7HtciOhdCmXJFnfNMSSllO2ZgB4NjATyEbdyP3Q4O6uSCkaFhE7Wec
+6z7SIeuhGvuca/grwpj6l/RlEDCBYWk1JXJCAvnJkoBCwW70thOXFJ0gDfrJq3Co
+GWntC/fdkv6HJx1axQF3xn9oDVHIn0fscS7D6FzN1jwSgRLhAkEA7kJt09/OlUnY
+pV/9iVvswnnSsxEanoLchzA1bAaDNa9vkIU/BrFwQO9ctw+RQbHrvc/5KPbZoGsq
+bfQ/wOXUnQJBAMs/ZGlziX19lOEGfziugMR33ybLxkBS7qcrpBebAED/8etijASp
+LgMEOKeRz11WAVJJ5A4wi1yxD4fnBxp44xkCQG4RejNbPVByYQdlJPeD5Aijxta6
+nBWGVuKNPuC80XjHpz6Yj9lDt5wH+EkJhA1ZaJKztWNbRoZ5e4x4PcubYXECQHA0
+KubcVcblkU85Gvrbu1K7KoJsdKIGJqI7QXeWpmk74v4jhVD9ZN1dczlvEZ9hX5Fi
+IXiD7Cvbw8svC4jdu+ECQQCw1ZlQPz2rGE+pFQiKOFPprH+pT+zkINh1d83jeMYd
+GG7hKgfQB5J/B0u8/XzEtGnCq8m0xTADx2eplIoKhAFi
+-----END RSA PRIVATE KEY-----
+EOF
+
+my ( $private_key, $public_key, $private_key2 );
ok( $private_key = Crypt::OpenSSL::RSA->new_private_key($PRIVATE_KEY_STRING) );
ok( $PRIVATE_KEY_STRING eq $private_key->get_private_key_string() );
@@ -37,3 +77,14 @@
ok( $public_key = Crypt::OpenSSL::RSA->new_public_key($PUBLIC_KEY_X509_STRING)
);
ok( $PUBLIC_KEY_PKCS1_STRING eq $public_key->get_public_key_string() );
ok( $PUBLIC_KEY_X509_STRING eq $public_key->get_public_key_x509_string() );
+
+my $passphase = '123456';
+ok( $private_key =
Crypt::OpenSSL::RSA->new_private_key($ENCRYPT_PRIVATE_KEY_STRING, $passphase) );
+ok( $DECRYPT_PRIVATE_KEY_STRING eq $private_key->get_private_key_string() );
+ok( $private_key =
Crypt::OpenSSL::RSA->new_private_key($DECRYPT_PRIVATE_KEY_STRING) );
+ok( $private_key2 =
Crypt::OpenSSL::RSA->new_private_key($private_key->get_private_key_string($passphase),
$passphase) );
+ok( $DECRYPT_PRIVATE_KEY_STRING eq $private_key2->get_private_key_string() );
+ok( $private_key2 =
Crypt::OpenSSL::RSA->new_private_key($private_key->get_private_key_string($passphase,
'des3'), $passphase) );
+ok( $DECRYPT_PRIVATE_KEY_STRING eq $private_key2->get_private_key_string() );
+ok( $private_key2 =
Crypt::OpenSSL::RSA->new_private_key($private_key->get_private_key_string($passphase,
'aes-128-cbc'), $passphase) );
+ok( $DECRYPT_PRIVATE_KEY_STRING eq $private_key2->get_private_key_string() );
\ No newline at end of file