keyName, $this->privateKey); } /** * * @return string */ public function getKeyName() { return $this->keyName; } /** * * @return string */ public function getPrivateKey() { return $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.cer'; if (! empty($keyFile)) { $rsa_private_key = false; $privateKey = null; try { if (File::exists($keyFile)) { if (File::readable($keyFile)) { $rsa_private_key = @file_get_contents($keyFile); } else { 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"); } } } catch (\Exception $e) { throw new \Exception("Error loading private key: " . $e); } $this->privateKey = $rsa_private_key; } } }