Пример #1
0
 /**
  * Sign a request
  * 
  * @param  array $params 
  * @param  null|string $method 
  * @param  null|string $url 
  * @return string
  */
 public function sign(array $params, $method = null, $url = null)
 {
     $rsa = new RSAEncryption();
     $rsa->setHashAlgorithm($this->_hashAlgorithm);
     $sign = $rsa->sign($this->_getBaseSignatureString($params, $method, $url), $this->_key, RSAEncryption::BASE64);
     return $sign;
 }
 /**
  * Decrypt using a private key
  *
  * @param string $msg
  * @param string $privateKey
  * @param string $passPhrase
  * @param string $id
  * @return string
  * @throws RuntimeException
  */
 public function decrypt($msg, $privateKey = null, $passPhrase = null, $id = null)
 {
     // get the session key
     list($encKeys, $ciphertext) = explode(';', $msg, 2);
     $keys = explode(':', $encKeys);
     $pos = array_search(base64_encode($id), $keys);
     if (false === $pos) {
         throw new Exception\RuntimeException("This private key cannot be used for decryption");
     }
     if (!$privateKey instanceof PrivateKey && !is_string($privateKey)) {
         throw new Exception\RuntimeException(sprintf("The private key must be a string in PEM format or an instance of %s", PrivateKey::class));
     }
     $privateKey = is_string($privateKey) ? new PrivateKey($privateKey, $passPhrase) : $privateKey;
     // decrypt the session key with privateKey
     $sessionKey = $this->rsa->decrypt(base64_decode($keys[$pos + 1]), $privateKey);
     // decrypt the plaintext with the blockcipher algorithm
     $this->bCipher->setKey($sessionKey);
     return $this->bCipher->decrypt($ciphertext, $sessionKey);
 }
Пример #3
0
 /**
  * @group ZF-8846
  */
 public function testLoadsPublicKeyFromPEMWithoutPrivateKeyAndThrowsNoException()
 {
     $rsa = new RSA();
     $rsa->setPemString($this->_testPemStringPublic);
 }