Пример #1
0
 public function testResetWarning()
 {
     openssl_pkey_get_private('test' . rand(), 'test' . rand());
     restore_error_handler();
     @OpenSslException::reset(0);
     $error = error_get_last();
     $this->assertEquals('The OpenSSL error clearing loop has exceeded 0 rounds.', $error['message']);
 }
Пример #2
0
 /**
  * @see VerifyInterface::verify
  */
 public function verify($signature)
 {
     OpenSslException::reset();
     ob_start();
     $result = openssl_verify($this->getData(), @pack('H*', $signature), $this->getKey());
     $error = trim(ob_get_clean());
     if (-1 === $result) {
         throw OpenSslException::lastError();
     } elseif (!empty($error)) {
         throw new OpenSslException($error);
     }
     return 1 === $result;
 }
Пример #3
0
 /**
  * Signs the Phar using a private key.
  *
  * @param string $key      The private key.
  * @param string $password The private key password.
  *
  * @throws Exception\Exception
  * @throws OpenSslException If the "openssl" extension could not be used
  *                          or has generated an error.
  */
 public function sign($key, $password = null)
 {
     OpenSslException::reset();
     if (false === extension_loaded('openssl')) {
         // @codeCoverageIgnoreStart
         throw OpenSslException::create('The "openssl" extension is not available.');
         // @codeCoverageIgnoreEnd
     }
     if (false === ($resource = openssl_pkey_get_private($key, $password))) {
         // @codeCoverageIgnoreStart
         throw OpenSslException::lastError();
         // @codeCoverageIgnoreEnd
     }
     if (false === openssl_pkey_export($resource, $private)) {
         // @codeCoverageIgnoreStart
         throw OpenSslException::lastError();
         // @codeCoverageIgnoreEnd
     }
     if (false === ($details = openssl_pkey_get_details($resource))) {
         // @codeCoverageIgnoreStart
         throw OpenSslException::lastError();
         // @codeCoverageIgnoreEnd
     }
     $this->phar->setSignatureAlgorithm(Phar::OPENSSL, $private);
     if (false === @file_put_contents($this->file . '.pubkey', $details['key'])) {
         throw FileException::lastError();
     }
 }