diff options
Diffstat (limited to 'Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Auth/AssertionCredentials.php')
-rw-r--r-- | Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Auth/AssertionCredentials.php | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Auth/AssertionCredentials.php b/Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Auth/AssertionCredentials.php deleted file mode 100644 index 725e7c2..0000000 --- a/Postman/Postman-Mail/google-api-php-client-1.1.2/src/Google/Auth/AssertionCredentials.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -require_once realpath(dirname(__FILE__) . '/../../../autoload.php'); - -/** - * Credentials object used for OAuth 2.0 Signed JWT assertion grants. - * - * @author Chirag Shah <chirags@google.com> - */ -class Postman_Google_Auth_AssertionCredentials -{ - const MAX_TOKEN_LIFETIME_SECS = 3600; - - public $serviceAccountName; - public $scopes; - public $privateKey; - public $privateKeyPassword; - public $assertionType; - public $sub; - /** - * @deprecated - * @link http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-06 - */ - public $prn; - private $useCache; - - /** - * @param $serviceAccountName - * @param $scopes array List of scopes - * @param $privateKey - * @param string $privateKeyPassword - * @param string $assertionType - * @param bool|string $sub The email address of the user for which the - * application is requesting delegated access. - * @param bool useCache Whether to generate a cache key and allow - * automatic caching of the generated token. - */ - public function __construct( - $serviceAccountName, - $scopes, - $privateKey, - $privateKeyPassword = 'notasecret', - $assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer', - $sub = false, - $useCache = true - ) { - $this->serviceAccountName = $serviceAccountName; - $this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes); - $this->privateKey = $privateKey; - $this->privateKeyPassword = $privateKeyPassword; - $this->assertionType = $assertionType; - $this->sub = $sub; - $this->prn = $sub; - $this->useCache = $useCache; - } - - /** - * Generate a unique key to represent this credential. - * @return string - */ - public function getCacheKey() - { - if (!$this->useCache) { - return false; - } - $h = $this->sub; - $h .= $this->assertionType; - $h .= $this->privateKey; - $h .= $this->scopes; - $h .= $this->serviceAccountName; - return md5($h); - } - - public function generateAssertion() - { - $now = time(); - - $jwtParams = array( - 'aud' => Postman_Google_Auth_OAuth2::OAUTH2_TOKEN_URI, - 'scope' => $this->scopes, - 'iat' => $now, - 'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS, - 'iss' => $this->serviceAccountName, - ); - - if ($this->sub !== false) { - $jwtParams['sub'] = $this->sub; - } else if ($this->prn !== false) { - $jwtParams['prn'] = $this->prn; - } - - return $this->makeSignedJwt($jwtParams); - } - - /** - * Creates a signed JWT. - * @param array $payload - * @return string The signed JWT. - */ - private function makeSignedJwt($payload) - { - $header = array('typ' => 'JWT', 'alg' => 'RS256'); - - $payload = json_encode($payload); - // Handle some overzealous escaping in PHP json that seemed to cause some errors - // with claimsets. - $payload = str_replace('\/', '/', $payload); - - $segments = array( - Postman_Google_Utils::urlSafeB64Encode(json_encode($header)), - Postman_Google_Utils::urlSafeB64Encode($payload) - ); - - $signingInput = implode('.', $segments); - $signer = new Postman_Google_Signer_P12($this->privateKey, $this->privateKeyPassword); - $signature = $signer->sign($signingInput); - $segments[] = Postman_Google_Utils::urlSafeB64Encode($signature); - - return implode(".", $segments); - } -} |