feat(qs2) add qs2 framework

This commit is contained in:
hexxa 2020-12-05 10:30:03 +08:00
parent 6ae65fe09b
commit 83100007e3
33 changed files with 2934 additions and 60 deletions

View file

@ -0,0 +1,6 @@
package cryptoutil
type ITokenEncDec interface {
FromToken(token string, kvs map[string]string) (map[string]string, error)
ToToken(kvs map[string]string) (string, error)
}

51
src/cryptoutil/jwt/jwt.go Normal file
View file

@ -0,0 +1,51 @@
package jwt
import (
"errors"
jwtpkg "github.com/robbert229/jwt"
)
type JWTEncDec struct {
alg jwtpkg.Algorithm
}
func NewJWTEncDec(secret string) *JWTEncDec {
return &JWTEncDec{
alg: jwtpkg.HmacSha256(secret),
}
}
func (ed *JWTEncDec) FromToken(token string, kvs map[string]string) (map[string]string, error) {
claims, err := ed.alg.Decode(token)
if err != nil {
return nil, err
}
for key := range kvs {
iVal, err := claims.Get(key)
if err != nil {
return nil, err
}
strVal, ok := iVal.(string)
if !ok {
return nil, errors.New("incorrect JWT claim")
}
kvs[key] = strVal
}
return kvs, nil
}
func (ed *JWTEncDec) ToToken(kvs map[string]string) (string, error) {
claims := jwtpkg.NewClaim()
for key, val := range kvs {
claims.Set(key, val)
}
token, err := ed.alg.Encode(claims)
if err != nil {
return "", err
}
return token, nil
}