mirror of
https://github.com/danog/phpseclib.git
synced 2024-12-11 16:49:42 +01: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 TwistedEdwardsCurve) {
|
||||||
if ($this->curve instanceof Ed25519 && self::$engines['libsodium'] && !isset($this->context)) {
|
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;
|
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));
|
$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
|
* Sign with best engine, verify with internal engine
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user