in features/0003-awses-message-encryption-generate.py [0:0]
def _test_manifest(keys_filename, manifest):
"""Test that the manifest is actually complete.
:param str keys_file: Name of file containing the keys manifest
:param dict manifest: Full message encrypt manifest to test
"""
with open(keys_filename, "r") as keys_file:
keys = json.load(keys_file)
aes_key_count = len(list(_keys_for_algorithm("aes", keys)))
black_hole_aes_key_count = len([value for value in list(_keys_for_algorithm("aes", keys)) if value in list(_keys_for_decryptval(False, keys))])
aes_key_combination_count = (aes_key_count-black_hole_aes_key_count+((aes_key_count-black_hole_aes_key_count)*black_hole_aes_key_count))
cycleable_rsa_key_count = 0
black_hole_rsa_key_count = 0
for _name, rsa_key in _keys_for_algorithm("rsa", keys):
if rsa_key["encrypt"]:
if rsa_key["decrypt"]:
cycleable_rsa_key_count += 1
else:
black_hole_rsa_key_count += 1
cycleable_rsa_combination_count = cycleable_rsa_key_count * len(
RAW_RSA_PADDING_ALGORITHMS
)
black_hole_rsa_combination_count = (
cycleable_rsa_combination_count * black_hole_rsa_key_count
)
rsa_key_combination_count = (
cycleable_rsa_combination_count + black_hole_rsa_combination_count
)
kms_key_count = len(list(_keys_for_type("aws-kms", keys)))
black_hole_kms_key_count = len([value for value in list(_keys_for_type("aws-kms", keys)) if value in list(_keys_for_decryptval(False, keys))])
kms_key_combination_count = (kms_key_count-black_hole_kms_key_count+((kms_key_count-black_hole_kms_key_count)*black_hole_kms_key_count))
aes_test_count = len(list(_tests_for_algorithm("aes", manifest)))
rsa_test_count = len(list(_tests_for_algorithm("rsa", manifest)))
kms_test_count = len(list(_tests_for_type("aws-kms", manifest)))
iterations = len(ALGORITHM_SUITES) * len(FRAME_SIZES) * len(ENCRYPTION_CONTEXTS)
expected_aes_test_count = aes_key_combination_count * iterations
expected_rsa_test_count = rsa_key_combination_count * iterations
expected_kms_test_count = kms_key_combination_count * iterations
if not all(
[
0 < expected_aes_test_count == aes_test_count,
0 < expected_rsa_test_count == rsa_test_count,
0 < expected_kms_test_count == kms_test_count,
]
):
raise ValueError(
"Unexpected test count: \nAES: {aes}\nRSA: {rsa}\nAWS-KMS: {kms}".format(
aes="Expected: {expected} Actual: {actual}".format(
expected=expected_aes_test_count, actual=aes_test_count
),
rsa="Expected: {expected} Actual: {actual}".format(
expected=expected_rsa_test_count, actual=rsa_test_count
),
kms="Expected: {expected} Actual: {actual}".format(
expected=expected_kms_test_count, actual=kms_test_count
),
)
)