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 [EMAIL PROTECTED] 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;
+               }
+       }
 }


Reply via email to