diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2022-05-05 21:20:22 -0600 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2022-05-05 21:20:22 -0600 |
commit | eed10ce514f28e4acf772f76c92ca05eebec105f (patch) | |
tree | d76820d7a3cd23f09f7dd0e6065bb0cef7ba16dc /srv/chat/user.go | |
parent | cc8b6289ac3f7d1abb648217949beb89827d7374 (diff) |
Fix various problems with the srv build
Diffstat (limited to 'srv/chat/user.go')
-rw-r--r-- | srv/chat/user.go | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/srv/chat/user.go b/srv/chat/user.go deleted file mode 100644 index 3f5ab95..0000000 --- a/srv/chat/user.go +++ /dev/null @@ -1,68 +0,0 @@ -package chat - -import ( - "encoding/hex" - "fmt" - "sync" - - "golang.org/x/crypto/argon2" -) - -// UserID uniquely identifies an individual user who has posted a message in a -// Room. -type UserID struct { - - // Name will be the user's chosen display name. - Name string `json:"name"` - - // Hash will be a hex string generated from a secret only the user knows. - Hash string `json:"id"` -} - -// UserIDCalculator is used to calculate UserIDs. -type UserIDCalculator struct { - - // Secret is used when calculating UserID Hash salts. - Secret []byte - - // TimeCost, MemoryCost, and Threads are used as inputs to the Argon2id - // algorithm which is used to generate the Hash. - TimeCost, MemoryCost uint32 - Threads uint8 - - // HashLen specifies the number of bytes the Hash should be. - HashLen uint32 - - // Lock, if set, forces concurrent Calculate calls to occur sequentially. - Lock *sync.Mutex -} - -// NewUserIDCalculator returns a UserIDCalculator with sane defaults. -func NewUserIDCalculator(secret []byte) *UserIDCalculator { - return &UserIDCalculator{ - Secret: secret, - TimeCost: 15, - MemoryCost: 128 * 1024, - Threads: 2, - HashLen: 16, - Lock: new(sync.Mutex), - } -} - -// Calculate accepts a name and password and returns the calculated UserID. -func (c *UserIDCalculator) Calculate(name, password string) UserID { - - input := fmt.Sprintf("%q:%q", name, password) - - hashB := argon2.IDKey( - []byte(input), - c.Secret, // salt - c.TimeCost, c.MemoryCost, c.Threads, - c.HashLen, - ) - - return UserID{ - Name: name, - Hash: hex.EncodeToString(hashB), - } -} |