From cd769ea498c08d5742b444fe6451b4c22899a317 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期一, 08 十一月 2021 15:45:10 +0800 Subject: [PATCH] 授权文件添加通道数 --- licence.go | 25 +++++++++++++++++++++++-- README.md | 3 +++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2dc2908..628c331 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,9 @@ // 楠岃瘉Licence, 鍙傛暟: LicenceFile, public.pem 鐨勮矾寰� 杩斿洖: 0, 鎴愬姛 1, 鏃犳晥 2, 璁惧鏈巿鏉� 3, 杩囨湡 fmt.Println(licence.VerifyLicence("./LicenceFile", "./public.pem")) + + // 鑾峰彇鎺堟潈閫氶亾鏁� + fmt.Println(licence.ReadGrantChannels("./LicenceFile", "./dev-public.pem")) } ``` \ No newline at end of file diff --git a/licence.go b/licence.go index 96f81ec..f92d706 100644 --- a/licence.go +++ b/licence.go @@ -6,12 +6,14 @@ "io/ioutil" "os" "time" + "errors" ) /* 1.0.0 閲囬泦鏈哄櫒鐮�, 鎺堟潈鏃ユ湡 鐒跺悗 AES 鍔犲瘑, 鐢熸垚Licence, 绉橀挜浼氭毚闇茬粰瀹㈡埛绔� 1.0.1 淇敼涓篟SA 闈炲绉板姞瀵�, 鍏挜寮�鏀�. 鍔犲瘑鍐呭涓簕娉ㄥ唽鐮亄鏈哄櫒鐮�+鍏徃+閭+鎵嬫満}+杩囨湡鏃堕棿+鎺堟潈鏃堕棿} 1.0.2 淇敼Licence鏂囦欢鍐呭鏈�缁堜负AES鍔犲瘑鍚庣殑鍐呭, 鐒跺悗鍐嶇敱鍏挜瑙e瘑. 涓婁釜鐗堟湰鐨刡ug, 浠呬娇鐢ㄩ潪瀵圭О鍔犲瘑, 鐢ㄦ埛鍙互鏇挎崲鍏挜 + 1.0.3 鎺堟潈鏂囦欢娣诲姞閫氶亾鏁伴噺, 澧炲姞璇诲彇閫氶亾鏁伴噺鎺ュ彛 */ type RegisterCode struct { MachineCode string @@ -23,6 +25,7 @@ type Licence struct { RegCode RegisterCode + Channel int64 Expires int64 Timestamp int64 } @@ -51,7 +54,7 @@ return AESDecodeStr(regCode, aesKey) } -func GenerateLicence(regCode, timeOut, privateKeyPath string) (string, error) { +func GenerateLicence(regCode, timeOut, privateKeyPath string, channel int64) (string, error) { timeLayout := "2006-01-02 15:04:05" //杞寲鎵�闇�妯℃澘 loc, _ := time.LoadLocation("Local") //鑾峰彇鏃跺尯 tmp, _ := time.ParseInLocation(timeLayout, timeOut, loc) @@ -64,7 +67,7 @@ return "", err } - licence := Licence{registerCode, exp, now} + licence := Licence{registerCode, channel,exp, now} json, err := json.Marshal(licence) if err != nil { return "", err @@ -152,6 +155,24 @@ return _verifyLicence(licenceText) } +func ReadGrantChannels(licencePath, publicKeyPath string) (int64, error) { + licenceText, err := DecryptLicenceFile(licencePath, publicKeyPath) + if err != nil { + return 0 ,err + } + + var licence Licence + if err := json.Unmarshal(licenceText, &licence); err != nil { + return 0, err + } + + if _verifyLicence(licenceText) != 0 { + return 0, errors.New("Invalid licence.") + } + + return licence.Channel, nil +} + func _verifyLicence(licenceText []byte) uint32 { var licence Licence var now = time.Now().Unix() -- Gitblit v1.8.0