Commit 4c579f13 authored by szh's avatar szh

update

parent f3acae1c
...@@ -13,6 +13,7 @@ import ( ...@@ -13,6 +13,7 @@ import (
twiReq "courseSign/server/model/twi/request" twiReq "courseSign/server/model/twi/request"
"courseSign/server/service" "courseSign/server/service"
"courseSign/server/utils" "courseSign/server/utils"
"courseSign/server/utils/chain33"
"github.com/33cn/chain33/common/address" "github.com/33cn/chain33/common/address"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
...@@ -265,11 +266,24 @@ func (courseUsersApi *CourseUsersApi) MetaMaskLogin(c *gin.Context) { ...@@ -265,11 +266,24 @@ func (courseUsersApi *CourseUsersApi) MetaMaskLogin(c *gin.Context) {
response.FailWithMessage(err.Error(), c) response.FailWithMessage(err.Error(), c)
return return
} }
if time.Now().Unix() - 1800 > signTime { if time.Now().Unix()/1000 - 1800 > signTime {
response.FailWithMessage("签名时间已过期,请重新签名", c) response.FailWithMessage("签名时间已过期,请重新签名", c)
return return
} }
var eipSign chain33.EIP191
eipSign.Signature = loginUser.Signature
eipSign.Msg = loginUser.Msg
eipSign.Address = loginUser.Addr
pass,err := chain33.VerifyPersonalSign(eipSign)
if err != nil {
global.GVA_LOG.Error("VerifyPersonalSign",zap.Error(err))
response.FailWithMessage("验签失败", c)
return
}
if !pass {
response.FailWithMessage("验签未通过", c)
return
}
// device token // device token
deviceCode := utils.CreateDeviceCode(loginUser.Addr) deviceCode := utils.CreateDeviceCode(loginUser.Addr)
......
...@@ -10,9 +10,9 @@ import ( ...@@ -10,9 +10,9 @@ import (
) )
type EIP191 struct { type EIP191 struct {
msg string Msg string
signature string Signature string
address string Address string
} }
func check(e error) { func check(e error) {
...@@ -36,7 +36,7 @@ func signEIP191(message string) common.Hash { ...@@ -36,7 +36,7 @@ func signEIP191(message string) common.Hash {
} }
func VerifyPersonalSign(eipChallenge EIP191) (bool,error) { func VerifyPersonalSign(eipChallenge EIP191) (bool,error) {
decodedSig, err := hexutil.Decode(eipChallenge.signature) decodedSig, err := hexutil.Decode(eipChallenge.Signature)
if err != nil { if err != nil {
return false,err return false,err
} }
...@@ -50,7 +50,7 @@ func VerifyPersonalSign(eipChallenge EIP191) (bool,error) { ...@@ -50,7 +50,7 @@ func VerifyPersonalSign(eipChallenge EIP191) (bool,error) {
decodedSig[64] -= 27 // shift byte? decodedSig[64] -= 27 // shift byte?
} }
hash := signEIP191(eipChallenge.msg) hash := signEIP191(eipChallenge.Msg)
recoveredPublicKey, err := crypto.Ecrecover(hash.Bytes(), decodedSig) recoveredPublicKey, err := crypto.Ecrecover(hash.Bytes(), decodedSig)
if err != nil { if err != nil {
...@@ -64,7 +64,7 @@ func VerifyPersonalSign(eipChallenge EIP191) (bool,error) { ...@@ -64,7 +64,7 @@ func VerifyPersonalSign(eipChallenge EIP191) (bool,error) {
recoveredAddress := crypto.PubkeyToAddress(*secp256k1RecoveredPublicKey).Hex() recoveredAddress := crypto.PubkeyToAddress(*secp256k1RecoveredPublicKey).Hex()
fmt.Println("Signature matches known address!","recover addr ",recoveredAddress ,"req addr",eipChallenge.address) fmt.Println("Signature matches known address!","recover addr ",recoveredAddress ,"req addr",eipChallenge.Address)
return hasMatchingAddress(eipChallenge.address, recoveredAddress),nil return hasMatchingAddress(eipChallenge.Address, recoveredAddress),nil
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment