<?php
declare(strict_types=1);
namespace ParagonIE\EasyECC\Tests;
use FG\ASN1\Exception\ParserException;
use ParagonIE\EasyECC\EasyECC;
use PHPUnit\Framework\TestCase;
/**
* Class P384Test
* @package ParagonIE\EasyECC\Tests
*/
class P384Test extends TestCase
{
/** @var EasyECC */
protected $ecc;
/**
* @throws \ParagonIE\EasyECC\Exception\ConfigException
*/
public function setUp(): void
{
$this->ecc = new EasyECC('P384');
}
/**
* @throws \SodiumException
* @throws \TypeError
*/
public function testKeyExchange()
{
$alice_sk = $this->ecc->generatePrivateKey();
$alice_pk = $alice_sk->getPublicKey();
$bob_sk = $this->ecc->generatePrivateKey();
$bob_pk = $bob_sk->getPublicKey();
$alice_to_bob = $this->ecc->keyExchange($alice_sk, $bob_pk, false);
$bob_to_alice = $this->ecc->keyExchange($bob_sk, $alice_pk, true);
$alice_to_bob2 = $this->ecc->keyExchange($alice_sk, $bob_pk, true);
$bob_to_alice2 = $this->ecc->keyExchange($bob_sk, $alice_pk, false);
$this->assertSame($alice_to_bob, $bob_to_alice);
$this->assertSame($alice_to_bob2, $bob_to_alice2);
$this->assertNotSame($alice_to_bob, $bob_to_alice2);
$this->assertNotSame($alice_to_bob2, $bob_to_alice);
}
/**
* @throws \SodiumException
* @throws \TypeError
*/
public function testScalarMult()
{
$alice_sk = $this->ecc->generatePrivateKey();
$alice_pk = $alice_sk->getPublicKey();
$bob_sk = $this->ecc->generatePrivateKey();
$bob_pk = $bob_sk->getPublicKey();
$alice_to_bob = $this->ecc->scalarmult($alice_sk, $bob_pk);
$bob_to_alice = $this->ecc->scalarmult($bob_sk, $alice_pk);
$this->assertSame($alice_to_bob, $bob_to_alice);
}
/**
* @throws ParserException
* @throws \SodiumException
* @throws \TypeError
*/
public function testSign()
{
$sk = $this->ecc->generatePrivateKey();
$pk = $sk->getPublicKey();
$message = 'sample';
$sig = $this->ecc->sign($message, $sk);
$this->assertTrue($this->ecc->verify($message, $pk, $sig));
$this->assertFalse($this->ecc->verify('samplf', $pk, $sig));
}
}
|