yubidude/main.go

56 lines
979 B
Go

package main
import (
"bufio"
"flag"
"fmt"
"log"
"os"
"strings"
"github.com/GeertJohan/yubigo"
"github.com/facebookgo/flagenv"
_ "github.com/joho/godotenv/autoload"
)
var (
clientID = flag.String("client-id", "", "yubikey client ID")
secretKey = flag.String("secret-key", "", "yubikey secret key")
)
func main() {
flagenv.Parse()
flag.Parse()
ya, err := yubigo.NewYubiAuth(*clientID, *secretKey)
if err != nil {
log.Fatal("bad creds:", err)
}
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
otp, err := reader.ReadString('\n')
if err != nil {
log.Fatal("error reading OTP:", err)
}
otp = strings.TrimSpace(otp)
fmt.Println("input: ", otp)
pubID, _, err := yubigo.ParseOTP(otp)
if err != nil {
log.Fatal("error parsing OTP:", err)
}
fmt.Println("prefix:", string(pubID))
_, ok, err := ya.Verify(otp)
if err != nil {
log.Fatal("bad response:", err)
}
if !ok {
log.Fatal("not ok")
}
fmt.Println("code is valid")
}