public function testReturnsExpectedVerificationResult() { $verificationData = ['summary' => 128, 'fingerprint' => 'foo']; $this->gnupg->verify('foo', 'bar')->willReturn([$verificationData]); $verifier = new GnupgSignatureVerifier($this->gnupg->reveal(), $this->keyservice->reveal()); $actual = $verifier->verify('foo', 'bar'); $expected = new GnupgVerificationResult($verificationData); $this->assertEquals($expected, $actual); }
/** * @param string $message * @param string $signature * * @return GnupgVerificationResult * @throws VerificationFailedException */ public function verify($message, $signature) { try { $result = new GnupgVerificationResult($this->gpg->verify($message, $signature)[0]); if (!$result->wasVerificationSuccessful() && !$result->isKnownKey()) { $this->keyService->importKey($result->getFingerprint(), $this->keyService->downloadKey($result->getFingerprint())); } return new GnupgVerificationResult($this->gpg->verify($message, $signature)[0]); } catch (\Exception $e) { throw new VerificationFailedException($e->getMessage(), $e->getCode(), $e); } }
/** * @return \Gnupg */ private function getGnupg() { $home = $this->getConfig()->getHomeDirectory()->child('gpg'); if (extension_loaded('gnupg')) { putenv('GNUPGHOME=' . $home); $gpg = new \Gnupg(); $gpg->seterrormode(\Gnupg::ERROR_EXCEPTION); } else { $gpg = new GnuPG($this->getConfig()->getGPGBinaryPath(), $home); if (!class_exists('\\Gnupg')) { class_alias(GnuPG::class, '\\Gnupg'); } } return $gpg; }
/** * @param string $key * * @return KeyImportResult|void */ public function importKey($key) { $result = $this->gnupg->import($key); return new KeyImportResult($result['imported'], isset($result['fingerprint']) ? $result['fingerprint'] : null); }