From 85a844bab18b79de194917b0fabb1754b2cc994d Mon Sep 17 00:00:00 2001 From: terrafrost Date: Tue, 26 Jan 2021 22:58:45 -0600 Subject: [PATCH 1/2] RSA: CS adjustments --- phpseclib/Crypt/RSA.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpseclib/Crypt/RSA.php b/phpseclib/Crypt/RSA.php index 9ff33e67..882fadd2 100644 --- a/phpseclib/Crypt/RSA.php +++ b/phpseclib/Crypt/RSA.php @@ -93,6 +93,7 @@ abstract class RSA extends AsymmetricKey * @see self::decrypt() */ const ENCRYPTION_OAEP = 1; + /** * Use PKCS#1 padding. * @@ -104,6 +105,7 @@ abstract class RSA extends AsymmetricKey * @see self::decrypt() */ const ENCRYPTION_PKCS1 = 2; + /** * Do not use any padding * @@ -130,6 +132,7 @@ abstract class RSA extends AsymmetricKey * @access public */ const SIGNATURE_PSS = 16; + /** * Use a relaxed version of PKCS#1 padding for signature verification * @@ -139,6 +142,7 @@ abstract class RSA extends AsymmetricKey * @access public */ const SIGNATURE_RELAXED_PKCS1 = 32; + /** * Use PKCS#1 padding for signature verification * From b49203d5b96135d1a2505dfb5991963c7a7e63ac Mon Sep 17 00:00:00 2001 From: terrafrost Date: Tue, 26 Jan 2021 23:13:40 -0600 Subject: [PATCH 2/2] BigInteger: big speedups for when OpenSSL is used --- phpseclib/Math/BigInteger/Engines/OpenSSL.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/phpseclib/Math/BigInteger/Engines/OpenSSL.php b/phpseclib/Math/BigInteger/Engines/OpenSSL.php index ce4d18a3..d61eb821 100644 --- a/phpseclib/Math/BigInteger/Engines/OpenSSL.php +++ b/phpseclib/Math/BigInteger/Engines/OpenSSL.php @@ -56,16 +56,14 @@ abstract class OpenSSL new BigInteger($n), new BigInteger($e) ); - $rsa = RSA::load($key); - //$rsa->setPublicKeyFormat('PKCS1'); - $plaintext = str_pad($x->toBytes(), strlen($n->toBytes(true)) - 1, "\0", STR_PAD_LEFT); + $plaintext = str_pad($x->toBytes(), $n->getLengthInBytes(), "\0", STR_PAD_LEFT); // this is easily prone to failure. if the modulo is a multiple of 2 or 3 or whatever it // won't work and you'll get a "failure: error:0906D06C:PEM routines:PEM_read_bio:no start line" // error. i suppose, for even numbers, we could do what PHP\Montgomery.php does, but then what // about odd numbers divisible by 3, by 5, etc? - if (!openssl_public_encrypt($plaintext, $result, "$rsa", OPENSSL_NO_PADDING)) { + if (!openssl_public_encrypt($plaintext, $result, $key, OPENSSL_NO_PADDING)) { throw new \UnexpectedValueException(openssl_error_string()); }