def json_ready_header(header):
# type: (MessageHeader) -> Dict[str, Any]
"""Create a JSON-serializable representation of a :class:`aws_encryption_sdk.structures.MessageHeader`.
http://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/message-format.html#header-structure
:param header: header for which to create a JSON-serializable representation
:type header: aws_encryption_sdk.structures.MessageHeader
:rtype: dict
"""
dict_header = attr.asdict(header)
del dict_header['content_aad_length']
dict_header['version'] = str(float(dict_header['version'].value))
dict_header['algorithm'] = dict_header['algorithm'].name
for key, value in dict_header.items():
if isinstance(value, Enum):
dict_header[key] = value.value
dict_header['message_id'] = unicode_b64_encode(dict_header['message_id'])
dict_header['encrypted_data_keys'] = sorted(
list(dict_header['encrypted_data_keys']),
key=lambda x: six.b(x['key_provider']['provider_id']) + x['key_provider']['key_info']
)
for data_key in dict_header['encrypted_data_keys']:
data_key['key_provider']['provider_id'] = unicode_b64_encode(six.b(data_key['key_provider']['provider_id']))
data_key['key_provider']['key_info'] = unicode_b64_encode(data_key['key_provider']['key_info'])
data_key['encrypted_data_key'] = unicode_b64_encode(data_key['encrypted_data_key'])
return dict_header
评论列表
文章目录