Library to generate TOTP/HOTP codes
go get -u github.com/grijul/otpgen
Here is a sample demonstration
package main
import (
"fmt"
"github.com/grijul/otpgen"
)
func main() {
// Generate TOTP
totp := otpgen.TOTP{
Secret: "testpass",
Digits: 8, //(optional) (default: 6)
Algorithm: "SHA256", //(optional) (default: SHA1)
Period: 45, //(optional) (default: 30)
UnixTime: 11111111, //(optional) (default: Current Unix Time)
}
if otp, err := totp.Generate(); err == nil {
fmt.Println(otp)
} else {
fmt.Println(err.Error())
}
// Generate HOTP
hotp := otpgen.HOTP{
Secret: "testsecret",
Counter: 100, //(default: 0)
Digits: 8, //(optional) (default: 6)
}
if otp, err := hotp.Generate(); err == nil {
fmt.Println(otp)
} else {
fmt.Println(err.Error())
}
}