You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ch...@apache.org on 2008/07/29 19:38:11 UTC
svn commit: r680784 -
/incubator/shindig/trunk/php/src/gadgets/SigningFetcherFactory.php
Author: chabotc
Date: Tue Jul 29 10:38:10 2008
New Revision: 680784
URL: http://svn.apache.org/viewvc?rev=680784&view=rev
Log:
SHINDIG-477 by Ram Sharma, better handling of missing keys
Modified:
incubator/shindig/trunk/php/src/gadgets/SigningFetcherFactory.php
Modified: incubator/shindig/trunk/php/src/gadgets/SigningFetcherFactory.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/SigningFetcherFactory.php?rev=680784&r1=680783&r2=680784&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/SigningFetcherFactory.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/SigningFetcherFactory.php Tue Jul 29 10:38:10 2008
@@ -1,4 +1,4 @@
-<?php
+<?php
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -16,15 +16,15 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- */
-
+ */
+
/**
* Produces Signing content fetchers for input tokens.
- */
-class SigningFetcherFactory {
- private $keyName;
- private $privateKey;
-
+ */
+class SigningFetcherFactory {
+ private $keyName;
+ private $privateKey;
+
/**
* Produces a signing fetcher that will sign requests and delegate actual
* network retrieval to the {@code networkFetcher}
@@ -33,50 +33,59 @@
* @param token The gadget token used for extracting signing parameters.
* @return The signing fetcher.
* @throws GadgetException
- */
- public function getSigningFetcher($networkFetcher, $token)
- {
- return SigningFetcher::makeFromB64PrivateKey($networkFetcher, $token, $this->keyName, $this->privateKey);
- }
-
+ */
+ public function getSigningFetcher($networkFetcher, $token)
+ {
+ return SigningFetcher::makeFromB64PrivateKey($networkFetcher, $token, $this->keyName, $this->privateKey);
+ }
+
/**
* @param keyFile The file containing your private key for signing requests.
- */
- public function __construct($keyFile = null)
- {
- $this->keyName = 'http://'.$_SERVER["HTTP_HOST"].Config::get('web_prefix').'/public.crt';
- if (! empty($keyFile)) {
- $privateKey = null;
- try {
+ */
+ public function __construct($keyFile = null)
+ {
+ $this->keyName = 'http://' . $_SERVER["HTTP_HOST"] . Config::get('web_prefix') . '/public.crt';
+ if (! empty($keyFile)) {
+ $privateKey = null;
+ try {
// check if the converted from PKCS8 key is in cache, if not, convert it
- $cache = Config::get('data_cache');
- $cache = new $cache();
- if (($cachedKey = $cache->get(md5("RSA_PRIVATE_KEY_" . $this->keyName))) !== false) {
- $rsa_private_key = $cachedKey;
- } else {
- if (! $rsa_private_key = @file_get_contents($keyFile)) {
- throw new Exception("Could not read keyfile ($keyFile), check the file name and permission");
- }
- $phrase = Config::get('private_key_phrase') != '' ? (Config::get('private_key_phrase')) : null;
- if (strpos($rsa_private_key, "-----BEGIN") === false) {
- $privateKey .= "-----BEGIN PRIVATE KEY-----\n";
- $chunks = str_split($rsa_private_key, 64);
- foreach ($chunks as $chunk) {
- $privateKey .= $chunk . "\n";
- }
- $privateKey .= "-----END PRIVATE KEY-----";
+ $cache = Config::get('data_cache');
+ $cache = new $cache();
+ if (($cachedKey = $cache->get(md5("RSA_PRIVATE_KEY_" . $this->keyName))) !== false) {
+ $rsa_private_key = $cachedKey;
+ } else {
+ if (file_exists($keyFile) && is_readable($keyFile)) {
+ $rsa_private_key = @file_get_contents($keyFile);
} else {
- $privateKey = $rsa_private_key;
- }
- $cache->set(md5("RSA_PRIVATE_KEY_" . $this->keyName), $rsa_private_key);
- if (! $rsa_private_key = @openssl_pkey_get_private($privateKey, $phrase)) {
- throw new Exception("Could not create the key");
- }
- }
- } catch (Exception $e) {
- throw new Exception("Error loading private key: " . $e);
- }
- $this->privateKey = $rsa_private_key;
- }
- }
+ throw new Exception("Could not read keyfile ($keyFile), check the file name and permission");
+ }
+ if (! $rsa_private_key) {
+ $rsa_private_key = "";
+ } else {
+ $phrase = Config::get('private_key_phrase') != '' ? (Config::get('private_key_phrase')) : null;
+ if (strpos($rsa_private_key, "-----BEGIN") === false) {
+ $privateKey .= "-----BEGIN PRIVATE KEY-----\n";
+ $chunks = str_split($rsa_private_key, 64);
+ foreach ($chunks as $chunk) {
+ $privateKey .= $chunk . "\n";
+ }
+ $privateKey .= "-----END PRIVATE KEY-----";
+ } else {
+ $privateKey = $rsa_private_key;
+ }
+ if (! $rsa_private_key = @openssl_pkey_get_private($privateKey, $phrase)) {
+ throw new Exception("Could not create the key");
+ }
+ }
+ $cache->set(md5("RSA_PRIVATE_KEY_" . $this->keyName), $rsa_private_key);
+ if (! $rsa_private_key = @openssl_pkey_get_private($privateKey, $phrase)) {
+ throw new Exception("Could not create the key");
+ }
+ }
+ } catch (Exception $e) {
+ throw new Exception("Error loading private key: " . $e);
+ }
+ $this->privateKey = $rsa_private_key;
+ }
+ }
}