Beispiel #1
0
 /**
  *
  * @see \CryptoUtil\Crypto\Crypto::sign()
  */
 public function sign($data, PrivateKeyInfo $privkey_info, SignatureAlgorithmIdentifier $algo)
 {
     $this->_checkSignatureAlgoAndKey($algo, $privkey_info->algorithmIdentifier());
     $result = openssl_sign($data, $signature, $privkey_info->toPEM(), $this->_algoToDigest($algo));
     if (false === $result) {
         throw new \RuntimeException("openssl_sign() failed: " . $this->_getLastError());
     }
     return new Signature($signature);
 }
Beispiel #2
0
 /**
  * Convert JWK to PEM.
  *
  * @return PEM PRIVATE KEY
  */
 public function toPEM()
 {
     $n = $this->modulusParameter()->number()->base10();
     $e = $this->exponentParameter()->number()->base10();
     $d = $this->privateExponentParameter()->number()->base10();
     $p = $this->firstPrimeFactorParameter()->number()->base10();
     $q = $this->secondPrimeFactorParameter()->number()->base10();
     $dp = $this->firstFactorCRTExponentParameter()->number()->base10();
     $dq = $this->secondFactorCRTExponentParameter()->number()->base10();
     $qi = $this->firstCRTCoefficientParameter()->number()->base10();
     $pk = new RSAPrivateKey($n, $e, $d, $p, $q, $dp, $dq, $qi);
     $pki = new PrivateKeyInfo(new RSAEncryptionAlgorithmIdentifier(), $pk->toDER());
     return $pki->toPEM();
 }