16552: change default db name to just arvados.
[arvados.git] / sdk / go / auth / salt.go
index f669eb2760e16a9ec32454de6b5eb925aae57f85..214021598641a057aafbfa15c0f74f5720878d00 100644 (file)
@@ -9,6 +9,7 @@ import (
        "crypto/sha1"
        "errors"
        "fmt"
+       "io"
        "regexp"
        "strings"
 )
@@ -25,15 +26,16 @@ func SaltToken(token, remote string) (string, error) {
        if len(parts) < 3 || parts[0] != "v2" {
                if reObsoleteToken.MatchString(token) {
                        return "", ErrObsoleteToken
-               } else {
-                       return "", ErrTokenFormat
                }
+               return "", ErrTokenFormat
        }
        uuid := parts[1]
        secret := parts[2]
        if len(secret) != 40 {
                // not already salted
-               secret = fmt.Sprintf("%x", hmac.New(sha1.New, []byte(secret)).Sum([]byte(remote)))
+               hmac := hmac.New(sha1.New, []byte(secret))
+               io.WriteString(hmac, remote)
+               secret = fmt.Sprintf("%x", hmac.Sum(nil))
                return "v2/" + uuid + "/" + secret, nil
        } else if strings.HasPrefix(uuid, remote) {
                // already salted for the desired remote