mirror of https://github.com/k3s-io/k3s
31 lines
579 B
Go
31 lines
579 B
Go
package auth
|
|
|
|
import "encoding/base64"
|
|
import "crypto/md5"
|
|
import "crypto/rand"
|
|
import "fmt"
|
|
|
|
/*
|
|
Return a random 16-byte base64 alphabet string
|
|
*/
|
|
func RandomKey() string {
|
|
k := make([]byte, 12)
|
|
for bytes := 0; bytes < len(k); {
|
|
n, err := rand.Read(k[bytes:])
|
|
if err != nil {
|
|
panic("rand.Read() failed")
|
|
}
|
|
bytes += n
|
|
}
|
|
return base64.StdEncoding.EncodeToString(k)
|
|
}
|
|
|
|
/*
|
|
H function for MD5 algorithm (returns a lower-case hex MD5 digest)
|
|
*/
|
|
func H(data string) string {
|
|
digest := md5.New()
|
|
digest.Write([]byte(data))
|
|
return fmt.Sprintf("%x", digest.Sum(nil))
|
|
}
|