finclip-app-manager/infrastructure/utils/encrypt.go

119 lines
3.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// +build linux
package utils
/*
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L./lib/linux -lsdkcore
#include "sdkcore.h"
#include <stdlib.h>
*/
import "C"
import (
"fmt"
"unsafe"
"finclip-app-manager/infrastructure/config"
)
const (
BundleIDFinChatIOS = "com.finogeeks.finchat.oa"
BundleIDFinChatAndroid = "com.finogeeks.finochatapp"
BundleFTHelp = "com.finogeeks.mop.finosprite"
BundleIDFinElves = "com.finogeeks.finosprite"
BundleIDDemo = "com.finogeeks.finchat.finappletdemo"
BundleIDSample = "com.finogeeks.lib.applet.sample"
BundleIdVerifyAssistant = "com.finogeeks.mop.finoverify"
SecretFinChatIOS = "919248e19a6c7fd3"
SecretFinChatAndroid = "154a4a31a57e75cb"
SecretFinElves = "703b9026be3d6bc5"
SecretDemo = "705b46f78820c7a8"
SecretSample = "42ac8b95d32b95e7"
SecretVerifyAssistant = "b2f3d5bd38b0bfa5"
)
const (
BUFF_LEN = 1024 * 4
)
var SDKKeyFinChatIOS string
var SDKKeyFinChatAndroid string
var SDKKeyFTHelp string
var SDKKeyFinElves string
var SDKKeyDemo string
var SDKKeySample string
var SDKKeyVerifyAssistant string
var SDKArry []string
func init() {
ver := config.Cfg.SDKVersion
SDKKeyFinChatIOS = Encrypt(ver + "&" + BundleIDFinChatIOS)
SDKKeyFinChatAndroid = Encrypt(ver + "&" + BundleIDFinChatAndroid)
SDKKeyFTHelp = Encrypt(ver + "&" + BundleFTHelp)
SDKKeyFinElves = Encrypt(ver + "&" + BundleIDFinElves)
SDKKeyDemo = Encrypt(ver + "&" + BundleIDDemo)
SDKKeySample = Encrypt(ver + "&" + BundleIDSample)
SDKKeyVerifyAssistant = Encrypt(ver + "&" + BundleIdVerifyAssistant)
SDKArry = []string{SDKKeyFinChatIOS, SDKKeyFinChatAndroid, SDKKeyFTHelp, SDKKeyFinElves, SDKKeyDemo, SDKKeySample, SDKKeyVerifyAssistant}
fmt.Println("SDK Keys:", SDKKeyFinChatIOS, SDKKeyFTHelp, SDKKeyFinChatAndroid, SDKKeyFinElves, SDKKeyDemo, SDKKeySample, SDKKeyVerifyAssistant)
//fmt.Println("test secret:", GenAppSecret(SDKKeyFTHelp))
fmt.Println("SDK Arry", SDKArry)
}
// 国密算法加密
func EncryptSM4(str string) string {
//cmd := C.CBytes([]byte(str))
cmd := C.CString(str)
rlen := C.uint(BUFF_LEN)
s := make([]byte, BUFF_LEN)
C.encodeBySM4((*C.uchar)((unsafe.Pointer)(cmd)), C.uint(len(str)), (*C.uchar)(unsafe.Pointer(&s[0])), &rlen)
for i := 0; i < len(s); i++ {
if s[i] == 0 {
s = s[:i]
break
}
}
str2 := string(s[:])
C.free((unsafe.Pointer)(cmd))
return str2
}
// Encrypt 对称加密调用cgo静态库
func Encrypt(str string) string {
//cmd := C.CBytes([]byte(str))
cmd := C.CString(str)
rlen := C.uint(BUFF_LEN)
s := make([]byte, BUFF_LEN)
C.encode((*C.uchar)((unsafe.Pointer)(cmd)), C.uint(len(str)), (*C.uchar)(unsafe.Pointer(&s[0])), &rlen)
for i := 0; i < len(s); i++ {
if s[i] == 0 {
s = s[:i]
break
}
}
str2 := string(s[:])
C.free((unsafe.Pointer)(cmd))
return str2
}
// Encrypt 对称加密调用cgo静态库
func EncodeAESContent(str string) string {
cmd := C.CString(str)
rlen := C.uint(BUFF_LEN)
s := make([]byte, BUFF_LEN)
C.encodeAESContent((*C.uchar)((unsafe.Pointer)(cmd)), C.uint(len(str)), (*C.uchar)(unsafe.Pointer(&s[0])), &rlen)
for i := 0; i < len(s); i++ {
if s[i] == 0 {
s = s[:i]
break
}
}
str2 := string(s[:])
C.free((unsafe.Pointer)(cmd))
return str2
}