/** * @param string $uri * @param array $payload * * @return ResponseInterface */ private function signedPostRequest($uri, array $payload) { $header = ['alg' => 'RS256', 'jwk' => ['kty' => 'RSA', 'n' => Base64Url::encode($this->privateKey->getDetails()['rsa']['n']), 'e' => Base64Url::encode($this->privateKey->getDetails()['rsa']['e'])]]; $protected = $header; $protected['nonce'] = $this->getLastNonce(); $payload64 = Base64Url::encode(json_encode($payload, JSON_UNESCAPED_SLASHES)); $protected64 = Base64Url::encode(json_encode($protected)); $signed64 = Base64Url::encode($this->privateKey->sign($protected64 . '.' . $payload64)); return $this->request('POST', $uri, ['json' => ['header' => $header, 'protected' => $protected64, 'payload' => $payload64, 'signature' => $signed64]]); }