You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
830 B

package secure
import (
"encoding/base64"
jsoniter "github.com/json-iterator/go"
"github.com/nanjishidu/gomini/gocrypto"
)
type NetPackage struct {
Body string `json:"body"`
Key string `json:"key"`
}
func Decrypt(text []byte) ([]byte, error) {
np := NetPackage{}
err := jsoniter.Unmarshal(text, &np)
if err != nil {
return nil, err
}
originalKey, _ := base64.StdEncoding.DecodeString(np.Key)
key, err := gocrypto.RSADecrypt(originalKey, "credentials/app/server_rsa_private_key.pem")
if err != nil {
return nil, err
}
err = gocrypto.SetAesKey(string(key))
if err != nil {
return nil, err
}
originalBody, err := base64.StdEncoding.DecodeString(np.Body)
if err != nil {
return nil, err
}
body, err := gocrypto.AesECBDecrypt(originalBody)
if err != nil {
return nil, err
}
return body, nil
}