cmca登录判断用户名

This commit is contained in:
TsMask
2023-08-23 19:27:35 +08:00
parent 64df6e9f72
commit ff29c0a9b9
2 changed files with 15 additions and 4 deletions

View File

@@ -50,7 +50,7 @@ func (*ReqCMCALoginAlarm) Handle(request ziface.IRequest) {
seqNo := m.GetUserByPID(uid.(string)).SeqNo
content := username + ":" + seqNo
// 检查判断是否对应随机码
if err := service.CMCALogin(cert, content, key); err != nil {
if err := service.CMCALogin(username, cert, content, key); err != nil {
zlog.Ins().ErrorF("LoginFail %s", err)
request.GetConnection().SendMsg(ReqLoginAlarmMsgType, core.Result(ReqLoginAlarmMsgName, map[string]string{
"result": "autherror",

View File

@@ -30,20 +30,31 @@ func UserLogin(name, passwd string) error {
// CMCALogin 验证随机码
// content "user:seqNo" 组合的字符
// signatureBase64 签名数据base64编码
func CMCALogin(publicKeyStr, content, signatureBase64 string) error {
func CMCALogin(name, publicKeyStr, content, signatureBase64 string) error {
// 用户名密码校验
var user model.User
err := db.Client.Model(&model.User{}).Where("account_id=?", name).First(&user).Error
if err != nil {
return err
}
if user.AccountId != name {
return fmt.Errorf("用户名错误 %s", name)
}
// 公钥
publicKeyPEM := fmt.Sprintf("-----BEGIN RSA PUBLIC KEY-----\n %s \n-----END RSA PUBLIC KEY-----", publicKeyStr)
// 解析公钥
publicKey, err := utils.ParsePKCS1PublicKey(publicKeyPEM)
if err != nil {
fmt.Println("解析公钥失败:", err)
return fmt.Errorf("解析公钥失败 %s", err)
}
// 解码base64得到签名字节串
signature, err := base64.StdEncoding.DecodeString(signatureBase64)
if err != nil {
fmt.Println("解码签名数据失败:", err)
return fmt.Errorf("解码签名数据失败 %s", err)
}
// 验证签名