来源:hgdjnet-server 9bfbafe10d417deea959bd53117bc88a10e60a83 项目身份 HKDJ / JHA-216,独立官网仓库,Jenkins 守卫键 hkdjnet 测试目录 /server/hkdj_net,App/Web API 30331/30332 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
35 lines
668 B
Go
35 lines
668 B
Go
package googauth
|
|
|
|
import (
|
|
"github.com/dgryski/dgoogauth"
|
|
)
|
|
|
|
const windowSize = 30
|
|
const hotpWindowSize = 5
|
|
|
|
var HotpCfg = dgoogauth.OTPConfig{
|
|
Secret: "",
|
|
HotpCounter: 1,
|
|
WindowSize: hotpWindowSize,
|
|
}
|
|
|
|
func New(secret string, name string) string {
|
|
cfg := &dgoogauth.OTPConfig{
|
|
Secret: secret,
|
|
WindowSize: windowSize,
|
|
}
|
|
return cfg.ProvisionURI(name)
|
|
}
|
|
|
|
func Verify(secret string, pwd string) (bool, error) {
|
|
cfg := &dgoogauth.OTPConfig{
|
|
Secret: secret,
|
|
WindowSize: windowSize,
|
|
}
|
|
return cfg.Authenticate(pwd)
|
|
}
|
|
|
|
func VerifyHotp(cfg *dgoogauth.OTPConfig, authCode string, counter int) (bool, error) {
|
|
return cfg.Authenticate(authCode)
|
|
}
|