29 lines
593 B
Go
29 lines
593 B
Go
package backend
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/pquerna/otp"
|
|
"github.com/pquerna/otp/totp"
|
|
)
|
|
|
|
const (
|
|
spotifyTOTPSecret = "GM3TMMJTGYZTQNZVGM4DINJZHA4TGOBYGMZTCMRTGEYDSMJRHE4TEOBUG4YTCMRUGQ4DQOJUGQYTAMRRGA2TCMJSHE3TCMBY"
|
|
spotifyTOTPVersion = 61
|
|
)
|
|
|
|
func generateSpotifyTOTP(now time.Time) (string, int, error) {
|
|
key, err := otp.NewKeyFromURL(fmt.Sprintf("otpauth://totp/secret?secret=%s", spotifyTOTPSecret))
|
|
if err != nil {
|
|
return "", 0, err
|
|
}
|
|
|
|
code, err := totp.GenerateCode(key.Secret(), now)
|
|
if err != nil {
|
|
return "", 0, err
|
|
}
|
|
|
|
return code, spotifyTOTPVersion, nil
|
|
}
|