replace zxq.co/ripple/hanayo
This commit is contained in:
63
vendor/github.com/pquerna/otp/example/main.go
generated
vendored
Normal file
63
vendor/github.com/pquerna/otp/example/main.go
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/pquerna/otp"
|
||||
"github.com/pquerna/otp/totp"
|
||||
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"image/png"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
func display(key *otp.Key, data []byte) {
|
||||
fmt.Printf("Issuer: %s\n", key.Issuer())
|
||||
fmt.Printf("Account Name: %s\n", key.AccountName())
|
||||
fmt.Printf("Secret: %s\n", key.Secret())
|
||||
fmt.Println("Writing PNG to qr-code.png....")
|
||||
ioutil.WriteFile("qr-code.png", data, 0644)
|
||||
fmt.Println("")
|
||||
fmt.Println("Please add your TOTP to your OTP Application now!")
|
||||
fmt.Println("")
|
||||
}
|
||||
|
||||
func promptForPasscode() string {
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
fmt.Print("Enter Passcode: ")
|
||||
text, _ := reader.ReadString('\n')
|
||||
return text
|
||||
}
|
||||
|
||||
func main() {
|
||||
key, err := totp.Generate(totp.GenerateOpts{
|
||||
Issuer: "Example.com",
|
||||
AccountName: "alice@example.com",
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
// Convert TOTP key into a PNG
|
||||
var buf bytes.Buffer
|
||||
img, err := key.Image(200, 200)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
png.Encode(&buf, img)
|
||||
|
||||
// display the QR code to the user.
|
||||
display(key, buf.Bytes())
|
||||
|
||||
// Now Validate that the user's successfully added the passcode.
|
||||
fmt.Println("Validating TOTP...")
|
||||
passcode := promptForPasscode()
|
||||
valid := totp.Validate(passcode, key.Secret())
|
||||
if valid {
|
||||
println("Valid passcode!")
|
||||
os.Exit(0)
|
||||
} else {
|
||||
println("Invalid passocde!")
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user