| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- <?php
 
- namespace Qcloud\Cos;
 
- use Psr\Http\Message\RequestInterface;
 
- class Signature {
 
-     private $accessKey;           // string: access key.
 
-     private $secretKey;           // string: secret key.
 
-     public function __construct($accessKey, $secretKey, $token=null) {
 
-         $this->accessKey = $accessKey;
 
-         $this->secretKey = $secretKey;
 
-         $this->token = $token;
 
-         date_default_timezone_set("PRC");
 
-     }
 
-     public function __destruct() {
 
-     }
 
-     public function signRequest(RequestInterface $request) {
 
-         $authorization = $this->createAuthorization($request);
 
-         return $request->withHeader('Authorization', $authorization);
 
-     }
 
-     public function createAuthorization(RequestInterface $request, $expires = "+30 minutes") {
 
-         if (is_null($expires)) {
 
-             $expires = "+30 minutes";
 
-         }
 
-         $signTime = (string)(time() - 60) . ';' . (string)(strtotime($expires));
 
-         $httpString = strtolower($request->getMethod()) . "\n" . urldecode($request->getUri()->getPath()) .
 
-             "\n\nhost=" . $request->getHeader("Host")[0]. "\n";
 
-         $sha1edHttpString = sha1($httpString);
 
-         $stringToSign = "sha1\n$signTime\n$sha1edHttpString\n";
 
-         $signKey = hash_hmac('sha1', $signTime, $this->secretKey);
 
-         $signature = hash_hmac('sha1', $stringToSign, $signKey);
 
-         $authorization = 'q-sign-algorithm=sha1&q-ak='. $this->accessKey .
 
-             "&q-sign-time=$signTime&q-key-time=$signTime&q-header-list=host&q-url-param-list=&" .
 
-             "q-signature=$signature";
 
-         return $authorization;
 
-     }
 
-     public function createPresignedUrl(RequestInterface $request, $expires = "+30 minutes") {
 
-         $authorization = $this->createAuthorization($request, $expires);
 
-         $uri = $request->getUri();
 
-         $query = "sign=".urlencode($authorization);
 
-         if ($this->token != null) {
 
-             $query = $query."&x-cos-security-token=".$this->token;
 
-         }
 
-         $uri = $uri->withQuery($query);
 
-         return $uri;
 
-     }
 
- }
 
 
  |