static public function getAuthorization()

in php/src/Utils.php [422:463]


  static public function getAuthorization($request, $signatureAlgorithm, $payload, $accesskey, $accessKeySecret)
  {
    $canonicalURI = $request->pathname ? $request->pathname : '/';
    $query    = $request->query ?: [];
    $method               = strtoupper($request->method);
    $canonicalQueryString = self::getCanonicalQueryString($query);
    $signHeaders          = [];
    foreach ($request->headers as $k => $v) {
      $k = strtolower($k);
      if (0 === strpos($k, 'x-acs-') || 'host' === $k || 'content-type' === $k) {
        $signHeaders[$k] = $v;
      }
    }
    ksort($signHeaders);
    $headers = [];
    foreach ($request->headers as $k => $v) {
      $k = strtolower($k);
      if (0 === strpos($k, 'x-acs-') || 'host' === $k || 'content-type' === $k) {
        $headers[$k] = trim($v);
      }
    }
    $canonicalHeaderString = '';
    ksort($headers);
    foreach ($headers as $k => $v) {
      $canonicalHeaderString .= $k . ':' . trim(self::filter($v)) . "\n";
    }
    if (empty($canonicalHeaderString)) {
      $canonicalHeaderString = "\n";
    }

    $canonicalRequest = $method . "\n" . $canonicalURI . "\n" . $canonicalQueryString . "\n" .
        $canonicalHeaderString . "\n" . implode(';', array_keys($signHeaders)) . "\n" . $payload;
    $strtosign        = $signatureAlgorithm . "\n" . bin2hex(self::hash(BytesUtil::from($canonicalRequest), $signatureAlgorithm));

    $signature        = self::sign($accessKeySecret, $strtosign, $signatureAlgorithm);
    $signature        = bin2hex($signature);

    return $signatureAlgorithm .
      ' Credential=' . $accesskey .
      ',SignedHeaders=' . implode(';', array_keys($signHeaders)) .
      ',Signature=' . $signature;
  }