@@ -174,6 +174,52 @@ func TestKMSEnvelopeAEADKeyTemplateMultipleKeysSameKEK(t *testing.T) {
174
174
}
175
175
}
176
176
177
+ // This test shows how migrate away from CreateKMSEnvelopeAEADKeyTemplate.
178
+ func TestMigrateFromCreateKMSEnvelopeAEADKeyTemplateToNewKMSEnvelopeAEAD2 (t * testing.T ) {
179
+ kmsClient , err := fakekms .NewClient ("fake-kms://" )
180
+ if err != nil {
181
+ t .Fatalf ("fakekms.NewClient('fake-kms://') failed: %v" , err )
182
+ }
183
+ kekURI := "fake-kms://CM2b3_MDElQKSAowdHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUuY3J5cHRvLnRpbmsuQWVzR2NtS2V5EhIaEIK75t5L-adlUwVhWvRuWUwYARABGM2b3_MDIAE"
184
+
185
+ // This code:
186
+ registry .RegisterKMSClient (kmsClient )
187
+ kmsEnvelopeAEADTemplate , err := aead .CreateKMSEnvelopeAEADKeyTemplate (kekURI , aead .AES128GCMKeyTemplate ())
188
+ if err != nil {
189
+ t .Fatalf ("CreateKMSEnvelopeAEADKeyTemplate() failed: %v" , err )
190
+ }
191
+ handle , err := keyset .NewHandle (kmsEnvelopeAEADTemplate )
192
+ if err != nil {
193
+ t .Fatalf ("keyset.NewHandle(kmsEnvelopeAEADTemplate) failed: %v" , err )
194
+ }
195
+ aead1 , err := aead .New (handle )
196
+ if err != nil {
197
+ t .Fatalf ("aead.New(handle) failed: %v" , err )
198
+ }
199
+ // can be replace by this:
200
+ kekAEAD , err := kmsClient .GetAEAD (kekURI )
201
+ if err != nil {
202
+ t .Fatalf ("kmsClient.GetAEAD(kekURI) failed: %v" , err )
203
+ }
204
+ aead2 := aead .NewKMSEnvelopeAEAD2 (aead .AES128GCMKeyTemplate (), kekAEAD )
205
+
206
+ // Check that aead1 and aead2 are compatible.
207
+ plaintext := []byte ("plaintext" )
208
+ associatedData := []byte ("associatedData" )
209
+
210
+ ciphertext , err := aead1 .Encrypt (plaintext , associatedData )
211
+ if err != nil {
212
+ t .Fatalf ("aead1.Encrypt(plaintext, associatedData) failed: %v" , err )
213
+ }
214
+ decrypted , err := aead2 .Decrypt (ciphertext , associatedData )
215
+ if err != nil {
216
+ t .Fatalf ("aead2.Decrypt(ciphertext, associatedData) failed: %v" , err )
217
+ }
218
+ if ! bytes .Equal (plaintext , decrypted ) {
219
+ t .Fatalf ("decrypted data doesn't match plaintext, got: %q, want: %q" , decrypted , plaintext )
220
+ }
221
+ }
222
+
177
223
// Testing deprecated function, ignoring GoDeprecated.
178
224
func TestCreateKMSEnvelopeAEADKeyTemplateCompatibleWithKMSEnevelopeAEADKeyTemplate (t * testing.T ) {
179
225
fakeKmsClient , err := fakekms .NewClient ("fake-kms://" )
0 commit comments