diff options
Diffstat (limited to 'vendor/github.com/golang-jwt/jwt/v5/token.go')
| -rw-r--r-- | vendor/github.com/golang-jwt/jwt/v5/token.go | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/vendor/github.com/golang-jwt/jwt/v5/token.go b/vendor/github.com/golang-jwt/jwt/v5/token.go deleted file mode 100644 index 352873a..0000000 --- a/vendor/github.com/golang-jwt/jwt/v5/token.go +++ /dev/null | |||
| @@ -1,100 +0,0 @@ | |||
| 1 | package jwt | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "crypto" | ||
| 5 | "encoding/base64" | ||
| 6 | "encoding/json" | ||
| 7 | ) | ||
| 8 | |||
| 9 | // Keyfunc will be used by the Parse methods as a callback function to supply | ||
| 10 | // the key for verification. The function receives the parsed, but unverified | ||
| 11 | // Token. This allows you to use properties in the Header of the token (such as | ||
| 12 | // `kid`) to identify which key to use. | ||
| 13 | // | ||
| 14 | // The returned interface{} may be a single key or a VerificationKeySet containing | ||
| 15 | // multiple keys. | ||
| 16 | type Keyfunc func(*Token) (interface{}, error) | ||
| 17 | |||
| 18 | // VerificationKey represents a public or secret key for verifying a token's signature. | ||
| 19 | type VerificationKey interface { | ||
| 20 | crypto.PublicKey | []uint8 | ||
| 21 | } | ||
| 22 | |||
| 23 | // VerificationKeySet is a set of public or secret keys. It is used by the parser to verify a token. | ||
| 24 | type VerificationKeySet struct { | ||
| 25 | Keys []VerificationKey | ||
| 26 | } | ||
| 27 | |||
| 28 | // Token represents a JWT Token. Different fields will be used depending on | ||
| 29 | // whether you're creating or parsing/verifying a token. | ||
| 30 | type Token struct { | ||
| 31 | Raw string // Raw contains the raw token. Populated when you [Parse] a token | ||
| 32 | Method SigningMethod // Method is the signing method used or to be used | ||
| 33 | Header map[string]interface{} // Header is the first segment of the token in decoded form | ||
| 34 | Claims Claims // Claims is the second segment of the token in decoded form | ||
| 35 | Signature []byte // Signature is the third segment of the token in decoded form. Populated when you Parse a token | ||
| 36 | Valid bool // Valid specifies if the token is valid. Populated when you Parse/Verify a token | ||
| 37 | } | ||
| 38 | |||
| 39 | // New creates a new [Token] with the specified signing method and an empty map | ||
| 40 | // of claims. Additional options can be specified, but are currently unused. | ||
| 41 | func New(method SigningMethod, opts ...TokenOption) *Token { | ||
| 42 | return NewWithClaims(method, MapClaims{}, opts...) | ||
| 43 | } | ||
| 44 | |||
| 45 | // NewWithClaims creates a new [Token] with the specified signing method and | ||
| 46 | // claims. Additional options can be specified, but are currently unused. | ||
| 47 | func NewWithClaims(method SigningMethod, claims Claims, opts ...TokenOption) *Token { | ||
| 48 | return &Token{ | ||
| 49 | Header: map[string]interface{}{ | ||
| 50 | "typ": "JWT", | ||
| 51 | "alg": method.Alg(), | ||
| 52 | }, | ||
| 53 | Claims: claims, | ||
| 54 | Method: method, | ||
| 55 | } | ||
| 56 | } | ||
| 57 | |||
| 58 | // SignedString creates and returns a complete, signed JWT. The token is signed | ||
| 59 | // using the SigningMethod specified in the token. Please refer to | ||
| 60 | // https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types | ||
| 61 | // for an overview of the different signing methods and their respective key | ||
| 62 | // types. | ||
| 63 | func (t *Token) SignedString(key interface{}) (string, error) { | ||
| 64 | sstr, err := t.SigningString() | ||
| 65 | if err != nil { | ||
| 66 | return "", err | ||
| 67 | } | ||
| 68 | |||
| 69 | sig, err := t.Method.Sign(sstr, key) | ||
| 70 | if err != nil { | ||
| 71 | return "", err | ||
| 72 | } | ||
| 73 | |||
| 74 | return sstr + "." + t.EncodeSegment(sig), nil | ||
| 75 | } | ||
| 76 | |||
| 77 | // SigningString generates the signing string. This is the most expensive part | ||
| 78 | // of the whole deal. Unless you need this for something special, just go | ||
| 79 | // straight for the SignedString. | ||
| 80 | func (t *Token) SigningString() (string, error) { | ||
| 81 | h, err := json.Marshal(t.Header) | ||
| 82 | if err != nil { | ||
| 83 | return "", err | ||
| 84 | } | ||
| 85 | |||
| 86 | c, err := json.Marshal(t.Claims) | ||
| 87 | if err != nil { | ||
| 88 | return "", err | ||
| 89 | } | ||
| 90 | |||
| 91 | return t.EncodeSegment(h) + "." + t.EncodeSegment(c), nil | ||
| 92 | } | ||
| 93 | |||
| 94 | // EncodeSegment encodes a JWT specific base64url encoding with padding | ||
| 95 | // stripped. In the future, this function might take into account a | ||
| 96 | // [TokenOption]. Therefore, this function exists as a method of [Token], rather | ||
| 97 | // than a global function. | ||
| 98 | func (*Token) EncodeSegment(seg []byte) string { | ||
| 99 | return base64.RawURLEncoding.EncodeToString(seg) | ||
| 100 | } | ||