github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/crypto/claim/claim_test.go (about) 1 package claim 2 3 import ( 4 "io/ioutil" 5 "testing" 6 "time" 7 8 "reflect" 9 10 "github.com/dgrijalva/jwt-go" 11 "gotest.tools/assert" 12 ) 13 14 func Test(t *testing.T) { 15 16 // test signer and verifier 17 { 18 // openssl genrsa -out test.rsa 2048 19 signBytes, err := ioutil.ReadFile("data/test.rsa") 20 assert.Assert(t, err == nil) 21 // openssl rsa -in test.rsa -pubout > test.rsa.pub 22 verifyBytes, err := ioutil.ReadFile("data/test.rsa.pub") 23 assert.Assert(t, err == nil) 24 25 signKey, err := jwt.ParseRSAPrivateKeyFromPEM(signBytes) 26 assert.Assert(t, err == nil) 27 verifyKey, err := jwt.ParseRSAPublicKeyFromPEM(verifyBytes) 28 assert.Assert(t, err == nil) 29 30 s, err := NewSigner(time.Hour, signKey) 31 assert.Assert(t, err == nil) 32 33 v, err := NewVerifier(verifyKey) 34 assert.Assert(t, err == nil) 35 36 values := map[string]interface{}{ 37 "c1": "v1", 38 "c2": "v2", 39 } 40 41 tokenString, err := s.Sign(values) 42 assert.Assert(t, err == nil, err) 43 44 ok, valuesVerified := v.Verify(tokenString) 45 assert.Assert(t, ok && reflect.DeepEqual(valuesVerified, values)) 46 } 47 48 // test jwt 49 { 50 j, err := NewJWT(time.Hour*24, []byte("sec")) 51 assert.Assert(t, err == nil) 52 53 values := map[string]interface{}{ 54 "c1": "v1", 55 "c2": "v2", 56 } 57 tokenString, err := j.Sign(values) 58 assert.Assert(t, err == nil) 59 60 ok, valuesVerified := j.Verify(tokenString) 61 assert.Assert(t, ok && reflect.DeepEqual(valuesVerified, values)) 62 } 63 64 }