Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402] [Versions 401 and 402]
1 <?php 2 /* 3 * Copyright 2011 Google Inc. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 if (!class_exists('Google_Client')) { 19 require_once dirname(__FILE__) . '/../autoload.php'; 20 } 21 22 /** 23 * Verifies signatures using PEM encoded certificates. 24 * 25 * @author Brian Eaton <beaton@google.com> 26 */ 27 #[AllowDynamicProperties] 28 class Google_Verifier_Pem extends Google_Verifier_Abstract 29 { 30 private $publicKey; 31 32 /** 33 * Constructs a verifier from the supplied PEM-encoded certificate. 34 * 35 * $pem: a PEM encoded certificate (not a file). 36 * @param $pem 37 * @throws Google_Auth_Exception 38 * @throws Google_Exception 39 */ 40 public function __construct($pem) 41 { 42 if (!function_exists('openssl_x509_read')) { 43 throw new Google_Exception('Google API PHP client needs the openssl PHP extension'); 44 } 45 $this->publicKey = openssl_x509_read($pem); 46 if (!$this->publicKey) { 47 throw new Google_Auth_Exception("Unable to parse PEM: $pem"); 48 } 49 } 50 51 public function __destruct() 52 { 53 if ($this->publicKey) { 54 // TODO: Remove this block once PHP 8.0 becomes required. 55 if (PHP_MAJOR_VERSION < 8) { 56 openssl_x509_free($this->publicKey); 57 } 58 } 59 } 60 61 /** 62 * Verifies the signature on data. 63 * 64 * Returns true if the signature is valid, false otherwise. 65 * @param $data 66 * @param $signature 67 * @throws Google_Auth_Exception 68 * @return bool 69 */ 70 public function verify($data, $signature) 71 { 72 $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256"; 73 $status = openssl_verify($data, $signature, $this->publicKey, $hash); 74 if ($status === -1) { 75 throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string()); 76 } 77 return $status === 1; 78 } 79 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body