12345678910111213141516171819202122232425262728293031 |
- package main
- import (
- "crypto/hmac"
- "crypto/sha256"
- "encoding/base64"
- "errors"
- )
- var (
- errInvalidToken = errors.New("Invalid token")
- errInvalidURLEncoding = errors.New("Invalid token encoding")
- )
- func validatePath(token, path string) error {
- messageMAC, err := base64.RawURLEncoding.DecodeString(token)
- if err != nil {
- return errInvalidURLEncoding
- }
- mac := hmac.New(sha256.New, conf.Key)
- mac.Write(conf.Salt)
- mac.Write([]byte(path))
- expectedMAC := mac.Sum(nil)
- if !hmac.Equal(messageMAC, expectedMAC) {
- return errInvalidToken
- }
- return nil
- }
|