golang

golang版google pay 支付签名验证

2020-06-10  本文已影响0人  顶尖少爷

golang版google pay 支付签名验证


//data :purchaseData 订单信息
//sign dataSignature 签名
//publicKey 谷歌公钥 无需加-----

func verifyGoogleSign(data string , sign string,publicKey string) (bool,error) {

    decodePublic,err:=base64.StdEncoding.DecodeString(publicKey)
    if err!=nil{
        return false,err
    }
    pubInterface ,err:=x509.ParsePKIXPublicKey(decodePublic)
    if err!=nil{
        return false,err
    }

    pub:=pubInterface.(*rsa.PublicKey)

    decodeSign,err:=base64.StdEncoding.DecodeString(sign)
    if err!=nil{
        return false,err
    }

    sh1:=sha1.New()
    sh1.Write([]byte(data))
    hashData := sh1.Sum(nil)

    result := rsa.VerifyPKCS1v15(pub, crypto.SHA1, hashData, decodeSign)
    if result!=nil{
        return false,err
    }
    return true,nil
}
上一篇 下一篇

猜你喜欢

热点阅读