Skip to content

Commit bb8af55

Browse files
auto commit
1 parent f52afbe commit bb8af55

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed

db-esdk-performance-testing/go/benchmark/config.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ import (
1010
"gopkg.in/yaml.v3"
1111
)
1212

13+
type KeyringType string
14+
15+
const (
16+
RawAESKeying KeyringType = "raw-aes"
17+
)
18+
1319
// TestConfig represents the configuration for benchmark tests
1420
type TestConfig struct {
1521
DataSizes struct {
@@ -24,6 +30,7 @@ type TestConfig struct {
2430
ConcurrencyLevels []int `yaml:"concurrency_levels"`
2531
QuickConfig *QuickConfig `yaml:"quick_config"`
2632
TableName string `yaml:"table_name"`
33+
Keyring KeyringType `yaml:"keyring"`
2734
}
2835

2936
// QuickConfig represents the quick test configuration

db-esdk-performance-testing/go/benchmark/dbesdk_benchmark.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ func New(configPath string) (*DBESDKBenchmark, error) {
5858
}
5959
benchmark.Config = config
6060

61+
// Setup MPL
62+
if err := benchmark.setupMPL(); err != nil {
63+
return nil, fmt.Errorf("failed to setup MPL: %w", err)
64+
}
65+
6166
// Setup DB-ESDK
6267
if err := benchmark.setupDBESDK(); err != nil {
6368
return nil, fmt.Errorf("failed to setup DB-ESDK: %w", err)
@@ -69,6 +74,26 @@ func New(configPath string) (*DBESDKBenchmark, error) {
6974
return benchmark, nil
7075
}
7176

77+
func (b *DBESDKBenchmark) setupMPL() error {
78+
// Initialize the material providers client
79+
matProvConfig := mpltypes.MaterialProvidersConfig{}
80+
matProv, err := mplsmithygenerated.NewClient(matProvConfig)
81+
if err != nil {
82+
return fmt.Errorf("failed to create material providers client: %w", err)
83+
}
84+
85+
switch b.Config.Keyring {
86+
case RawAESKeying:
87+
b.Keyring, err = SetupRawAESKeyring(matProv)
88+
if err != nil {
89+
return fmt.Errorf("failed to create keyring: %w", err)
90+
}
91+
default:
92+
return fmt.Errorf("unsupported keyring type: %s", b.Config.Keyring)
93+
}
94+
return nil
95+
}
96+
7297
// setupDBESDK initializes the DynamoDB client with DB-ESDK middleware and creates a default keyring which is AES keyring
7398
func (b *DBESDKBenchmark) setupDBESDK() error {
7499
ddbTableName := b.Config.TableName
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package benchmark
2+
3+
import (
4+
"context"
5+
"crypto/rand"
6+
"fmt"
7+
8+
mplsmithygenerated "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated"
9+
mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes"
10+
)
11+
12+
func SetupRawAESKeyring(matProv *mplsmithygenerated.Client) (mpltypes.IKeyring, error) {
13+
key := make([]byte, 32)
14+
if _, err := rand.Read(key); err != nil {
15+
return nil, fmt.Errorf("failed to generate AES-256 key: %w", err)
16+
}
17+
18+
keyringInput := mpltypes.CreateRawAesKeyringInput{
19+
KeyName: "test-aes-256-key",
20+
KeyNamespace: "DB-ESDK-performance-test",
21+
WrappingKey: key,
22+
WrappingAlg: mpltypes.AesWrappingAlgAlgAes256GcmIv12Tag16,
23+
}
24+
25+
keyring, err := matProv.CreateRawAesKeyring(context.Background(), keyringInput)
26+
if err != nil {
27+
return nil, fmt.Errorf("failed to create keyring: %w", err)
28+
}
29+
return keyring, nil
30+
}

db-esdk-performance-testing/go/config/test-scenarios.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@ concurrency_levels:
4141
- 16
4242

4343
table_name: "dbesdk-performance-testing" # DynamoDB table name
44+
45+
keyring: "raw-aes"

0 commit comments

Comments
 (0)