Exemplo n.º 1
0
 /**
  *
  * @see PublicKey::fromPEM()
  * @param PEM $pem
  * @throws \UnexpectedValueException
  * @return self
  */
 public static function fromPEM(PEM $pem)
 {
     if ($pem->type() == PEM::TYPE_RSA_PUBLIC_KEY) {
         return self::fromDER($pem->data());
     }
     if ($pem->type() != PEM::TYPE_PUBLIC_KEY) {
         throw new \UnexpectedValueException("Invalid PEM type.");
     }
     $pki = PublicKeyInfo::fromDER($pem->data());
     if ($pki->algorithmIdentifier()->oid() != AlgorithmIdentifier::OID_RSA_ENCRYPTION) {
         throw new \UnexpectedValueException("Not an RSA public key.");
     }
     return self::fromDER($pki->publicKeyData());
 }
Exemplo n.º 2
0
 /**
  *
  * @see PublicKey::fromPEM()
  * @param PEM $pem
  * @throws \UnexpectedValueException
  * @return self
  */
 public static function fromPEM(PEM $pem)
 {
     if ($pem->type() != PEM::TYPE_PUBLIC_KEY) {
         throw new \UnexpectedValueException("Not a public key.");
     }
     $pki = PublicKeyInfo::fromDER($pem->data());
     $algo = $pki->algorithmIdentifier();
     if ($algo->oid() != AlgorithmIdentifier::OID_EC_PUBLIC_KEY) {
         throw new \UnexpectedValueException("Not an elliptic curve key.");
     }
     // ECPoint is directly mapped into public key data
     return new self($pki->publicKeyData(), $algo->namedCurve());
 }