in src/Signer/SignerV4.php [46:99]
public function authQuery(SigningContext $signingCtx): void
{
$request = $signingCtx->request;
$cred = $signingCtx->credentials;
// Date
$now = new DateTime('now', new DateTimeZone('UTC'));
if (!isset($signingCtx->time)) {
$signingCtx->time = clone $now;
$signingCtx->time->modify('+' . self::DEFAULT_EXPIRES_DURATION . 'seconds');
}
if (isset($signingCtx->signTime)) {
$now = $signingCtx->signTime;
}
$datetime = $now->format("Ymd\THis\Z");
$date = $now->format("Ymd");
$expires = $signingCtx->time->getTimestamp() - $now->getTimestamp();
// Scope
$region = $signingCtx->region;
$product = $signingCtx->product;
$scope = $this->buildScope($date, $region, $product);
$additionalHeaders = $this->getCommonAdditionalHeaders($request->getHeaders(), $signingCtx->additionalHeaders);
// Credentials information
$query = Query::parse($request->getUri()->getQuery());
if ((string)$cred->getSecurityToken() !== '') {
$query['x-oss-security-token'] = $cred->getSecurityToken();
}
$query['x-oss-signature-version'] = self::ALGORITHM_V4;
$query['x-oss-date'] = $datetime;
$query['x-oss-expires'] = $expires;
$query['x-oss-credential'] = sprintf("%s/%s", $cred->getAccessKeyId(), $scope);
if (count($additionalHeaders) > 0) {
$query['x-oss-additional-headers'] = implode(';', $additionalHeaders);
}
ksort($query);
$signingCtx->request = $request->withUri($request->getUri()->withQuery(http_build_query($query, '', '&', PHP_QUERY_RFC3986)));
// CanonicalRequest
$canonicalRequest = $this->calcCanonicalRequest($signingCtx, $additionalHeaders);
// printf("canonicalRequest:%s" . PHP_EOL, $canonicalRequest);
// StringToSign
$stringToSign = $this->calcStringToSign($datetime, $scope, $canonicalRequest);
$signingCtx->stringToSign = $stringToSign;
// printf("stringToSign:%s" . PHP_EOL, $stringToSign);
// Signature
$signature = $this->calcSignature($cred->getAccessKeySecret(), $date, $region, $product, $stringToSign);
// printf("signature:%s" . PHP_EOL, $signature);
// Authorization query
$query['x-oss-signature'] = $signature;
ksort($query);
$request = $request->withUri($request->getUri()->withQuery(http_build_query($query, '', '&', PHP_QUERY_RFC3986)));
$signingCtx->request = $request;
}