版本封存

This commit is contained in:
zeaslity
2025-12-06 11:26:05 +08:00
parent 13949e1ba8
commit c0ae5e30c4
57 changed files with 2443 additions and 1428 deletions

View File

@@ -1,41 +1,31 @@
package services
import (
"cmii-uav-watchdog-common/totp_tier_one"
"cmii-uav-watchdog/config"
"log"
"time"
otp "cmii-uav-watchdog-otp"
"cmii-uav-watchdog-otp/totp"
)
var tierTwoTOTPSecretOpts = totp.GenerateOpts{
SecretSize: 32,
Issuer: "cmii-uav-watchdog",
AccountName: "cmii-uav-watchdog",
Period: 30,
Secret: []byte{},
Digits: otp.DigitsSix,
Algorithm: otp.AlgorithmSHA1,
Rand: nil,
}
// TOTPService TOTP服务
type TOTPService struct {
secret string
tierOneSecret string
}
// NewTOTPService 创建TOTP服务
func NewTOTPService() *TOTPService {
secret := config.GetConfig().TierOneAuth.TierOneSecret
if secret == "" {
panic("TierOne TOTP tierOneSecret is not set ! can not start the service!")
}
return &TOTPService{
secret: config.GetConfig().Auth.Secret,
tierOneSecret: secret,
}
}
// GenerateTierOneTOTP 生成一级TOTP验证码
func (ts *TOTPService) GenerateTierOneTOTP() (string, error) {
// 使用当前时间生成TOTP
code, err := totp.GenerateCode(ts.secret, time.Now())
code, err := totp_tier_one.GenerateTierOneTOTPCode(ts.tierOneSecret)
if err != nil {
return "", err
}
@@ -46,41 +36,7 @@ func (ts *TOTPService) GenerateTierOneTOTP() (string, error) {
// VerifyTierOneTOTP 验证一级TOTP验证码
func (ts *TOTPService) VerifyTierOneTOTP(code string) bool {
// 验证TOTP
valid := totp.Validate(code, ts.secret)
if !valid {
return false
}
valid := totp_tier_one.VerifyTierOneTOTPCode(code, ts.tierOneSecret)
return true
}
// GenerateTierTwoTOTPSecret 生成二级TOTP密钥
func (ts *TOTPService) GenerateTierTwoTOTPSecret() (string, error) {
secret, err := totp.Generate(tierTwoTOTPSecretOpts)
if err != nil {
log.Printf("生成TOTP密钥失败: %v", err)
return "", err
}
return secret.Secret(), nil
}
// GenerateTierTwoTOTPCode 生成二级TOTP验证码
func (ts *TOTPService) GenerateTierTwoTOTPCode(secret string) (string, error) {
code, err := totp.GenerateCode(secret, time.Now())
if err != nil {
return "", err
}
return code, nil
}
// VerifyTierTwoTOTPCode 验证二级TOTP验证码
func (ts *TOTPService) VerifyTierTwoTOTPCode(code string, secret string) bool {
validateOpts := totp.ValidateOpts{}
validateOpts.ConvertToValidateOpts(tierTwoTOTPSecretOpts)
valid, err := totp.ValidateCustom(code, secret, time.Now(), validateOpts)
if err != nil {
return false
}
return valid
}