private function getCanonicalRequestSignature(HTTPSFuture $future, $body_signature) { $http_method = $future->getMethod(); $path = $this->getPath($future); $path = rawurlencode($path); $path = str_replace('%2F', '/', $path); $canonical_parameters = $this->getCanonicalParameterList($future); $canonical_headers = $this->getCanonicalHeaderList($future); $signed_headers = $this->getSignedHeaderList($future); $canonical_request = $http_method . "\n" . $path . "\n" . $canonical_parameters . "\n" . $canonical_headers . "\n" . "\n" . $signed_headers . "\n" . $body_signature; return hash('sha256', $canonical_request); }