From 80e1f059585c4446ebbbd340b1255101c7b875f3 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期五, 22 十一月 2019 14:30:39 +0800 Subject: [PATCH] fix: add decrypt Licence code & file api --- licence.go | 52 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 39 insertions(+), 13 deletions(-) diff --git a/licence.go b/licence.go index 2bdb2d8..f59f359 100644 --- a/licence.go +++ b/licence.go @@ -2,6 +2,7 @@ import ( "encoding/json" + "fmt" "io/ioutil" "os" "time" @@ -50,7 +51,7 @@ return AESDecodeStr(regCode, aesKey) } -func GenerateLicence(regCode, timeOut string, privateKey []byte) (string, error) { +func GenerateLicence(regCode, timeOut, privateKeyPath string) (string, error) { timeLayout := "2006-01-02 15:04:05" //杞寲鎵�闇�妯℃澘 loc, _ := time.LoadLocation("Local") //鑾峰彇鏃跺尯 tmp, _ := time.ParseInLocation(timeLayout, timeOut, loc) @@ -69,6 +70,19 @@ return "", err } + fd, err := os.Open(privateKeyPath) + if err != nil { + fmt.Println(err) + return "", err + } + + defer fd.Close() + privateKey, err := ioutil.ReadAll(fd) + if err != nil { + fmt.Println(err) + return "", err + } + RSA := &RSASecurity{} if err := RSA.SetPrivateKey(privateKey); err != nil { return "", err @@ -82,31 +96,31 @@ return AESEncodeStr(licenceHex, aesKey), nil } -func DecryptLicence(licencePath, publicKeyPath string) ([]byte, error) { - var publicKey, licenceCode []byte - var fdLic, fdPub *os.File - var err error - +func DecryptLicenceFile(licencePath, publicKeyPath string) ([]byte, error) { // 璇诲彇Licence File - fdLic, err = os.Open(licencePath) + fdLic, err := os.Open(licencePath) if err != nil { return nil, err } defer fdLic.Close() - licenceCode, err = ioutil.ReadAll(fdLic) + licenceCode, err := ioutil.ReadAll(fdLic) if err != nil { return nil, err } + return DecryptLicence(string(licenceCode), publicKeyPath) +} + +func DecryptLicence(licenceCode, publicKeyPath string) ([]byte, error) { // 璇诲彇鍏挜 - fdPub, err = os.Open(publicKeyPath) + fdPub, err := os.Open(publicKeyPath) if err != nil { return nil, err } defer fdPub.Close() - publicKey, err = ioutil.ReadAll(fdPub) + publicKey, err := ioutil.ReadAll(fdPub) if err != nil { return nil, err } @@ -116,17 +130,29 @@ return nil, err } - licenceHex := AESDecodeStr(string(licenceCode), aesKey) + licenceHex := AESDecodeStr(licenceCode, aesKey) return RSA.PubKeyDECRYPT(licenceHex) } -func VerifyLicence(licencePath, publicKeyPath string) uint32 { - licenceText, err := DecryptLicence(licencePath, publicKeyPath) +func VerifyLicenceFile(licencePath, publicKeyPath string) uint32 { + licenceText, err := DecryptLicenceFile(licencePath, publicKeyPath) + if err != nil { + return ValidationErrorDecrypt + } + return _verifyLicence(licenceText) +} + +func VerifyLicence(licenceCode, publicKeyPath string) uint32 { + licenceText, err := DecryptLicence(licenceCode, publicKeyPath) if err != nil { return ValidationErrorDecrypt } + return _verifyLicence(licenceText) +} + +func _verifyLicence(licenceText []byte) uint32 { var licence Licence if err := json.Unmarshal(licenceText, &licence); err != nil { -- Gitblit v1.8.0