Files
narco/jwt/base64.go

33 lines
715 B
Go

package jwt
import (
"encoding/base64"
"fmt"
"strings"
)
// Base64Encode encodes a payload of data as a string, like specified
// in RFC 7515 (no trailing '='
func Base64Encode(b []byte) string {
return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=")
}
// Base64Decode decodes a payload of data as a []byte, like specified
// in RFC 7515 (no trailing '=')
func Base64Decode(s string) ([]byte, error) {
switch len(s) % 4 {
case 2:
s += "=="
case 3:
s += "="
case 1:
return nil, fmt.Errorf("jwt: Invalid base64 string (length:%d %% 4 == 1): '%s'", len(s), s)
}
d, err := base64.URLEncoding.DecodeString(s)
if err != nil {
return nil, fmt.Errorf("jwt: %s", err)
}
return d, nil
}