public function authQuery()

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;
    }