package mycrypto

import (
	"encoding/base64"
	"service/library/logger"

	"github.com/forgoer/openssl"
)

type AesEcbCrypto struct {
	aesPriKey []byte
}

func NewAesEcbCryptoFromString(aesPrivateKeyStr string) (p *AesEcbCrypto, err error) {
	p = &AesEcbCrypto{}

	//读取私钥
	p.aesPriKey, err = base64.StdEncoding.DecodeString(aesPrivateKeyStr)
	if err != nil {
		logger.Error("Decoding aes primary key failed, check your config, please!, err: %v", err)
		return
	}
	return
}

func (p *AesEcbCrypto) Encrypt(msg []byte) (encryptedBytes []byte, err error) {
	//ECB加密
	encryptedBytes, err = openssl.AesECBEncrypt(msg, p.aesPriKey, openssl.PKCS5_PADDING)
	return
}

func (p *AesEcbCrypto) Decrypt(encryptedBytes []byte) (decryptedBytes []byte, err error) {
	if len(encryptedBytes) == 0 {
		return
	}
	decryptedBytes, err = openssl.AesECBDecrypt(encryptedBytes, p.aesPriKey, openssl.PKCS5_PADDING)
	return
}