mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-12-28 12:10:59 +00:00
Merge pull request #1752 from Slamdunk/ec_sign_without_password
EC: decipher private key to generate signature
This commit is contained in:
commit
dbe7daff1d
@ -106,7 +106,7 @@ class PrivateKey extends EC implements Common\PrivateKey
|
||||
|
||||
if ($this->curve instanceof TwistedEdwardsCurve) {
|
||||
if ($this->curve instanceof Ed25519 && self::$engines['libsodium'] && !isset($this->context)) {
|
||||
$result = sodium_crypto_sign_detached($message, $this->toString('libsodium'));
|
||||
$result = sodium_crypto_sign_detached($message, $this->withPassword(false)->toString('libsodium'));
|
||||
return $shortFormat == 'SSH2' ? Strings::packSSH2('ss', 'ssh-' . strtolower($this->getCurve()), $result) : $result;
|
||||
}
|
||||
|
||||
|
@ -190,6 +190,19 @@ class Unit_Crypt_EC_CurveTest extends PhpseclibTestCase
|
||||
$this->assertTrue($publickey->verify($plaintext, $sig));
|
||||
}
|
||||
|
||||
public function testCanSignWithAnEncryptedPrivateKey()
|
||||
{
|
||||
EC::useBestEngine();
|
||||
|
||||
$plaintext = 'zzz';
|
||||
|
||||
$privatekey = EC::createKey('Ed25519')->withPassword('foo');
|
||||
$publickey = $privatekey->getPublicKey();
|
||||
$sig = $privatekey->sign($plaintext);
|
||||
|
||||
$this->assertTrue($publickey->verify($plaintext, $sig));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sign with best engine, verify with internal engine
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user