diff --git a/clip/totp.go b/clip/totp.go index 22eead9..8ef5c77 100644 --- a/clip/totp.go +++ b/clip/totp.go @@ -11,13 +11,14 @@ import ( "github.com/pquerna/otp/totp" ) -// GenTOTP generates a TOTP token from a secret (supports standard and Steam TOTP). -func GenTOTP(secret string, time time.Time, forSteam bool) (string, error) { +// GenTOTP generates a TOTP token from a secret. +// Prefix `secret` with "steam@" for Steam TOTP format. +func GenTOTP(secret string, time time.Time) (string, error) { var totpToken string var err error - if forSteam { - totpToken, err = totp.GenerateCodeCustom(secret, time, totp.ValidateOpts{Period: 30, Digits: 5, Encoder: otp.EncoderSteam}) + if strings.HasPrefix(secret, "steam@") { + totpToken, err = totp.GenerateCodeCustom(secret[6:], time, totp.ValidateOpts{Period: 30, Digits: 5, Encoder: otp.EncoderSteam}) } else { totpToken, err = totp.GenerateCode(secret, time) } @@ -32,15 +33,9 @@ func GenTOTP(secret string, time time.Time, forSteam bool) (string, error) { // TOTPCopier is meant to be run as a goroutine to keep // the clipboard up-to-date with the latest TOTP token. func TOTPCopier(secret string, errorChan chan<- error, done <-chan bool) { - var forSteam bool - if strings.HasPrefix(secret, "steam@") { - secret = secret[6:] - forSteam = true - } - for { currentTime := time.Now() - token, err := GenTOTP(secret, currentTime, forSteam) + token, err := GenTOTP(secret, currentTime) if err != nil { errorChan <- err }