Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

42 linhas
1.3 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. "net/http"
  9. )
  10. type Signer interface {
  11. GetName() string
  12. GetAccessKeyId() (string, error)
  13. GetAccessKeyFrom() (string, error)
  14. Sign(stringToSign, secretSuffix string) string
  15. }
  16. func NewSignerWithCredential(credential Credential, commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error)) (signer Signer, err error) {
  17. switch instance := credential.(type) {
  18. case *credentials.AccessKeyCredential:
  19. signer = signers.NewAccessKeySigner(instance)
  20. case *credentials.BaseCredential:
  21. signer = signers.NewAccessKeySigner(instance.ToAccessKeyCredential())
  22. default:
  23. err = errors.New("UnsupportedCredentialErrorCode = SDK.UnsupportedCredential")
  24. }
  25. return
  26. }
  27. func Sign(request requests.AcsRequest, signer Signer) (err error) {
  28. //TODO 根据rpc和roa两种风格签名,自行选择
  29. err = signRpcRequest(request, signer)
  30. return
  31. }
  32. func UnSign(request *http.Request, signer Signer) (err error) {
  33. //TODO 根据rpc和roa两种风格签名,自行选择
  34. err = unsignRpcRequest(request, signer)
  35. return
  36. }