in src/Dybaseapi/MNS/Signature.php [24:67]
public static function SignRequest($accessKey, BaseRequest $request)
{
$headers = $request->getHeaders();
$contentMd5 = '';
if (isset($headers['Content-MD5'])) {
$contentMd5 = $headers['Content-MD5'];
}
$contentType = '';
if (isset($headers['Content-Type'])) {
$contentType = $headers['Content-Type'];
}
$date = $headers['Date'];
$queryString = $request->getQueryString();
$canonicalizedResource = $request->getResourcePath();
if ($queryString !== null) {
$canonicalizedResource .= '?' . $request->getQueryString();
}
if (0 !== strpos($canonicalizedResource, '/')) {
$canonicalizedResource = '/' . $canonicalizedResource;
}
$tmpHeaders = [];
foreach ($headers as $key => $value) {
if (0 === strpos($key, Constants::MNS_HEADER_PREFIX)) {
$tmpHeaders[$key] = $value;
}
}
$canonicalizedMNSHeaders = implode(
"\n",
array_map(
static function ($v, $k) {
return $k . ':' . $v;
},
$tmpHeaders,
array_keys($tmpHeaders)
)
);
$stringToSign =
strtoupper($request->getMethod()) . "\n" . $contentMd5 . "\n" . $contentType . "\n" . $date . "\n" . $canonicalizedMNSHeaders . "\n" . $canonicalizedResource;
return base64_encode(hash_hmac('sha1', $stringToSign, $accessKey, $raw_output = true));
}