Feat: upyun callback & authentication

This commit is contained in:
HFO4
2020-01-18 10:40:03 +08:00
parent 21ec3fc710
commit 5befbc21d0
9 changed files with 138 additions and 16 deletions

View File

@@ -110,15 +110,21 @@ func (handler Driver) getUploadCredential(ctx context.Context, policy UploadPoli
policyEncoded := base64.StdEncoding.EncodeToString(policyJSON)
// 生成签名
password := fmt.Sprintf("%x", md5.Sum([]byte(handler.Policy.SecretKey)))
mac := hmac.New(sha1.New, []byte(password))
elements := []string{"POST", "/" + handler.Policy.BucketName, policyEncoded}
value := strings.Join(elements, "&")
mac.Write([]byte(value))
signStr := base64.StdEncoding.EncodeToString((mac.Sum(nil)))
signStr := handler.Sign(ctx, elements)
return serializer.UploadCredential{
Policy: policyEncoded,
Token: fmt.Sprintf("UPYUN %s:%s", handler.Policy.AccessKey, signStr),
Token: signStr,
}, nil
}
// Sign 计算又拍云的签名头
func (handler Driver) Sign(ctx context.Context, elements []string) string {
password := fmt.Sprintf("%x", md5.Sum([]byte(handler.Policy.SecretKey)))
mac := hmac.New(sha1.New, []byte(password))
value := strings.Join(elements, "&")
mac.Write([]byte(value))
signStr := base64.StdEncoding.EncodeToString((mac.Sum(nil)))
return fmt.Sprintf("UPYUN %s:%s", handler.Policy.AccessKey, signStr)
}