Files
cmii-uav-watchdog-project/cmii-uav-watchdog/services/totp_service.go

44 lines
780 B
Go

package services
import (
"cmii-uav-watchdog/config"
"errors"
"time"
"cmii-uav-watchdog-otp/totp"
)
// TOTPService TOTP服务
type TOTPService struct {
secret string
}
// NewTOTPService 创建TOTP服务
func NewTOTPService() *TOTPService {
return &TOTPService{
secret: config.GetConfig().Auth.Secret,
}
}
// GenerateTOTP 生成TOTP验证码
func (ts *TOTPService) GenerateTOTP() (string, error) {
// 使用当前时间生成TOTP
code, err := totp.GenerateCode(ts.secret, time.Now())
if err != nil {
return "", err
}
return code, nil
}
// VerifyTOTP 验证TOTP验证码
func (ts *TOTPService) VerifyTOTP(code string) error {
// 验证TOTP
valid := totp.Validate(code, ts.secret)
if !valid {
return errors.New("无效的TOTP验证码")
}
return nil
}