rsa_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package codec
  2. import (
  3. "encoding/base64"
  4. "os"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/wuntsong-org/go-zero-plus/core/fs"
  8. )
  9. const (
  10. priKey = `-----BEGIN RSA PRIVATE KEY-----
  11. MIICXQIBAAKBgQC4TJk3onpqb2RYE3wwt23J9SHLFstHGSkUYFLe+nl1dEKHbD+/
  12. Zt95L757J3xGTrwoTc7KCTxbrgn+stn0w52BNjj/kIE2ko4lbh/v8Fl14AyVR9ms
  13. fKtKOnhe5FCT72mdtApr+qvzcC3q9hfXwkyQU32pv7q5UimZ205iKSBmgQIDAQAB
  14. AoGAM5mWqGIAXj5z3MkP01/4CDxuyrrGDVD5FHBno3CDgyQa4Gmpa4B0/ywj671B
  15. aTnwKmSmiiCN2qleuQYASixes2zY5fgTzt+7KNkl9JHsy7i606eH2eCKzsUa/s6u
  16. WD8V3w/hGCQ9zYI18ihwyXlGHIgcRz/eeRh+nWcWVJzGOPUCQQD5nr6It/1yHb1p
  17. C6l4fC4xXF19l4KxJjGu1xv/sOpSx0pOqBDEX3Mh//FU954392rUWDXV1/I65BPt
  18. TLphdsu3AkEAvQJ2Qay/lffFj9FaUrvXuftJZ/Ypn0FpaSiUh3Ak3obBT6UvSZS0
  19. bcYdCJCNHDtBOsWHnIN1x+BcWAPrdU7PhwJBAIQ0dUlH2S3VXnoCOTGc44I1Hzbj
  20. Rc65IdsuBqA3fQN2lX5vOOIog3vgaFrOArg1jBkG1wx5IMvb/EnUN2pjVqUCQCza
  21. KLXtCInOAlPemlCHwumfeAvznmzsWNdbieOZ+SXVVIpR6KbNYwOpv7oIk3Pfm9sW
  22. hNffWlPUKhW42Gc+DIECQQDmk20YgBXwXWRM5DRPbhisIV088N5Z58K9DtFWkZsd
  23. OBDT3dFcgZONtlmR1MqZO0pTh30lA4qovYj3Bx7A8i36
  24. -----END RSA PRIVATE KEY-----`
  25. pubKey = `-----BEGIN PUBLIC KEY-----
  26. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4TJk3onpqb2RYE3wwt23J9SHL
  27. FstHGSkUYFLe+nl1dEKHbD+/Zt95L757J3xGTrwoTc7KCTxbrgn+stn0w52BNjj/
  28. kIE2ko4lbh/v8Fl14AyVR9msfKtKOnhe5FCT72mdtApr+qvzcC3q9hfXwkyQU32p
  29. v7q5UimZ205iKSBmgQIDAQAB
  30. -----END PUBLIC KEY-----`
  31. testBody = `this is the content`
  32. )
  33. func TestCryption(t *testing.T) {
  34. enc, err := NewRsaEncrypter([]byte(pubKey))
  35. assert.Nil(t, err)
  36. ret, err := enc.Encrypt([]byte(testBody))
  37. assert.Nil(t, err)
  38. file, err := fs.TempFilenameWithText(priKey)
  39. assert.Nil(t, err)
  40. defer os.Remove(file)
  41. dec, err := NewRsaDecrypter(file)
  42. assert.Nil(t, err)
  43. actual, err := dec.Decrypt(ret)
  44. assert.Nil(t, err)
  45. assert.Equal(t, testBody, string(actual))
  46. actual, err = dec.DecryptBase64(base64.StdEncoding.EncodeToString(ret))
  47. assert.Nil(t, err)
  48. assert.Equal(t, testBody, string(actual))
  49. }
  50. func TestBadPubKey(t *testing.T) {
  51. _, err := NewRsaEncrypter([]byte("foo"))
  52. assert.Equal(t, ErrPublicKey, err)
  53. }