@@ -5,7 +5,6 @@ package keyring
55
66import (
77 "context"
8- "crypto/rand"
98 "fmt"
109 "reflect"
1110
@@ -14,6 +13,7 @@ import (
1413 dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes"
1514 dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes"
1615 "github.com/aws/aws-database-encryption-sdk-dynamodb/dbesdkmiddleware"
16+ "github.com/aws/aws-database-encryption-sdk-dynamodb/examples/utils"
1717 "github.com/aws/aws-sdk-go-v2/aws"
1818 "github.com/aws/aws-sdk-go-v2/config"
1919 "github.com/aws/aws-sdk-go-v2/service/dynamodb"
@@ -45,32 +45,23 @@ import (
4545 - Sort key is named "sort_key" with type (S)
4646*/
4747
48- func RawAesExample (ddbTableName string ) {
49- aesKeyBytes , err := generateAes256KeyBytes ()
50- if err != nil {
51- panic (err )
52- }
48+ func RawAesExample (ddbTableName , keyNamespace , keyName string , aesKeyBytes [] byte ) {
49+ // Initialize the mpl client
50+ matProv , err := mpl . NewClient (mpltypes. MaterialProvidersConfig {})
51+ utils . HandleError (err )
52+
5353 // 1. Create the keyring.
5454 // The DynamoDb encryption client uses this to encrypt and decrypt items.
5555
56- // Initialize the mpl client
57- matProv , err := mpl .NewClient (mpltypes.MaterialProvidersConfig {})
58- if err != nil {
59- panic (err )
60- }
6156 // Create the Raw Aes Keyring
62- var keyNamespace = "my-key-namespace"
63- var keyName = "my-aes-key-name"
6457 rawAesKeyRingInput := mpltypes.CreateRawAesKeyringInput {
6558 KeyName : keyName ,
6659 KeyNamespace : keyNamespace ,
6760 WrappingKey : aesKeyBytes ,
6861 WrappingAlg : mpltypes .AesWrappingAlgAlgAes256GcmIv12Tag16 ,
6962 }
7063 rawAesKeyring , err := matProv .CreateRawAesKeyring (context .Background (), rawAesKeyRingInput )
71- if err != nil {
72- panic (err )
73- }
64+ utils .HandleError (err )
7465 // 2. Configure which attributes are encrypted and/or signed when writing new items.
7566 // For each attribute that may exist on the items we plan to write to our DynamoDbTable,
7667 // we must explicitly configure how they should be treated during item encryption:
@@ -132,14 +123,10 @@ func RawAesExample(ddbTableName string) {
132123
133124 // Create DBESDK middleware
134125 dbEsdkMiddleware , err := dbesdkmiddleware .NewDBEsdkMiddleware (listOfTableConfigs )
135- if err != nil {
136- panic (err )
137- }
126+ utils .HandleError (err )
138127 // Create aws config
139128 cfg , err := config .LoadDefaultConfig (context .TODO ())
140- if err != nil {
141- panic (err )
142- }
129+ utils .HandleError (err )
143130 ddb := dynamodb .NewFromConfig (cfg , dbEsdkMiddleware .CreateMiddleware ())
144131
145132 // 6. Put an item into our table using the above client.
@@ -155,9 +142,7 @@ func RawAesExample(ddbTableName string) {
155142 Item : item ,
156143 }
157144 _ , err = ddb .PutItem (context .TODO (), putInput )
158- if err != nil {
159- panic (err )
160- }
145+ utils .HandleError (err )
161146 // 7. Get the item back from our table using the same client.
162147 // The client will decrypt the item client-side, and return
163148 // back the original item.
@@ -176,22 +161,10 @@ func RawAesExample(ddbTableName string) {
176161 ConsistentRead : aws .Bool (true ),
177162 }
178163 result , err := ddb .GetItem (context .TODO (), getInput )
179- if err != nil {
180- panic (err )
181- }
164+ utils .HandleError (err )
182165 // Verify the decrypted item
183166 if ! reflect .DeepEqual (item , result .Item ) {
184167 panic ("Decrypted item does not match original item" )
185168 }
186169 fmt .Println ("Raw Aes Example successful." )
187170}
188-
189- func generateAes256KeyBytes () ([]byte , error ) {
190- key := make ([]byte , 32 ) // 256 bits = 32 bytes
191- // Use crypto/rand for cryptographically secure random numbers
192- _ , err := rand .Read (key )
193- if err != nil {
194- return nil , err
195- }
196- return key , nil
197- }
0 commit comments