コード例 #1
0
ファイル: Lescript.php プロジェクト: RustyPixel/lescript
 private function signedRequest($uri, array $payload)
 {
     $privateKey = $this->readPrivateKey($this->accountKeyPath);
     $details = openssl_pkey_get_details($privateKey);
     $header = array("alg" => "RS256", "jwk" => array("kty" => "RSA", "n" => Base64UrlSafeEncoder::encode($details["rsa"]["n"]), "e" => Base64UrlSafeEncoder::encode($details["rsa"]["e"])));
     $protected = $header;
     $protected["nonce"] = $this->client->getLastNonce();
     $payload64 = Base64UrlSafeEncoder::encode(str_replace('\\/', '/', json_encode($payload)));
     $protected64 = Base64UrlSafeEncoder::encode(json_encode($protected));
     openssl_sign($protected64 . '.' . $payload64, $signed, $privateKey, "SHA256");
     $signed64 = Base64UrlSafeEncoder::encode($signed);
     $data = array('header' => $header, 'protected' => $protected64, 'payload' => $payload64, 'signature' => $signed64);
     $this->log("Sending signed request to {$uri}");
     return $this->client->post($uri, json_encode($data));
 }
コード例 #2
0
ファイル: Lescript.php プロジェクト: gernest/lescript
 private function signedRequest($uri, array $payload)
 {
     if (($privateKey = openssl_pkey_get_private('file://' . $this->account_key_path)) === FALSE) {
         throw new \RuntimeException(openssl_error_string());
     }
     $details = openssl_pkey_get_details($privateKey);
     $header = array("alg" => "RS256", "jwk" => array("kty" => "RSA", "n" => Base64UrlSafeEncoder::encode($details["rsa"]["n"]), "e" => Base64UrlSafeEncoder::encode($details["rsa"]["e"])));
     $protected = $header;
     $protected["nonce"] = $this->client->getLastNonce();
     $payload64 = Base64UrlSafeEncoder::encode(json_encode($payload, JSON_UNESCAPED_SLASHES));
     $protected64 = Base64UrlSafeEncoder::encode(json_encode($protected));
     openssl_sign($protected64 . '.' . $payload64, $signed, $privateKey, OPENSSL_ALGO_SHA256);
     $signed64 = Base64UrlSafeEncoder::encode($signed);
     $data = array('header' => $header, 'protected' => $protected64, 'payload' => $payload64, 'signature' => $signed64);
     $this->logger->info("Sending signed request to {$uri}");
     return $this->client->post($uri, json_encode($data));
 }