auth_digest.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. require_once("utils.php");
  3. require_once("conf.php");
  4. // ----------------------------------------------------------
  5. class Qiniu_Mac
  6. {
  7. public $AccessKey;
  8. public $SecretKey;
  9. public function __construct($accessKey, $secretKey)
  10. {
  11. $this->AccessKey = $accessKey;
  12. $this->SecretKey = $secretKey;
  13. }
  14. public function Sign($data) // => $token
  15. {
  16. $sign = hash_hmac('sha1', $data, $this->SecretKey, true);
  17. return $this->AccessKey . ':' . Qiniu_Encode($sign);
  18. }
  19. public function SignWithData($data) // => $token
  20. {
  21. $data = Qiniu_Encode($data);
  22. return $this->Sign($data) . ':' . $data;
  23. }
  24. public function SignRequest($req, $incbody) // => ($token, $error)
  25. {
  26. $url = $req->URL;
  27. $url = parse_url($url['path']);
  28. $data = '';
  29. if (isset($url['path'])) {
  30. $data = $url['path'];
  31. }
  32. if (isset($url['query'])) {
  33. $data .= '?' . $url['query'];
  34. }
  35. $data .= "\n";
  36. if ($incbody) {
  37. $data .= $req->Body;
  38. }
  39. return $this->Sign($data);
  40. }
  41. }
  42. function Qiniu_SetKeys($accessKey, $secretKey)
  43. {
  44. global $QINIU_ACCESS_KEY;
  45. global $QINIU_SECRET_KEY;
  46. $QINIU_ACCESS_KEY = $accessKey;
  47. $QINIU_SECRET_KEY = $secretKey;
  48. }
  49. function Qiniu_RequireMac($mac) // => $mac
  50. {
  51. if (isset($mac)) {
  52. return $mac;
  53. }
  54. global $QINIU_ACCESS_KEY;
  55. global $QINIU_SECRET_KEY;
  56. return new Qiniu_Mac($QINIU_ACCESS_KEY, $QINIU_SECRET_KEY);
  57. }
  58. function Qiniu_Sign($mac, $data) // => $token
  59. {
  60. return Qiniu_RequireMac($mac)->Sign($data);
  61. }
  62. function Qiniu_SignWithData($mac, $data) // => $token
  63. {
  64. return Qiniu_RequireMac($mac)->SignWithData($data);
  65. }
  66. // ----------------------------------------------------------