This commit is contained in:
TsMask
2023-08-21 11:02:58 +08:00
parent 788f01674a
commit 4a3e6d7d67
26 changed files with 664 additions and 50 deletions

View File

@@ -1,8 +1,13 @@
package service
import (
"crypto/x509"
"encoding/base64"
"encoding/pem"
"errors"
"github.com/aceld/zinx/zlog"
"omc/ca"
"omc/conf"
"omc/db"
"omc/lib"
"omc/model"
@@ -21,3 +26,38 @@ func UserLogin(name, pw string) error {
}
return nil
}
func CMCALogin(source, sign, cert string) (login bool, err error) {
defer func() {
if r := recover(); r != nil {
zlog.Ins().ErrorF("CMCALogin panic:%v", r)
}
}()
//base64 解码签名数据
signBytes, err := base64.StdEncoding.DecodeString(sign)
if err != nil {
return false, err
}
//证书加载
block, _ := pem.Decode([]byte(cert))
//证书解析
certBody, err := x509.ParseCertificate(block.Bytes)
if err != nil {
return false, err
}
//证书校验
if conf.OmcConf.CA.Check {
if err := ca.VerifyCert(certBody); err != nil {
return false, err
}
}
//签名验证
err = ca.VerifyRSA([]byte(source), signBytes, certBody)
if err != nil {
return false, err
}
return true, nil
}