Change all references to consumer to client, as per RFC 5849.
This commit is contained in:
		| @@ -1,10 +1,10 @@ | ||||
| <?php | ||||
| namespace GaryJones\OAuth; | ||||
| 
 | ||||
| class Consumer | ||||
| class Client | ||||
| { | ||||
|     public $key; | ||||
|     public $secret; | ||||
|     protected $key; | ||||
|     protected $secret; | ||||
| 
 | ||||
|     public function __construct($key, $secret, $callback_url = null) | ||||
|     { | ||||
| @@ -13,8 +13,18 @@ public function __construct($key, $secret, $callback_url = null) | ||||
|         $this->callback_url = $callback_url; | ||||
|     } | ||||
| 
 | ||||
|     public function getKey() | ||||
|     { | ||||
|         return $this->key; | ||||
|     } | ||||
| 
 | ||||
|     public function getSecret() | ||||
|     { | ||||
|         return $this->secret; | ||||
|     } | ||||
| 
 | ||||
|     public function __toString() | ||||
|     { | ||||
|         return "OAuthConsumer[key=$this->key,secret=$this->secret]"; | ||||
|         return "OAuthClient[key=$this->key,secret=$this->secret]"; | ||||
|     } | ||||
| } | ||||
| @@ -15,14 +15,14 @@ public function getName() | ||||
|         return 'HMAC-SHA1'; | ||||
|     } | ||||
|  | ||||
|     public function buildSignature($request, $consumer, $token) | ||||
|     public function buildSignature($request, $client, $token) | ||||
|     { | ||||
|         $base_string = $request->getSignatureBaseString(); | ||||
|         $request->base_string = $base_string; | ||||
|  | ||||
|         $key_parts = array( | ||||
|             $consumer->secret, | ||||
|             ($token) ? $token->secret : '' | ||||
|             $client->getSecret(), | ||||
|             ($token) ? $token->getSecret() : '' | ||||
|         ); | ||||
|  | ||||
|         $key_parts = Util::urlencodeRfc3986($key_parts); | ||||
|   | ||||
| @@ -12,28 +12,28 @@ public function lookupClient($client_key); | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param type $consumer | ||||
|      * @param type $client | ||||
|      * @param type $token_type | ||||
|      * @param type $token | ||||
|      */ | ||||
|     public function lookupToken($consumer, $token_type, $token); | ||||
|     public function lookupToken($client, $token_type, $token); | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param type $consumer | ||||
|      * @param type $client | ||||
|      * @param type $token | ||||
|      * @param type $nonce | ||||
|      * @param type $timestamp | ||||
|      */ | ||||
|     public function lookupNonce($consumer, $token, $nonce, $timestamp); | ||||
|     public function lookupNonce($client, $token, $nonce, $timestamp); | ||||
|  | ||||
|     /** | ||||
|      * Return a new token attached to this consumer. | ||||
|      * | ||||
|      * @param type $consumer | ||||
|      * @param type $client | ||||
|      * @param type $callback | ||||
|      */ | ||||
|     public function newRequestToken($consumer, $callback = null); | ||||
|     public function newRequestToken($client, $callback = null); | ||||
|  | ||||
|     /** | ||||
|      * Return a new access token attached to this consumer for the user | ||||
| @@ -42,8 +42,8 @@ public function newRequestToken($consumer, $callback = null); | ||||
|      * Should also invalidate the request token. | ||||
|      * | ||||
|      * @param type $token | ||||
|      * @param type $consumer | ||||
|      * @param type $client | ||||
|      * @param type $verifier | ||||
|      */ | ||||
|     public function newAccessToken($token, $consumer, $verifier = null); | ||||
|     public function newAccessToken($token, $client, $verifier = null); | ||||
| } | ||||
|   | ||||
| @@ -72,15 +72,15 @@ public static function fromRequest($http_method = null, $http_url = null, $param | ||||
|     /** | ||||
|      * pretty much a helper function to set up the request | ||||
|      */ | ||||
|     public static function fromConsumerAndToken($consumer, $token, $http_method, $http_url, $parameters = null) | ||||
|     public static function fromClientAndToken($client, $token, $http_method, $http_url, $parameters = null) | ||||
|     { | ||||
|         $parameters = ($parameters) ? $parameters : array(); | ||||
|         $defaults = array("oauth_version" => OAuthRequest::$version, | ||||
|             "oauth_nonce" => OAuthRequest::generateNonce(), | ||||
|             "oauth_timestamp" => OAuthRequest::generateTimestamp(), | ||||
|             "oauth_consumer_key" => $consumer->key); | ||||
|             "oauth_consumer_key" => $client->getKey()); | ||||
|         if ($token) { | ||||
|             $defaults['oauth_token'] = $token->key; | ||||
|             $defaults['oauth_token'] = $token->getKey(); | ||||
|         } | ||||
|  | ||||
|         $parameters = array_merge($defaults, $parameters); | ||||
| @@ -250,16 +250,16 @@ public function __toString() | ||||
|         return $this->toUrl(); | ||||
|     } | ||||
|  | ||||
|     public function signRequest($signature_method, $consumer, $token) | ||||
|     public function signRequest($signature_method, $client, $token) | ||||
|     { | ||||
|         $this->setParameter('oauth_signature_method', $signature_method->getName(), false); | ||||
|         $signature = $this->buildSignature($signature_method, $consumer, $token); | ||||
|         $signature = $this->buildSignature($signature_method, $client, $token); | ||||
|         $this->setParameter('oauth_signature', $signature, false); | ||||
|     } | ||||
|  | ||||
|     public function buildSignature($signature_method, $consumer, $token) | ||||
|     public function buildSignature($signature_method, $client, $token) | ||||
|     { | ||||
|         $signature = $signature_method->buildSignature($this, $consumer, $token); | ||||
|         $signature = $signature_method->buildSignature($this, $client, $token); | ||||
|         return $signature; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -29,16 +29,16 @@ public function fetchRequestToken(&$request) | ||||
|     { | ||||
|         $this->getVersion($request); | ||||
|  | ||||
|         $consumer = $this->getConsumer($request); | ||||
|         $client = $this->getClient($request); | ||||
|  | ||||
|         // no token required for the initial token request | ||||
|         $token = null; | ||||
|  | ||||
|         $this->checkSignature($request, $consumer, $token); | ||||
|         $this->checkSignature($request, $client, $token); | ||||
|  | ||||
|         // Rev A change | ||||
|         $callback = $request->getParameter('oauth_callback'); | ||||
|         $new_token = $this->data_store->newRequestToken($consumer, $callback); | ||||
|         $new_token = $this->data_store->newRequestToken($client, $callback); | ||||
|  | ||||
|         return $new_token; | ||||
|     } | ||||
| @@ -51,16 +51,16 @@ public function fetchAccessToken(&$request) | ||||
|     { | ||||
|         $this->getVersion($request); | ||||
|  | ||||
|         $consumer = $this->getConsumer($request); | ||||
|         $client = $this->getClient($request); | ||||
|  | ||||
|         // requires authorized request token | ||||
|         $token = $this->getToken($request, $consumer, 'request'); | ||||
|         $token = $this->getToken($request, $client, 'request'); | ||||
|  | ||||
|         $this->checkSignature($request, $consumer, $token); | ||||
|         $this->checkSignature($request, $client, $token); | ||||
|  | ||||
|         // Rev A change | ||||
|         $verifier = $request->getParameter('oauth_verifier'); | ||||
|         $new_token = $this->data_store->newAccessToken($token, $consumer, $verifier); | ||||
|         $new_token = $this->data_store->newAccessToken($token, $client, $verifier); | ||||
|  | ||||
|         return $new_token; | ||||
|     } | ||||
| @@ -71,10 +71,10 @@ public function fetchAccessToken(&$request) | ||||
|     public function verifyRequest(&$request) | ||||
|     { | ||||
|         $this->getVersion($request); | ||||
|         $consumer = $this->getConsumer($request); | ||||
|         $token = $this->getToken($request, $consumer, 'access'); | ||||
|         $this->checkSignature($request, $consumer, $token); | ||||
|         return array($consumer, $token); | ||||
|         $client = $this->getClient($request); | ||||
|         $token = $this->getToken($request, $client, 'access'); | ||||
|         $this->checkSignature($request, $client, $token); | ||||
|         return array($client, $token); | ||||
|     } | ||||
|  | ||||
|     // Internals from here | ||||
| @@ -118,32 +118,32 @@ private function getSignatureMethod($request) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * try to find the consumer for the provided request's consumer key | ||||
|      * try to find the client for the provided request's client key | ||||
|      */ | ||||
|     private function getConsumer($request) | ||||
|     private function getClient($request) | ||||
|     { | ||||
|         $consumer_key = $request instanceof OAuthRequest ? $request->getParameter('oauth_consumer_key') : null; | ||||
|         $client_key = $request instanceof OAuthRequest ? $request->getParameter('oauth_consumer_key') : null; | ||||
|  | ||||
|         if (!$consumer_key) { | ||||
|             throw new OAuthException('Invalid consumer key'); | ||||
|         if (!$client_key) { | ||||
|             throw new OAuthException('Invalid client key'); | ||||
|         } | ||||
|  | ||||
|         $consumer = $this->data_store->lookupClient($consumer_key); | ||||
|         if (!$consumer) { | ||||
|             throw new OAuthException('Invalid consumer'); | ||||
|         $client = $this->data_store->lookupClient($client_key); | ||||
|         if (!$client) { | ||||
|             throw new OAuthException('Invalid client'); | ||||
|         } | ||||
|  | ||||
|         return $consumer; | ||||
|         return $client; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * try to find the token for the provided request's token key | ||||
|      */ | ||||
|     private function getToken($request, $consumer, $token_type = 'access') | ||||
|     private function getToken($request, $client, $token_type = 'access') | ||||
|     { | ||||
|         $token_field = $request instanceof OAuthRequest ? $request->getParameter('oauth_token') : null; | ||||
|  | ||||
|         $token = $this->data_store->lookupToken($consumer, $token_type, $token_field); | ||||
|         $token = $this->data_store->lookupToken($client, $token_type, $token_field); | ||||
|         if (!$token) { | ||||
|             throw new OAuthException("Invalid $token_type token: $token_field"); | ||||
|         } | ||||
| @@ -154,19 +154,19 @@ private function getToken($request, $consumer, $token_type = 'access') | ||||
|      * all-in-one function to check the signature on a request | ||||
|      * should guess the signature method appropriately | ||||
|      */ | ||||
|     private function checkSignature($request, $consumer, $token) | ||||
|     private function checkSignature($request, $client, $token) | ||||
|     { | ||||
|         // this should probably be in a different method | ||||
|         $timestamp = $request instanceof OAuthRequest ? $request->getParameter('oauth_timestamp') : null; | ||||
|         $nonce = $request instanceof OAuthRequest ? $request->getParameter('oauth_nonce') : null; | ||||
|  | ||||
|         $this->checkTimestamp($timestamp); | ||||
|         $this->checkNonce($consumer, $token, $nonce, $timestamp); | ||||
|         $this->checkNonce($client, $token, $nonce, $timestamp); | ||||
|  | ||||
|         $signature_method = $this->getSignatureMethod($request); | ||||
|  | ||||
|         $signature = $request->getParameter('oauth_signature'); | ||||
|         $valid_sig = $signature_method->checkSignature($request, $consumer, $token, $signature); | ||||
|         $valid_sig = $signature_method->checkSignature($request, $client, $token, $signature); | ||||
|  | ||||
|         if (!$valid_sig) { | ||||
|             throw new OAuthException('Invalid signature'); | ||||
| @@ -192,14 +192,14 @@ private function checkTimestamp($timestamp) | ||||
|     /** | ||||
|      * check that the nonce is not repeated | ||||
|      */ | ||||
|     private function checkNonce($consumer, $token, $nonce, $timestamp) | ||||
|     private function checkNonce($client, $token, $nonce, $timestamp) | ||||
|     { | ||||
|         if (!$nonce) { | ||||
|             throw new OAuthException('Missing nonce parameter. The parameter is required'); | ||||
|         } | ||||
|  | ||||
|         // verify that the nonce is uniqueish | ||||
|         $found = $this->data_store->lookupNonce($consumer, $token, $nonce, $timestamp); | ||||
|         $found = $this->data_store->lookupNonce($client, $token, $nonce, $timestamp); | ||||
|         if ($found) { | ||||
|             throw new OAuthException('Nonce already used: ' . $nonce); | ||||
|         } | ||||
|   | ||||
| @@ -14,7 +14,7 @@ public function getName() | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * oauth_signature is set to the concatenated encoded values of the Consumer Secret and | ||||
|      * oauth_signature is set to the concatenated encoded values of the Client Secret and | ||||
|      * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is | ||||
|      * empty. The result MUST be encoded again. | ||||
|      *   - Chapter 9.4.1 ("Generating Signatures") | ||||
| @@ -22,11 +22,11 @@ public function getName() | ||||
|      * Please note that the second encoding MUST NOT happen in the SignatureMethod, as | ||||
|      * OAuthRequest handles this! | ||||
|      */ | ||||
|     public function buildSignature($request, $consumer, $token) | ||||
|     public function buildSignature($request, $client, $token) | ||||
|     { | ||||
|         $key_parts = array( | ||||
|             $consumer->secret, | ||||
|             ($token) ? $token->secret : '' | ||||
|             $client->getSecret(), | ||||
|             ($token) ? $token->getSecret() : '' | ||||
|         ); | ||||
|  | ||||
|         $key_parts = Util::urlencodeRfc3986($key_parts); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| /** | ||||
|  * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in | ||||
|  * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for | ||||
|  * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a | ||||
|  * EMSA-PKCS1-v1_5. It is assumed that the Client has provided its RSA public key in a | ||||
|  * verified way to the Service Provider, in a manner which is beyond the scope of this | ||||
|  * specification. | ||||
|  *   - Chapter 9.3 ("RSA-SHA1") | ||||
| @@ -17,7 +17,7 @@ public function getName() | ||||
|     } | ||||
|  | ||||
|     // Up to the SP to implement this lookup of keys. Possible ideas are: | ||||
|     // (1) do a lookup in a table of trusted certs keyed off of consumer | ||||
|     // (1) do a lookup in a table of trusted certs keyed off of client | ||||
|     // (2) fetch via http using a url provided by the requester | ||||
|     // (3) some sort of specific discovery code based on request | ||||
|     // | ||||
| @@ -25,12 +25,12 @@ public function getName() | ||||
|     abstract protected function fetchPublicCert(&$request); | ||||
|  | ||||
|     // Up to the SP to implement this lookup of keys. Possible ideas are: | ||||
|     // (1) do a lookup in a table of trusted certs keyed off of consumer | ||||
|     // (1) do a lookup in a table of trusted certs keyed off of client | ||||
|     // | ||||
|     // Either way should return a string representation of the certificate | ||||
|     abstract protected function fetchPrivateCert(&$request); | ||||
|  | ||||
|     public function buildSignature($request, $consumer, $token) | ||||
|     public function buildSignature($request, $client, $token) | ||||
|     { | ||||
|         $base_string = $request->getSignatureBaseString(); | ||||
|         $request->base_string = $base_string; | ||||
| @@ -50,7 +50,7 @@ public function buildSignature($request, $consumer, $token) | ||||
|         return base64_encode($signature); | ||||
|     } | ||||
|  | ||||
|     public function checkSignature($request, $consumer, $token, $signature) | ||||
|     public function checkSignature($request, $client, $token, $signature) | ||||
|     { | ||||
|         $decoded_sig = base64_decode($signature); | ||||
|  | ||||
|   | ||||
| @@ -14,28 +14,31 @@ abstract class SignatureMethod | ||||
|     abstract public function getName(); | ||||
|  | ||||
|     /** | ||||
|      * Build up the signature | ||||
|      * Build up the signature. | ||||
|      * | ||||
|      * NOTE: The output of this function MUST NOT be urlencoded. | ||||
|      * the encoding is handled in OAuthRequest when the final | ||||
|      * request is serialized | ||||
|      * @param OAuthRequest $request | ||||
|      * @param OAuthConsumer $consumer | ||||
|      * @param OAuthToken $token | ||||
|      * request is serialized. | ||||
|      * | ||||
|      * @param GaryJones\OAuth\OAuthRequest $request | ||||
|      * @param GaryJones\OAuth\Client $client | ||||
|      * @param GaryJones\OAuth\Token $token | ||||
|      * @return string | ||||
|      */ | ||||
|     abstract public function buildSignature($request, $consumer, $token); | ||||
|     abstract public function buildSignature($request, $client, $token); | ||||
|  | ||||
|     /** | ||||
|      * Verifies that a given signature is correct | ||||
|      * @param OAuthRequest $request | ||||
|      * @param OAuthConsumer $consumer | ||||
|      * @param OAuthToken $token | ||||
|      * Verifies that a given signature is correct. | ||||
|      * | ||||
|      * @param GaryJones\OAuth\OAuthRequest $request | ||||
|      * @param GaryJones\OAuth\Consumer $client | ||||
|      * @param GaryJones\OAuth\Token $token | ||||
|      * @param string $signature | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function checkSignature($request, $consumer, $token, $signature) | ||||
|     public function checkSignature($request, $client, $token, $signature) | ||||
|     { | ||||
|         $built = $this->buildSignature($request, $consumer, $token); | ||||
|         $built = $this->buildSignature($request, $client, $token); | ||||
|         return $built == $signature; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -4,8 +4,8 @@ | ||||
| class Token | ||||
| { | ||||
|     // access tokens and request tokens | ||||
|     public $key; | ||||
|     public $secret; | ||||
|     protected $key; | ||||
|     protected $secret; | ||||
|  | ||||
|     /** | ||||
|      * key = the token | ||||
| @@ -17,6 +17,16 @@ public function __construct($key, $secret) | ||||
|         $this->secret = $secret; | ||||
|     } | ||||
|  | ||||
|     public function getKey() | ||||
|     { | ||||
|         return $this->key; | ||||
|     } | ||||
|  | ||||
|     public function getSecret() | ||||
|     { | ||||
|         return $this->secret; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * generates the basic string serialization of a token that a server | ||||
|      * would respond to request_token and access_token calls with | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Gary Jones
					Gary Jones