Skip to content

Commit 1ba28ef

Browse files
committed
removed classes for keyrings / mkps
1 parent a528e2d commit 1ba28ef

5 files changed

+250
-266
lines changed

examples/src/migration/migration_aws_kms_key_example.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
This is a migration example for moving to the AWS KMS Keyring from AWS KMS master key provider (MKP)
55
66
The AWS KMS keyring uses symmetric encryption KMS keys to generate, encrypt and
7-
decrypt data keys. This example creates the KMS Keyring and KMS MKP and
7+
decrypt data keys. This example creates a KMS Keyring and KMS MKP and
88
then encrypts a custom input EXAMPLE_DATA with an encryption context using both
99
the keyring and MKP. The example then decrypts the ciphertext using both keyring and MKPs.
1010
This example also includes some sanity checks for demonstration:
@@ -202,9 +202,9 @@ def decrypt_using_key_provider(
202202
def migration_aws_kms_key(
203203
kms_key_id: str
204204
):
205-
"""Demonstrate a migration example for moving from an AWS KMS keyring to AWS KMS MKP.
205+
"""Demonstrate a migration example for moving to an AWS KMS keyring from AWS KMS MKP.
206206
207-
Usage: migration_to_aws_kms_keyring_from_aws_kms_master_key_provider(kms_key_id)
207+
Usage: migration_aws_kms_key(kms_key_id)
208208
:param kms_key_id: KMS Key identifier for the KMS key you want to use for encryption and
209209
decryption of your data keys.
210210
:type kms_key_id: string

examples/src/migration/migration_raw_aes_key_example.py

Lines changed: 117 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
preferably in a hardware security module (HSM) or key management system. Use a Raw AES keyring
99
when you need to provide the wrapping key and encrypt the data keys locally or offline.
1010
11-
This example defines classes for Raw AES Keyring and Raw AES MKP and
11+
This example creates a Raw AES Keyring and Raw AES MKP and
1212
then encrypts a custom input EXAMPLE_DATA with an encryption context using both
1313
the keyring and MKP. The example then decrypts the ciphertext using both keyring and MKPs.
1414
This example also includes some sanity checks for demonstration:
@@ -54,79 +54,75 @@
5454
DEFAULT_KEY_NAME = "My 256-bit AES wrapping key"
5555

5656

57-
class RawAesKeyring():
58-
"""Class for creating a Raw AES Keyring and using it for encryption and decryption"""
57+
def create_keyring():
58+
"""Demonstrate how to create a Raw AES keyring.
5959
60-
@staticmethod
61-
def create_keyring():
62-
"""Demonstrate how to create a Raw AES keyring.
60+
Usage: create_keyring()
61+
"""
62+
# We fix the static key in order to make the test deterministic
63+
static_key = DEFAULT_AES_256_STATIC_KEY
6364

64-
Usage: create_keyring()
65-
"""
66-
# We fix the static key in order to make the test deterministic
67-
static_key = DEFAULT_AES_256_STATIC_KEY
65+
mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders(
66+
config=MaterialProvidersConfig()
67+
)
6868

69-
mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders(
70-
config=MaterialProvidersConfig()
71-
)
69+
keyring_input: CreateRawAesKeyringInput = CreateRawAesKeyringInput(
70+
key_namespace=DEFAULT_KEY_NAME_SPACE,
71+
key_name=DEFAULT_KEY_NAME,
72+
wrapping_key=static_key,
73+
wrapping_alg=AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16
74+
)
7275

73-
keyring_input: CreateRawAesKeyringInput = CreateRawAesKeyringInput(
74-
key_namespace=DEFAULT_KEY_NAME_SPACE,
75-
key_name=DEFAULT_KEY_NAME,
76-
wrapping_key=static_key,
77-
wrapping_alg=AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16
78-
)
76+
keyring: IKeyring = mat_prov.create_raw_aes_keyring(
77+
input=keyring_input
78+
)
7979

80-
keyring: IKeyring = mat_prov.create_raw_aes_keyring(
81-
input=keyring_input
82-
)
80+
return keyring
8381

84-
return keyring
8582

86-
@staticmethod
87-
def encrypt_using_keyring(
88-
plaintext_data: bytes,
89-
keyring: IKeyring
90-
):
91-
"""Demonstrate how to encrypt plaintext data using a Raw AES keyring.
83+
def encrypt_using_keyring(
84+
plaintext_data: bytes,
85+
keyring: IKeyring
86+
):
87+
"""Demonstrate how to encrypt plaintext data using a Raw AES keyring.
9288
93-
Usage: encrypt_using_keyring(plaintext_data, keyring)
94-
:param plaintext_data: plaintext data you want to encrypt
95-
:type: bytes
96-
:param keyring: Keyring to use for encryption.
97-
:type keyring: IKeyring
98-
"""
99-
client = aws_encryption_sdk.EncryptionSDKClient()
89+
Usage: encrypt_using_keyring(plaintext_data, keyring)
90+
:param plaintext_data: plaintext data you want to encrypt
91+
:type: bytes
92+
:param keyring: Keyring to use for encryption.
93+
:type keyring: IKeyring
94+
"""
95+
client = aws_encryption_sdk.EncryptionSDKClient()
10096

101-
ciphertext_data, _ = client.encrypt(
102-
source=plaintext_data,
103-
keyring=keyring,
104-
encryption_context=DEFAULT_ENCRYPTION_CONTEXT
105-
)
97+
ciphertext_data, _ = client.encrypt(
98+
source=plaintext_data,
99+
keyring=keyring,
100+
encryption_context=DEFAULT_ENCRYPTION_CONTEXT
101+
)
106102

107-
return ciphertext_data
103+
return ciphertext_data
108104

109-
@staticmethod
110-
def decrypt_using_keyring(
111-
ciphertext_data: bytes,
112-
keyring: IKeyring
113-
):
114-
"""Demonstrate how to decrypt ciphertext data using a Raw AES keyring.
115105

116-
Usage: decrypt_using_keyring(ciphertext_data, keyring)
117-
:param ciphertext_data: ciphertext data you want to decrypt
118-
:type: bytes
119-
:param keyring: Keyring to use for decryption.
120-
:type keyring: IKeyring
121-
"""
122-
client = aws_encryption_sdk.EncryptionSDKClient()
106+
def decrypt_using_keyring(
107+
ciphertext_data: bytes,
108+
keyring: IKeyring
109+
):
110+
"""Demonstrate how to decrypt ciphertext data using a Raw AES keyring.
123111
124-
decrypted_plaintext_data, _ = client.decrypt(
125-
source=ciphertext_data,
126-
keyring=keyring
127-
)
112+
Usage: decrypt_using_keyring(ciphertext_data, keyring)
113+
:param ciphertext_data: ciphertext data you want to decrypt
114+
:type: bytes
115+
:param keyring: Keyring to use for decryption.
116+
:type keyring: IKeyring
117+
"""
118+
client = aws_encryption_sdk.EncryptionSDKClient()
128119

129-
return decrypted_plaintext_data
120+
decrypted_plaintext_data, _ = client.decrypt(
121+
source=ciphertext_data,
122+
keyring=keyring
123+
)
124+
125+
return decrypted_plaintext_data
130126

131127

132128
# This is a helper class necessary for the Raw AES master key provider
@@ -162,89 +158,85 @@ def _get_raw_key(self, key_id):
162158
)
163159

164160

165-
class RawAesMasterKeyProvider():
166-
"""Class for creating a Raw AES MKP and using it for encryption and decryption"""
161+
def create_key_provider():
162+
"""Demonstrate how to create a Raw AES master key provider.
167163
168-
@staticmethod
169-
def create_key_provider():
170-
"""Demonstrate how to create a Raw AES master key provider.
164+
Usage: create_key_provider()
165+
"""
166+
# Create a Raw AES master key provider.
171167

172-
Usage: create_key_provider()
173-
"""
174-
# Create a Raw AES master key provider.
175-
176-
# The Key ID field in the JceMasterKey and RawMasterKey is equivalent to key name in the Raw keyrings
177-
key_id = DEFAULT_KEY_NAME
178-
key_provider = StaticRandomMasterKeyProvider()
179-
key_provider.add_master_key(key_id)
180-
181-
return key_provider
182-
183-
@staticmethod
184-
def encrypt_using_key_provider(
185-
plaintext_data: bytes,
186-
key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
187-
):
188-
"""Demonstrate how to encrypt plaintext data using a Raw AES master key provider.
189-
190-
Usage: encrypt_using_key_provider(plaintext_data, key_provider)
191-
:param plaintext_data: plaintext data you want to encrypt
192-
:type: bytes
193-
:param key_provider: Master key provider to use for encryption.
194-
:type key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
195-
"""
196-
client = aws_encryption_sdk.EncryptionSDKClient()
168+
# The Key ID field in the JceMasterKey and RawMasterKey is equivalent to key name in the Raw keyrings
169+
key_id = DEFAULT_KEY_NAME
170+
key_provider = StaticRandomMasterKeyProvider()
171+
key_provider.add_master_key(key_id)
197172

198-
ciphertext_data, _ = client.encrypt(
199-
source=plaintext_data,
200-
key_provider=key_provider,
201-
encryption_context=DEFAULT_ENCRYPTION_CONTEXT
202-
)
173+
return key_provider
203174

204-
return ciphertext_data
205175

206-
@staticmethod
207-
def decrypt_using_key_provider(
208-
ciphertext_data: bytes,
209-
key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
210-
):
211-
"""Demonstrate how to decrypt ciphertext data using a Raw AES master key provider.
176+
def encrypt_using_key_provider(
177+
plaintext_data: bytes,
178+
key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
179+
):
180+
"""Demonstrate how to encrypt plaintext data using a Raw AES master key provider.
212181
213-
Usage: decrypt_using_key_provider(ciphertext_data, key_provider)
214-
:param ciphertext_data: ciphertext data you want to decrypt
215-
:type: bytes
216-
:param key_provider: Master key provider to use for decryption.
217-
:type key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
218-
"""
219-
client = aws_encryption_sdk.EncryptionSDKClient()
182+
Usage: encrypt_using_key_provider(plaintext_data, key_provider)
183+
:param plaintext_data: plaintext data you want to encrypt
184+
:type: bytes
185+
:param key_provider: Master key provider to use for encryption.
186+
:type key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
187+
"""
188+
client = aws_encryption_sdk.EncryptionSDKClient()
220189

221-
decrypted_plaintext_data, _ = client.decrypt(
222-
source=ciphertext_data,
223-
key_provider=key_provider
224-
)
190+
ciphertext_data, _ = client.encrypt(
191+
source=plaintext_data,
192+
key_provider=key_provider,
193+
encryption_context=DEFAULT_ENCRYPTION_CONTEXT
194+
)
195+
196+
return ciphertext_data
197+
198+
199+
def decrypt_using_key_provider(
200+
ciphertext_data: bytes,
201+
key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
202+
):
203+
"""Demonstrate how to decrypt ciphertext data using a Raw AES master key provider.
204+
205+
Usage: decrypt_using_key_provider(ciphertext_data, key_provider)
206+
:param ciphertext_data: ciphertext data you want to decrypt
207+
:type: bytes
208+
:param key_provider: Master key provider to use for decryption.
209+
:type key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
210+
"""
211+
client = aws_encryption_sdk.EncryptionSDKClient()
212+
213+
decrypted_plaintext_data, _ = client.decrypt(
214+
source=ciphertext_data,
215+
key_provider=key_provider
216+
)
225217

226-
return decrypted_plaintext_data
218+
return decrypted_plaintext_data
227219

228220

229-
def migration_to_raw_aes_keyring_from_raw_aes_master_key_provider():
230-
"""Demonstrate a migration example for moving from a Raw AES keyring to Raw AES MKP.
221+
def migration_raw_aes_key():
222+
"""Demonstrate a migration example for moving to a Raw AES keyring from Raw AES MKP.
231223
232-
Usage: migration_to_raw_aes_keyring_from_raw_aes_master_key_provider()
224+
Usage: migration_raw_aes_key()
233225
"""
234226
# 1a. Create a Raw AES Keyring
235-
raw_aes_keyring = RawAesKeyring.create_keyring()
227+
raw_aes_keyring = create_keyring()
236228

237229
# 1b. Create a Raw AES Master Key Provider
238-
raw_aes_master_key_provider = RawAesMasterKeyProvider.create_key_provider()
230+
raw_aes_master_key_provider = create_key_provider()
239231

240232
# 2a. Encrypt EXAMPLE_DATA using Raw AES Keyring
241-
ciphertext_keyring = RawAesKeyring.encrypt_using_keyring(
233+
ciphertext_keyring = encrypt_using_keyring(
242234
plaintext_data=EXAMPLE_DATA,
243235
keyring=raw_aes_keyring
244236
)
245237

246238
# 2b. Encrypt EXAMPLE_DATA using Raw AES Master Key Provider
247-
ciphertext_mkp = RawAesMasterKeyProvider.encrypt_using_key_provider(
239+
ciphertext_mkp = encrypt_using_key_provider(
248240
plaintext_data=EXAMPLE_DATA,
249241
key_provider=raw_aes_master_key_provider
250242
)
@@ -256,12 +248,12 @@ def migration_to_raw_aes_keyring_from_raw_aes_master_key_provider():
256248

257249
# 3. Decrypt the ciphertext_keyring using both the keyring and MKP and ensure the
258250
# resulting plaintext is the same and also equal to EXAMPLE_DATA
259-
decrypted_ciphertext_keyring_using_keyring = RawAesKeyring.decrypt_using_keyring(
251+
decrypted_ciphertext_keyring_using_keyring = decrypt_using_keyring(
260252
ciphertext_data=ciphertext_keyring,
261253
keyring=raw_aes_keyring
262254
)
263255

264-
decrypted_ciphertext_keyring_using_mkp = RawAesMasterKeyProvider.decrypt_using_key_provider(
256+
decrypted_ciphertext_keyring_using_mkp = decrypt_using_key_provider(
265257
ciphertext_data=ciphertext_keyring,
266258
key_provider=raw_aes_master_key_provider
267259
)
@@ -272,12 +264,12 @@ def migration_to_raw_aes_keyring_from_raw_aes_master_key_provider():
272264

273265
# 4. Decrypt the ciphertext_mkp using both the keyring and MKP and ensure the
274266
# resulting plaintext is the same and also equal to EXAMPLE_DATA
275-
decrypted_ciphertext_mkp_using_keyring = RawAesKeyring.decrypt_using_keyring(
267+
decrypted_ciphertext_mkp_using_keyring = decrypt_using_keyring(
276268
ciphertext_data=ciphertext_mkp,
277269
keyring=raw_aes_keyring
278270
)
279271

280-
decrypted_ciphertext_mkp_using_mkp = RawAesMasterKeyProvider.decrypt_using_key_provider(
272+
decrypted_ciphertext_mkp_using_mkp = decrypt_using_key_provider(
281273
ciphertext_data=ciphertext_mkp,
282274
key_provider=raw_aes_master_key_provider
283275
)

0 commit comments

Comments
 (0)