/** * 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); }
/** * @group ZF-8846 */ public function testLoadsPublicKeyFromPEMWithoutPrivateKeyAndThrowsNoException() { $rsa = new RSA(); $rsa->setPemString($this->_testPemStringPublic); }