You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 line
1.1 KiB

  1. package auth
  2. import (
  3. "errors"
  4. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/auth/credentials"
  5. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/auth/signers"
  6. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
  7. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
  8. )
  9. type Signer interface {
  10. GetName() string
  11. Sign(stringToSign, secretSuffix string) string
  12. }
  13. func NewSignerWithCredential(credential Credential, commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error)) (signer Signer, err error) {
  14. switch instance := credential.(type) {
  15. case *credentials.AccessKeyCredential:
  16. signer = signers.NewAccessKeySigner(instance)
  17. case *credentials.BaseCredential:
  18. signer = signers.NewAccessKeySigner(instance.ToAccessKeyCredential())
  19. default:
  20. err = errors.New("UnsupportedCredentialErrorCode = SDK.UnsupportedCredential")
  21. }
  22. return
  23. }
  24. func Sign(request requests.AcsRequest, signer Signer) (err error) {
  25. //TODO 根据rpc和roa两种风格签名,自行选择
  26. err = signHttpRequest(request, signer)
  27. return
  28. }