<?php
namespace Mdanter\Ecc\Tests\Serializer\PrivateKey;
use Mdanter\Ecc\Crypto\Key\PrivateKey;
use Mdanter\Ecc\EccFactory;
use Mdanter\Ecc\Serializer\PrivateKey\DerPrivateKeySerializer;
use Mdanter\Ecc\Serializer\PrivateKey\PemPrivateKeySerializer;
use Mdanter\Ecc\Tests\AbstractTestCase;
class PemPrivateKeySerializerTest extends AbstractTestCase
{
public function testReadsDer()
{
$der = file_get_contents(__DIR__ . "/../../../data/openssl-priv.pem");
$adapter = EccFactory::getAdapter();
$derSerializer = new DerPrivateKeySerializer($adapter);
$pemSerializer = new PemPrivateKeySerializer($derSerializer);
$key = $pemSerializer->parse($der);
$this->assertInstanceOf(PrivateKey::class, $key);
}
public function testConsistent()
{
$adapter = EccFactory::getAdapter();
$G = EccFactory::getNistCurves($adapter)->generator192();
$key = $G->createPrivateKey();
$derPrivSerializer = new DerPrivateKeySerializer($adapter);
$pemSerializer = new PemPrivateKeySerializer($derPrivSerializer);
$serialized = $pemSerializer ->serialize($key);
$parsed = $pemSerializer ->parse($serialized);
$this->assertTrue($adapter->equals($parsed->getSecret(), $key->getSecret()));
}
}