|
|
package coscrypto_test
import ( "bytes" "crypto/rand" "encoding/base64" "encoding/json" "os"
"git.ouxuan.net/tommy/cos-go-sdk-v5" coscrypto "git.ouxuan.net/tommy/cos-go-sdk-v5/crypto" "github.com/stretchr/testify/assert" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" )
func (s *CosTestSuite) TestMasterKmsCipher_TestKmsClient() { kmsclient, _ := coscrypto.NewKMSClient(&cos.Credential{ SecretID: os.Getenv("COS_SECRETID"), SecretKey: os.Getenv("COS_SECRETKEY"), }, kRegion)
originData := make([]byte, 1024) _, err := rand.Read(originData)
ctx := make(map[string]string) ctx["desc"] = string(originData[:10]) bs, _ := json.Marshal(ctx) ctxJson := string(bs) enReq := kms.NewEncryptRequest() enReq.KeyId = common.StringPtr(os.Getenv("KMSID")) enReq.EncryptionContext = common.StringPtr(ctxJson) enReq.Plaintext = common.StringPtr(base64.StdEncoding.EncodeToString(originData)) enResp, err := kmsclient.Encrypt(enReq) assert.Nil(s.T(), err, "Encrypt Failed") encryptedData := []byte(*enResp.Response.CiphertextBlob)
deReq := kms.NewDecryptRequest() deReq.CiphertextBlob = common.StringPtr(string(encryptedData)) deReq.EncryptionContext = common.StringPtr(ctxJson) deResp, err := kmsclient.Decrypt(deReq) assert.Nil(s.T(), err, "Decrypt Failed") decryptedData, err := base64.StdEncoding.DecodeString(*deResp.Response.Plaintext) assert.Nil(s.T(), err, "base64 Decode Failed") assert.Equal(s.T(), bytes.Compare(originData, decryptedData), 0, "originData != decryptedData") }
func (s *CosTestSuite) TestMasterKmsCipher_TestNormal() { kmsclient, _ := coscrypto.NewKMSClient(&cos.Credential{ SecretID: os.Getenv("COS_SECRETID"), SecretKey: os.Getenv("COS_SECRETKEY"), }, kRegion)
desc := make(map[string]string) desc["test"] = "TestMasterKmsCipher_TestNormal" master, err := coscrypto.CreateMasterKMS(kmsclient, os.Getenv("KMSID"), desc) assert.Nil(s.T(), err, "CreateMasterKMS Failed")
originData := make([]byte, 1024) _, err = rand.Read(originData)
encryptedData, err := master.Encrypt(originData) assert.Nil(s.T(), err, "Encrypt Failed")
decryptedData, err := master.Decrypt(encryptedData) assert.Nil(s.T(), err, "Decrypt Failed")
assert.Equal(s.T(), bytes.Compare(originData, decryptedData), 0, "originData != decryptedData") }
func (s *CosTestSuite) TestMasterKmsCipher_TestError() { kmsclient, _ := coscrypto.NewKMSClient(&cos.Credential{ SecretID: os.Getenv("COS_SECRETID"), SecretKey: os.Getenv("COS_SECRETKEY"), }, kRegion)
desc := make(map[string]string) desc["test"] = "TestMasterKmsCipher_TestNormal" master, err := coscrypto.CreateMasterKMS(kmsclient, "ErrorKMSID", desc) assert.Nil(s.T(), err, "CreateMasterKMS Failed")
originData := make([]byte, 1024) _, err = rand.Read(originData)
encryptedData, err := master.Encrypt(originData) assert.NotNil(s.T(), err, "Encrypt Failed")
decryptedData, err := master.Decrypt(encryptedData) assert.NotNil(s.T(), err, "Decrypt Failed")
assert.NotEqual(s.T(), bytes.Compare(originData, decryptedData), 0, "originData != decryptedData") }
|