diff --git a/phpseclib/Crypt/DSA/Formats/Keys/PKCS8.php b/phpseclib/Crypt/DSA/Formats/Keys/PKCS8.php index ab58c698..ff270595 100644 --- a/phpseclib/Crypt/DSA/Formats/Keys/PKCS8.php +++ b/phpseclib/Crypt/DSA/Formats/Keys/PKCS8.php @@ -141,7 +141,7 @@ abstract class PKCS8 extends Progenitor $params = ASN1::encodeDER($params, Maps\DSAParams::MAP); $params = new ASN1\Element($params); $key = ASN1::encodeDER($x, Maps\DSAPublicKey::MAP); - return self::wrapPrivateKey($key, [], $params, $password, $options); + return self::wrapPrivateKey($key, [], $params, $password, null, '', $options); } /** diff --git a/phpseclib/Crypt/RSA/Formats/Keys/PKCS8.php b/phpseclib/Crypt/RSA/Formats/Keys/PKCS8.php index 0bbdfe6e..206edccd 100644 --- a/phpseclib/Crypt/RSA/Formats/Keys/PKCS8.php +++ b/phpseclib/Crypt/RSA/Formats/Keys/PKCS8.php @@ -128,7 +128,7 @@ abstract class PKCS8 extends Progenitor { $key = PKCS1::savePrivateKey($n, $e, $d, $primes, $exponents, $coefficients); $key = ASN1::extractBER($key); - return self::wrapPrivateKey($key, [], null, $password, $options); + return self::wrapPrivateKey($key, [], null, $password, null, '', $options); } /** diff --git a/phpseclib/Crypt/RSA/Formats/Keys/PSS.php b/phpseclib/Crypt/RSA/Formats/Keys/PSS.php index be7224e5..544ae845 100644 --- a/phpseclib/Crypt/RSA/Formats/Keys/PSS.php +++ b/phpseclib/Crypt/RSA/Formats/Keys/PSS.php @@ -181,7 +181,7 @@ abstract class PSS extends Progenitor $key = PKCS1::savePrivateKey($n, $e, $d, $primes, $exponents, $coefficients); $key = ASN1::extractBER($key); $params = self::savePSSParams($options); - return self::wrapPrivateKey($key, [], $params, $password, $options); + return self::wrapPrivateKey($key, [], $params, $password, null, '', $options); } /** diff --git a/tests/Unit/Crypt/RSA/CreateKeyTest.php b/tests/Unit/Crypt/RSA/CreateKeyTest.php index b6c030be..fe3f59ef 100644 --- a/tests/Unit/Crypt/RSA/CreateKeyTest.php +++ b/tests/Unit/Crypt/RSA/CreateKeyTest.php @@ -8,6 +8,7 @@ use phpseclib3\Crypt\RSA; use phpseclib3\Crypt\RSA\Formats\Keys\PKCS1; +use phpseclib3\Crypt\RSA\Formats\Keys\PKCS8; use phpseclib3\Crypt\RSA\PrivateKey; use phpseclib3\Crypt\RSA\PublicKey; @@ -66,4 +67,13 @@ class Unit_Crypt_RSA_CreateKeyTestRSA extends PhpseclibTestCase RSA::useBestEngine(); } + + public function test3DESPKCS8Encryption() + { + $key = RSA::createKey(768) + ->withPassword('demo') + ->toString('PKCS8', ['encryptionAlgorithm' => 'pbeWithSHAAnd3-KeyTripleDES-CBC']); + $actual = PKCS8::extractEncryptionAlgorithm($key)['algorithm']; + $this->assertSame($actual, 'pbeWithSHAAnd3-KeyTripleDES-CBC'); + } }