Only fetch current time once per refresh for TOTP code generation

This commit is contained in:
2024-03-21 14:44:58 -04:00
parent ad7524f544
commit 8f98f1b61c
+5 -4
View File
@@ -28,9 +28,10 @@ func CopyArgument(targetLocation string, field int, executableName string) {
copySubject = decryptedEntry[field] copySubject = decryptedEntry[field]
} else { // TOTP mode } else { // TOTP mode
for { // keep field copied to clipboard, refresh on 30-second intervals for { // keep field copied to clipboard, refresh on 30-second intervals
copyField(genTOTP(decryptedEntry[5]), "") currentTime := time.Now()
copyField(genTOTP(decryptedEntry[5], currentTime), "")
// sleep until next 30-second interval // sleep until next 30-second interval
time.Sleep(time.Duration(30-(time.Now().Second()%30)) * time.Second) time.Sleep(time.Duration(30-(currentTime.Second()%30)) * time.Second)
} }
} }
} else { } else {
@@ -56,8 +57,8 @@ func ClipClearArgument() {
} }
// genTOTP generates a TOTP token from a secret // genTOTP generates a TOTP token from a secret
func genTOTP(secret string) string { func genTOTP(secret string, time time.Time) string {
totpToken, err := totp.GenerateCode(secret, time.Now()) totpToken, err := totp.GenerateCode(secret, time)
if err != nil { if err != nil {
fmt.Println(AnsiError + "Error generating TOTP code" + AnsiReset) fmt.Println(AnsiError + "Error generating TOTP code" + AnsiReset)
os.Exit(1) os.Exit(1)