// +build linux package utils /* #cgo CFLAGS: -I. #cgo LDFLAGS: -L./lib/linux -lsdkcore #include "sdkcore.h" #include */ 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 }