/** * @dataProvider vectorsP521 * @group large */ public function testP521($k, $x, $y) { $base = new \fpoirotte\Pssht\ECC\Point('0x00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66', '0x011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650'); $expected = new \fpoirotte\Pssht\ECC\Point($x, $y); $actual = $base->multiply(\fpoirotte\Pssht\ECC\Curve::getCurve('nistp521'), $k); $this->assertSame(gmp_strval($expected->x, 16), gmp_strval($actual->x, 16)); $this->assertSame(gmp_strval($expected->y, 16), gmp_strval($actual->y, 16)); }
protected function createResponse(\fpoirotte\Pssht\Wire\Decoder $decoder, \fpoirotte\Pssht\Transport $transport, array &$context, $hostAlgo) { $kexAlgo = $context['kexAlgo']; $kexAlgo = new $kexAlgo(); $curveName = str_replace('ecdh-sha2-', '', $kexAlgo::getName()); $cls = str_replace('nist', 'NIST', $curveName); $cls = "\\fpoirotte\\Pssht\\Messages\\KEX\\ECDH\\INIT\\{$cls}"; $message = $cls::unserialize($decoder); $curve = \fpoirotte\Pssht\ECC\Curve::getCurve($curveName); return new \fpoirotte\Pssht\Messages\KEX\ECDH\REPLY\RFC5656($curve, $message, $context['serverKeys'][$hostAlgo], $transport->getEncryptor(), $kexAlgo, $context['kex']['server'], $context['kex']['client'], $context['identity']['server'], $context['identity']['client']); }
public static function getCurve() { return \fpoirotte\Pssht\ECC\Curve::getCurve('nistp521'); }