/**
  * @param \TYPO3\Flow\Http\Request $request
  * @param string $identifier
  * @param string $publicKeyFingerprint
  * @return \TYPO3\Flow\Http\Request
  */
 public function signRequest(\TYPO3\Flow\Http\Request $request, $identifier, $publicKeyFingerprint)
 {
     $signedRequest = clone $request;
     $signedRequest->setHeader('Date', gmdate(DATE_RFC2822));
     $signData = $this->getSignatureContent($signedRequest);
     $signature = $this->rsaWalletService->sign($signData, $publicKeyFingerprint);
     $signedRequest->setHeader('X-Request-Signature', $identifier . ':' . base64_encode($signature));
     return $signedRequest;
 }
 /**
  * Build a URI to redirect to the server authentication endpoint
  *
  * @param \Flowpack\SingleSignOn\Client\Domain\Model\SsoClient $ssoClient The SSO client that wants to authenticate against the server
  * @param string $callbackUri A URI where the server should redirect back after successful authentication on the server
  * @return string The URI for the redirect
  */
 public function buildAuthenticationEndpointUri(SsoClient $ssoClient, $callbackUri)
 {
     $uri = new Uri($this->endpointUri);
     $arguments = array('callbackUri' => (string) $callbackUri, 'ssoClientIdentifier' => $ssoClient->getServiceBaseUri());
     ksort($arguments);
     $uri->setQuery(http_build_query($arguments));
     $signature = $this->rsaWalletService->sign((string) $uri, $ssoClient->getPublicKeyFingerprint());
     $arguments['signature'] = base64_encode($signature);
     $uri->setQuery(http_build_query($arguments));
     return (string) $uri;
 }