PluginProbe
Authorizer / 3.14.2
Authorizer v3.14.2
3.15.3 3.15.2 3.15.1 3.15.0 3.14.3 3.14.4 3.14.2 3.14.1 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.9.0 2.9.1 2.9.10 2.9.11 2.9.12 2.9.13 2.9.2 2.9.3 2.9.6 All 126 releases
authorizer / vendor / google / auth / src / IamSignerTrait.php

IamSignerTrait.php in Authorizer 3.14.2, at vendor/google/auth/src/IamSignerTrait.php

73 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * Copyright 2022 Google Inc.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 namespace Google\Auth;
20
21 use Exception;
22 use Google\Auth\HttpHandler\HttpClientCache;
23 use Google\Auth\HttpHandler\HttpHandlerFactory;
24
25 trait IamSignerTrait
26 {
27 /**
28 * @var Iam|null
29 */
30 private $iam;
31
32 /**
33 * Sign a string using the default service account private key.
34 *
35 * This implementation uses IAM's signBlob API.
36 *
37 * @see https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/signBlob SignBlob
38 *
39 * @param string $stringToSign The string to sign.
40 * @param bool $forceOpenSsl [optional] Does not apply to this credentials
41 * type.
42 * @param string $accessToken The access token to use to sign the blob. If
43 * provided, saves a call to the metadata server for a new access
44 * token. **Defaults to** `null`.
45 * @return string
46 * @throws Exception
47 */
48 public function signBlob($stringToSign, $forceOpenSsl = false, $accessToken = null)
49 {
50 $httpHandler = HttpHandlerFactory::build(HttpClientCache::getHttpClient());
51
52 // Providing a signer is useful for testing, but it's undocumented
53 // because it's not something a user would generally need to do.
54 $signer = $this->iam;
55 if (!$signer) {
56 $signer = $this instanceof GetUniverseDomainInterface
57 ? new Iam($httpHandler, $this->getUniverseDomain())
58 : new Iam($httpHandler);
59 }
60
61 $email = $this->getClientName($httpHandler);
62
63 if (is_null($accessToken)) {
64 $previousToken = $this->getLastReceivedToken();
65 $accessToken = $previousToken
66 ? $previousToken['access_token']
67 : $this->fetchAuthToken($httpHandler)['access_token'];
68 }
69
70 return $signer->signBlob($email, $accessToken, $stringToSign);
71 }
72 }
73