public function format(PublicKeyInterface $key) { if (!$key->getCurve() instanceof NamedCurveFp) { throw new \RuntimeException('Not implemented for unnamed curves'); } $sequence = new Sequence(new Sequence(new ObjectIdentifier(DerPublicKeySerializer::X509_ECDSA_OID), CurveOidMapper::getCurveOid($key->getCurve())), new BitString($this->encodePoint($key->getPoint()))); return $sequence->getBinary(); }
/** * @param NamedCurveFp $curve * @param PublicKeyInterface $publicKey * @return Sequence */ public function getSubjectKeyASN(NamedCurveFp $curve, PublicKeyInterface $publicKey) { return new Sequence(new Sequence(new ObjectIdentifier(CertificateSerializer::ECPUBKEY_OID), CurveOidMapper::getCurveOid($curve)), new BitString($this->pubKeySer->getUncompressedKey($publicKey))); }
/** * @param NamedCurveFp $curve * @param PublicKeyInterface $publicKey * @return Sequence */ public function getSubjectKeyASN(NamedCurveFp $curve, PublicKeyInterface $publicKey) { return new Sequence(new Sequence(new ObjectIdentifier('1.2.840.10045.2.1'), CurveOidMapper::getCurveOid($curve)), new BitString($this->pubKeySer->getUncompressedKey($publicKey))); }
/** * @param NamedCurveFp $c * @return string */ public function serialize(NamedCurveFp $c) { $oid = CurveOidMapper::getCurveOid($c); $content = self::HEADER . PHP_EOL . base64_encode($oid->getBinary()) . PHP_EOL . self::FOOTER; return $content; }
/** * {@inheritDoc} * @see \Mdanter\Ecc\Serializer\PrivateKeySerializerInterface::serialize() */ public function serialize(PrivateKeyInterface $key) { $privateKeyInfo = new Sequence(new Integer(self::VERSION), new OctetString($this->formatKey($key)), new ExplicitlyTaggedObject(0, CurveOidMapper::getCurveOid($key->getPoint()->getCurve())), new ExplicitlyTaggedObject(1, $this->encodePubKey($key))); return $privateKeyInfo->getBinary(); }
/** * {@inheritDoc} * @see \Mdanter\Ecc\Serializer\PrivateKeySerializerInterface::serialize() */ public function getPrivateKeyInfo(PrivateKeyInterface $key) { $keyData = $this->serializer->serialize($key); $privateKeyInfo = new Sequence(new Integer(self::VERSION), new Sequence(new ObjectIdentifier(DerPublicKeySerializer::X509_ECDSA_OID), CurveOidMapper::getCurveOid($key->getPoint()->getCurve())), new OctetString(bin2hex($keyData))); return $privateKeyInfo; }