1919from argparse import Namespace # noqa pylint: disable=unused-import
2020
2121import aws_encryption_sdk
22+ from aws_encryption_sdk .materials_managers import CommitmentPolicy
2223from aws_encryption_sdk .materials_managers .base import CryptoMaterialsManager # noqa pylint: disable=unused-import
2324
2425from aws_encryption_sdk_cli .exceptions import AWSEncryptionSDKCLIError , BadUserArgumentError
25- from aws_encryption_sdk_cli .internal .arg_parsing import parse_args
26+ from aws_encryption_sdk_cli .internal .arg_parsing import CommitmentPolicyArgs , parse_args
2627from aws_encryption_sdk_cli .internal .identifiers import __version__ # noqa
2728from aws_encryption_sdk_cli .internal .io_handling import IOHandler , output_filename
2829from aws_encryption_sdk_cli .internal .logging_utils import LOGGER_NAME , setup_logger
@@ -164,6 +165,14 @@ def process_cli_request(stream_args, parsed_args):
164165 )
165166 _catch_bad_stdin_stdout_requests (parsed_args .input , parsed_args .output )
166167
168+ if not parsed_args .commitment_policy :
169+ commitment_policy = CommitmentPolicy .FORBID_ENCRYPT_ALLOW_DECRYPT
170+ elif parsed_args .commitment_policy == CommitmentPolicyArgs .forbid_encrypt_allow_decrypt :
171+ commitment_policy = CommitmentPolicy .FORBID_ENCRYPT_ALLOW_DECRYPT
172+ else :
173+ _LOGGER .warning ("Invalid commitment policy: %s" , parsed_args .commitment_policy )
174+ commitment_policy = CommitmentPolicy .FORBID_ENCRYPT_ALLOW_DECRYPT
175+
167176 handler = IOHandler (
168177 metadata_writer = parsed_args .metadata_output ,
169178 interactive = parsed_args .interactive ,
@@ -172,6 +181,7 @@ def process_cli_request(stream_args, parsed_args):
172181 encode_output = parsed_args .encode ,
173182 required_encryption_context = parsed_args .encryption_context ,
174183 required_encryption_context_keys = parsed_args .required_encryption_context_keys ,
184+ commitment_policy = commitment_policy ,
175185 )
176186
177187 if parsed_args .input == "-" :
@@ -230,6 +240,11 @@ def stream_kwargs_from_args(args, crypto_materials_manager):
230240 if args .frame_length is not None :
231241 stream_args ["frame_length" ] = args .frame_length
232242
243+ if not args .commitment_policy :
244+ stream_args ["commitment_policy" ] = CommitmentPolicy .FORBID_ENCRYPT_ALLOW_DECRYPT
245+ elif args .commitment_policy == CommitmentPolicyArgs .forbid_encrypt_allow_decrypt :
246+ stream_args ["commitment_policy" ] = CommitmentPolicy .FORBID_ENCRYPT_ALLOW_DECRYPT
247+
233248 if args .max_length is not None :
234249 stream_args ["max_body_length" ] = args .max_length
235250 return stream_args
@@ -250,11 +265,17 @@ def cli(raw_args=None):
250265 _LOGGER .debug ("Encryption source: %s" , args .input )
251266 _LOGGER .debug ("Encryption destination: %s" , args .output )
252267 _LOGGER .debug ("Master key provider configuration: %s" , args .master_keys )
268+ _LOGGER .debug ("Discovery mode: %r" , args .discovery )
253269 _LOGGER .debug ("Suffix requested: %s" , args .suffix )
254270
255- crypto_materials_manager = build_crypto_materials_manager_from_args (
256- key_providers_config = args .master_keys , caching_config = args .caching
257- )
271+ if args .wrapping_keys is not None :
272+ crypto_materials_manager = build_crypto_materials_manager_from_args (
273+ key_providers_config = args .wrapping_keys , caching_config = args .caching
274+ )
275+ else :
276+ crypto_materials_manager = build_crypto_materials_manager_from_args (
277+ key_providers_config = args .master_keys , caching_config = args .caching
278+ )
258279
259280 stream_args = stream_kwargs_from_args (args , crypto_materials_manager )
260281
0 commit comments