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 <timueller+p...@suse.de>
+
+- 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 <irobe...@cpan.org>',
+    'AUTHOR'           => 'Ian Robertson <irobe...@cpan.org>',
     '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&section=3>, 
-L<RSA_public_encrypt(3)|http://man.he.net/?topic=RSA_public_encrypt&section=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&section=3>,
+L<RSA_public_encrypt(3)|http://man.he.net/?topic=RSA_public_encrypt&section=3>,
 L<RSA_size(3)|http://man.he.net/?topic=RSA_size&section=3>,
-L<RSA_generate_key(3)|http://man.he.net/?topic=RSA_generate_key&section=3>, 
+L<RSA_generate_key(3)|http://man.he.net/?topic=RSA_generate_key&section=3>,
 L<RSA_check_key(3)|http://man.he.net/?topic=RSA_check_key&section=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

Reply via email to