1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /**
- * Copyright (c) 2022 Yansen Zhang
- * wxcomponent is licensed under Mulan PSL v2.
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
- * You may obtain a copy of Mulan PSL v2 at:
- * http://license.coscl.org.cn/MulanPSL2
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
- * See the Mulan PSL v2 for more details.
- **/
-
- package wxcomponent
-
- import (
- "encoding/base64"
- "encoding/xml"
-
- "gitee.com/yansen_zh/wxcomponent/utils/encrypt"
- "gitee.com/yansen_zh/wxcomponent/utils/log"
- )
-
- // EncryptMessage 待解密数据
- type EncryptMessage struct {
- XMLName xml.Name `xml:"xml"`
- ToUserName string `xml:"ToUserName"`
- Encrypt string `xml:"Encrypt"`
- }
-
- // DecodeMessage 解密消息
- func DecodeMessage(src []byte) (*encrypt.XMLMap, error) {
- log.Info("解码 xml 数据: ", string(src))
-
- msg := EncryptMessage{}
- if err := xml.Unmarshal(src, &msg); err != nil {
- log.Error("解码 xml 数据失败: ", err.Error())
- return nil, err
- }
-
- bt1, e1 := base64.StdEncoding.DecodeString(msg.Encrypt)
- if e1 != nil {
- log.Error("解码 base 数据失败: ", e1.Error())
- log.Error("原始 base64 数据: ", msg.Encrypt)
- return nil, e1
- }
-
- bt2, e2 := encrypt.MsgDecode(bt1, aesKey)
- if e2 != nil {
- log.Error("解码加密数据失败: ", e2.Error())
- log.Error("待解密数据: ", string(bt1))
- return nil, e2
- }
-
- res := encrypt.XMLMap{}
- if err := xml.Unmarshal(bt2, &res); err != nil {
- log.Error("解码 xml 数据失败: ", err.Error())
- log.Info("待解码 xml 数据: ", string(bt2))
- return nil, err
- }
-
- return &res, nil
- }
|