signature_does_not_match_wrapper.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package errors
  2. import (
  3. "strings"
  4. "github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils"
  5. )
  6. const SignatureDostNotMatchErrorCode = "SignatureDoesNotMatch"
  7. const IncompleteSignatureErrorCode = "IncompleteSignature"
  8. const MessageContain = "server string to sign is:"
  9. var debug utils.Debug
  10. func init() {
  11. debug = utils.Init("sdk")
  12. }
  13. type SignatureDostNotMatchWrapper struct {
  14. }
  15. func (*SignatureDostNotMatchWrapper) tryWrap(error *ServerError, wrapInfo map[string]string) (ok bool) {
  16. clientStringToSign := wrapInfo["StringToSign"]
  17. if (error.errorCode == SignatureDostNotMatchErrorCode || error.errorCode == IncompleteSignatureErrorCode) && clientStringToSign != "" {
  18. message := error.message
  19. if strings.Contains(message, MessageContain) {
  20. str := strings.Split(message, MessageContain)
  21. serverStringToSign := str[1]
  22. if clientStringToSign == serverStringToSign {
  23. // user secret is error
  24. error.recommend = "InvalidAccessKeySecret: Please check you AccessKeySecret"
  25. } else {
  26. debug("Client StringToSign: %s", clientStringToSign)
  27. debug("Server StringToSign: %s", serverStringToSign)
  28. error.recommend = "This may be a bug with the SDK and we hope you can submit this question in the " +
  29. "github issue(https://github.com/aliyun/alibaba-cloud-sdk-go/issues), thanks very much"
  30. }
  31. }
  32. ok = true
  33. return
  34. }
  35. ok = false
  36. return
  37. }