in src/OSS/Signer/SignerV1.php [37:67]
public function presign(RequestCore $request, Credentials $credentials, array &$options)
{
$headers = $request->request_headers;
// Date
$expiration = $options['expiration'];
if (!isset($request->request_headers['Date'])) {
$request->add_header('Date', gmdate('D, d M Y H:i:s \G\M\T'));
}
$parsed_url = parse_url($request->request_url);
$queryString = isset($parsed_url['query']) ? $parsed_url['query'] : '';
$query = array();
if ($queryString !== null) {
parse_str($queryString, $query);
}
// Credentials information
if (!empty($credentials->getSecurityToken())) {
$query["security-token"] = $credentials->getSecurityToken();
}
$method = strtoupper($request->method);
$date = $expiration . "";
$resourcePath = $this->getResourcePath($options);
$stringToSign = $this->calcStringToSign($method, $date, $headers, $resourcePath, $query);
$options['string_to_sign'] = $stringToSign;
$signature = base64_encode(hash_hmac('sha1', $stringToSign, $credentials->getAccessKeySecret(), true));
$query['OSSAccessKeyId'] = $credentials->getAccessKeyId();
$query['Expires'] = $date;
$query['Signature'] = $signature;
$queryString = OssUtil::toQueryString($query);
$parsed_url['query'] = $queryString;
$request->request_url = OssUtil::unparseUrl($parsed_url);
}