diff --git a/composer.json b/composer.json index ab63538..676c53f 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,8 @@ }, "require": { "php": ">=5.5", - "symfony/http-foundation": "~2.8|~3.0" + "symfony/http-foundation": "~2.8|~3.0", + "psr/http-message": "^1.0" }, "require-dev": { "phpunit/phpunit": "~4.8", diff --git a/src/Signature.php b/src/Signature.php index f21c7c3..d3f34fd 100644 --- a/src/Signature.php +++ b/src/Signature.php @@ -2,49 +2,37 @@ namespace HttpSignatures; -use Symfony\Component\HttpFoundation\Request; +use Psr\Http\Message\MessageInterface; class Signature { - /** @var Request|SymfonyRequestMessage */ - private $message; - /** @var Key */ private $key; /** @var HmacAlgorithm */ private $algorithm; - /** @var HeaderList */ - private $headerList; + /** @var SigningString */ + private $signingString; /** - * @param Request|SymfonyRequestMessage $message - * @param Key $key - * @param HmacAlgorithm $algorithm - * @param HeaderList $headerList + * @param MessageInterface $message + * @param Key $key + * @param HmacAlgorithm $algorithm + * @param HeaderList $headerList */ public function __construct($message, $key, $algorithm, $headerList) { - $this->message = $message; $this->key = $key; $this->algorithm = $algorithm; - $this->headerList = $headerList; + $this->signingString = new SigningString($headerList, $message); } public function string() { return $this->algorithm->sign( $this->key->secret, - $this->signingString()->string() - ); - } - - private function signingString() - { - return new SigningString( - $this->headerList, - $this->message + $this->signingString->string() ); } } diff --git a/src/Signer.php b/src/Signer.php index f85c8dc..a436d4d 100644 --- a/src/Signer.php +++ b/src/Signer.php @@ -43,11 +43,11 @@ public function sign($message) private function signatureParameters($message) { return new SignatureParameters( - $this->key, - $this->algorithm, - $this->headerList, - $this->signature($message) - ); + $this->key, + $this->algorithm, + $this->headerList, + $this->signature($message) + ); } /** diff --git a/src/SigningString.php b/src/SigningString.php index 2a21917..c13fcf1 100644 --- a/src/SigningString.php +++ b/src/SigningString.php @@ -2,28 +2,25 @@ namespace HttpSignatures; -use Symfony\Component\HttpFoundation\Request; +use Psr\Http\Message\MessageInterface; +use Psr\Http\Message\RequestInterface; class SigningString { /** @var HeaderList */ private $headerList; - /** @var Request|SymfonyRequestMessage */ + /** @var RequestInterface */ private $message; /** - * @param HeaderList $headerList - * @param Request|SymfonyRequestMessage $message + * @param HeaderList $headerList + * @param MessageInterface $message */ public function __construct($headerList, $message) { $this->headerList = $headerList; - if ($message instanceof Request) { - $this->message = new SymfonyRequestMessage($message); - } else { - $this->message = $message; - } + $this->message = $message; } /** @@ -70,9 +67,8 @@ private function line($name) */ private function headerValue($name) { - $headers = $this->message->headers; - if ($headers->has($name)) { - return $headers->get($name); + if ($this->message->hasHeader($name)) { + return $this->message->getHeader($name); } else { throw new SignedHeaderNotPresentException("Header '$name' not in message"); } @@ -95,8 +91,8 @@ private function requestTargetLine() */ private function getPathWithQueryString() { - $path = $this->message->getPathInfo(); - $qs = $this->message->getQueryString(); + $path = $this->message->getUri()->getPath(); + $qs = $this->message->getUri()->getQuery(); if ($qs === null) { return $path; } else { diff --git a/src/Verification.php b/src/Verification.php index e08efb9..b0bd8ff 100644 --- a/src/Verification.php +++ b/src/Verification.php @@ -2,11 +2,11 @@ namespace HttpSignatures; -use Symfony\Component\HttpFoundation\Request; +use Psr\Http\Message\MessageInterface; class Verification { - /** @var Request|SymfonyRequestMessage */ + /** @var MessageInterface */ private $message; /** @var KeyStoreInterface */ @@ -16,10 +16,10 @@ class Verification private $_parameters; /** - * @param Request|SymfonyRequestMessage $message - * @param KeyStoreInterface $keyStore + * @param MessageInterface $message + * @param KeyStoreInterface $keyStore */ - public function __construct($message, KeyStoreInterface $keyStore) + public function __construct($message, $keyStore) { $this->message = $message; $this->keyStore = $keyStore; @@ -147,7 +147,7 @@ private function parameters() */ private function hasSignatureHeader() { - return $this->message->headers->has('Signature') || $this->message->headers->has('Authorization'); + return $this->message->hasHeader('Signature') || $this->message->hasHeader('Authorization'); } /** @@ -173,8 +173,6 @@ private function signatureHeader() */ private function fetchHeader($name) { - $headers = $this->message->headers; - - return $headers->has($name) ? $headers->get($name) : null; + return $this->message->getHeader($name); } } diff --git a/src/Verifier.php b/src/Verifier.php index bcdd678..a764d01 100644 --- a/src/Verifier.php +++ b/src/Verifier.php @@ -2,7 +2,7 @@ namespace HttpSignatures; -use Symfony\Component\HttpFoundation\Request; +use Psr\Http\Message\MessageInterface; class Verifier { @@ -18,8 +18,7 @@ public function __construct(KeyStoreInterface $keyStore) } /** - * @param Request|SymfonyRequestMessage $message - * + * @param MessageInterface $message * @return bool */ public function isValid($message)