mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-06 19:29:15 +08:00
30 lines
491 B
Go
30 lines
491 B
Go
package message
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"hash/crc64"
|
|
)
|
|
|
|
type Token []byte
|
|
|
|
func (t Token) String() string {
|
|
return hex.EncodeToString(t)
|
|
}
|
|
|
|
func (t Token) Hash() uint64 {
|
|
return crc64.Checksum(t, crc64.MakeTable(crc64.ISO))
|
|
}
|
|
|
|
// GetToken generates a random token by a given length
|
|
func GetToken() (Token, error) {
|
|
b := make(Token, 8)
|
|
_, err := rand.Read(b)
|
|
// Note that err == nil only if we read len(b) bytes.
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return b, nil
|
|
}
|