diff --git a/hotp.go b/hotp.go index 7d2c752..abe3300 100644 --- a/hotp.go +++ b/hotp.go @@ -90,7 +90,8 @@ func hotpFromURL(u *url.URL) (*HOTP, string, error) { key, err := base32.StdEncoding.DecodeString(secret) if err != nil { - return nil, "", err + // secret isn't base32 encoded + key = []byte(secret) } otp := NewHOTP(key, counter, digits) return otp, label, nil diff --git a/otp_test.go b/otp_test.go index 7fec809..3b5e993 100644 --- a/otp_test.go +++ b/otp_test.go @@ -79,10 +79,7 @@ func TestBadURL(t *testing.T) { "foo", "otpauth:/foo/bar/baz", "://", - "otpauth://hotp/secret=bar", - "otpauth://hotp/?secret=QUJDRA&algorithm=SHA256", "otpauth://hotp/?digits=", - "otpauth://hotp/?secret=123", "otpauth://hotp/?secret=MFRGGZDF&digits=ABCD", "otpauth://hotp/?secret=MFRGGZDF&counter=ABCD", } diff --git a/totp.go b/totp.go index c3d6f3f..bb7c863 100644 --- a/totp.go +++ b/totp.go @@ -152,7 +152,8 @@ func totpFromURL(u *url.URL) (*TOTP, string, error) { key, err := base32.StdEncoding.DecodeString(secret) if err != nil { - return nil, "", err + // secret isn't base32 encoded + key = []byte(secret) } otp := NewTOTP(key, 0, period, digits, algo) return otp, label, nil