X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/b25c4a19420c2fde1f290dd360c68b84e4eaa1ed..8277fb93fd2c957e5fd609b68a001babea46cdc4:/hotline/user.go diff --git a/hotline/user.go b/hotline/user.go index 5d09b2d..ff4006a 100644 --- a/hotline/user.go +++ b/hotline/user.go @@ -2,6 +2,8 @@ package hotline import ( "encoding/binary" + "golang.org/x/crypto/bcrypt" + "log" ) // User flags are stored as a 2 byte bitmap with the following values: @@ -12,6 +14,13 @@ const ( userFLagRefusePChat = 3 // User refuses private chat ) +// fieldOptions flags are sent from v1.5+ clients as part of tranAgreed +const ( + refusePM = 0 // User has "Refuse private messages" pref set + refuseChat = 1 // User has "Refuse private chat" pref set + autoResponse = 2 // User has "Automatic response" pref set +) + type User struct { ID []byte // Size 2 Icon []byte // Size 2 @@ -68,3 +77,18 @@ func negateString(clearText []byte) []byte { } return obfuText } + +func hashAndSalt(pwd []byte) string { + // Use GenerateFromPassword to hash & salt pwd. + // MinCost is just an integer constant provided by the bcrypt + // package along with DefaultCost & MaxCost. + // The cost can be any value you want provided it isn't lower + // than the MinCost (4) + hash, err := bcrypt.GenerateFromPassword(pwd, bcrypt.MinCost) + if err != nil { + log.Println(err) + } + // GenerateFromPassword returns a byte slice so we need to + // convert the bytes to a string and return it + return string(hash) +}