signature_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package security
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/suite"
  5. "github.com/imgproxy/imgproxy/v3/config"
  6. )
  7. type SignatureTestSuite struct {
  8. suite.Suite
  9. }
  10. func (s *SignatureTestSuite) SetupTest() {
  11. config.Reset()
  12. config.Keys = [][]byte{[]byte("test-key")}
  13. config.Salts = [][]byte{[]byte("test-salt")}
  14. }
  15. func (s *SignatureTestSuite) TestVerifySignature() {
  16. err := VerifySignature("dtLwhdnPPiu_epMl1LrzheLpvHas-4mwvY6L3Z8WwlY", "asd")
  17. s.Require().NoError(err)
  18. }
  19. func (s *SignatureTestSuite) TestVerifySignatureTruncated() {
  20. config.SignatureSize = 8
  21. err := VerifySignature("dtLwhdnPPis", "asd")
  22. s.Require().NoError(err)
  23. }
  24. func (s *SignatureTestSuite) TestVerifySignatureInvalid() {
  25. err := VerifySignature("dtLwhdnPPis", "asd")
  26. s.Require().Error(err)
  27. }
  28. func (s *SignatureTestSuite) TestVerifySignatureMultiplePairs() {
  29. config.Keys = append(config.Keys, []byte("test-key2"))
  30. config.Salts = append(config.Salts, []byte("test-salt2"))
  31. err := VerifySignature("dtLwhdnPPiu_epMl1LrzheLpvHas-4mwvY6L3Z8WwlY", "asd")
  32. s.Require().NoError(err)
  33. err = VerifySignature("jbDffNPt1-XBgDccsaE-XJB9lx8JIJqdeYIZKgOqZpg", "asd")
  34. s.Require().NoError(err)
  35. err = VerifySignature("dtLwhdnPPis", "asd")
  36. s.Require().Error(err)
  37. }
  38. func (s *SignatureTestSuite) TestVerifySignatureTrusted() {
  39. config.TrustedSignatures = []string{"truested"}
  40. defer func() {
  41. config.TrustedSignatures = []string{}
  42. }()
  43. err := VerifySignature("truested", "asd")
  44. s.Require().NoError(err)
  45. err = VerifySignature("untrusted", "asd")
  46. s.Require().Error(err)
  47. }
  48. func TestSignature(t *testing.T) {
  49. suite.Run(t, new(SignatureTestSuite))
  50. }