github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/oss/crypto/master_alikms_cipher_test.go (about) 1 package osscrypto 2 3 import ( 4 crypto_rand "crypto/rand" 5 "encoding/base64" 6 "io" 7 "math/rand" 8 "time" 9 10 kms "github.com/aliyun/alibaba-cloud-sdk-go/services/kms" 11 . "gopkg.in/check.v1" 12 ) 13 14 func (s *OssCryptoBucketSuite) TestKmsClient(c *C) { 15 rand.Seed(time.Now().UnixNano()) 16 kmsClient, err := kms.NewClientWithAccessKey(kmsRegion, kmsAccessID, kmsAccessKey) 17 c.Assert(err, IsNil) 18 19 // encrypte 20 enReq := kms.CreateEncryptRequest() 21 enReq.RpcRequest.Scheme = "https" 22 enReq.RpcRequest.Method = "POST" 23 enReq.RpcRequest.AcceptFormat = "json" 24 25 enReq.KeyId = kmsID 26 27 buff := make([]byte, 10) 28 _, err = io.ReadFull(crypto_rand.Reader, buff) 29 c.Assert(err, IsNil) 30 enReq.Plaintext = base64.StdEncoding.EncodeToString(buff) 31 32 enResponse, err := kmsClient.Encrypt(enReq) 33 c.Assert(err, IsNil) 34 35 // decrypte 36 deReq := kms.CreateDecryptRequest() 37 deReq.RpcRequest.Scheme = "https" 38 deReq.RpcRequest.Method = "POST" 39 deReq.RpcRequest.AcceptFormat = "json" 40 deReq.CiphertextBlob = enResponse.CiphertextBlob 41 deResponse, err := kmsClient.Decrypt(deReq) 42 c.Assert(err, IsNil) 43 c.Assert(deResponse.Plaintext, Equals, enReq.Plaintext) 44 } 45 46 func (s *OssCryptoBucketSuite) TestMasterAliKmsCipherSuccess(c *C) { 47 48 kmsClient, err := kms.NewClientWithAccessKey(kmsRegion, kmsAccessID, kmsAccessKey) 49 c.Assert(err, IsNil) 50 51 masterCipher, _ := CreateMasterAliKms(matDesc, kmsID, kmsClient) 52 53 var cd CipherData 54 err = cd.RandomKeyIv(aesKeySize, ivSize) 55 c.Assert(err, IsNil) 56 57 cd.WrapAlgorithm = masterCipher.GetWrapAlgorithm() 58 cd.CEKAlgorithm = KmsAliCryptoWrap 59 cd.MatDesc = masterCipher.GetMatDesc() 60 61 // EncryptedKey 62 cd.EncryptedKey, err = masterCipher.Encrypt(cd.Key) 63 64 // EncryptedIV 65 cd.EncryptedIV, err = masterCipher.Encrypt(cd.IV) 66 67 cloneData := cd.Clone() 68 69 cloneData.Key, _ = masterCipher.Decrypt(cloneData.EncryptedKey) 70 cloneData.IV, _ = masterCipher.Decrypt(cloneData.EncryptedIV) 71 72 c.Assert(string(cd.Key), Equals, string(cloneData.Key)) 73 c.Assert(string(cd.IV), Equals, string(cloneData.IV)) 74 75 } 76 77 func (s *OssCryptoBucketSuite) TestMasterAliKmsCipherError(c *C) { 78 kmsClient, err := kms.NewClientWithAccessKey(kmsRegion, kmsAccessID, kmsAccessKey) 79 c.Assert(err, IsNil) 80 81 masterCipher, _ := CreateMasterAliKms(matDesc, kmsID, kmsClient) 82 v := masterCipher.(MasterAliKmsCipher) 83 v.KmsID = "" 84 _, err = v.Encrypt([]byte("hellow")) 85 c.Assert(err, NotNil) 86 87 _, err = v.Decrypt([]byte("hellow")) 88 c.Assert(err, NotNil) 89 }