documentation

This commit is contained in:
Dave Grijalva 2012-07-06 16:12:33 -07:00
parent 5119d0e151
commit 2ed3fe8ded
2 changed files with 13 additions and 0 deletions

10
jwt.go
View File

@ -16,6 +16,7 @@ type Token struct {
Method SigningMethod
// This is only populated when you Parse a token
Signature string
// This is only populated when you Parse/Verify a token
Valid bool
}
@ -29,6 +30,7 @@ func New(method SigningMethod)*Token {
}
}
// Get the complete, signed token
func (t *Token) SignedString(key []byte)(string, error) {
var sig, sstr string
var err error
@ -41,6 +43,10 @@ func (t *Token) SignedString(key []byte)(string, error) {
return strings.Join([]string{sstr, sig}, "."), nil
}
// Generate the signing string. This is the
// most expensive part of the whole deal. Unless you
// need this for something special, just go straight for
// the SignedString.
func (t *Token) SigningString()(string, error) {
var err error
parts := make([]string, 2)
@ -121,6 +127,8 @@ func Parse(tokenString string, keyFunc func(*Token) ([]byte, error)) (token *Tok
return
}
// Try to find the token in an http.Request.
// Currently, it only looks in the Authorization header
func ParseFromRequest(req *http.Request, keyFunc func(*Token) ([]byte, error)) (token *Token, err error) {
// Look for an Authorization header
@ -135,10 +143,12 @@ func ParseFromRequest(req *http.Request, keyFunc func(*Token) ([]byte, error)) (
}
// Encode JWT specific base64url encoding with padding stripped
func EncodeSegment(seg []byte)string {
return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=")
}
// Decode JWT specific base64url encoding with padding stripped
func DecodeSegment(seg string) ([]byte, error) {
// len % 4
switch len(seg) % 4 {

View File

@ -14,10 +14,13 @@ type SigningMethod interface {
Alg() string
}
// Register the "alg" name and a factory function for signing method.
// This is typically done during init() in the method's implementation
func RegisterSigningMethod(alg string, f func() SigningMethod) {
signingMethods[alg] = f
}
// Get a signing method from an "alg" string
func GetSigningMethod(alg string) (method SigningMethod, err error) {
if methodF, ok := signingMethods[alg]; ok {
method = methodF()