Exemple #1
0
def add_glacier_checksums(params, **kwargs):
    """Add glacier checksums to the http request.

    This will add two headers to the http request:

        * x-amz-content-sha256
        * x-amz-sha256-tree-hash

    These values will only be added if they are not present
    in the HTTP request.

    """
    request_dict = params
    headers = request_dict['headers']
    body = request_dict['body']
    if isinstance(body, six.binary_type):
        # If the user provided a bytes type instead of a file
        # like object, we're temporarily create a BytesIO object
        # so we can use the util functions to calculate the
        # checksums which assume file like objects.  Note that
        # we're not actually changing the body in the request_dict.
        body = six.BytesIO(body)
    starting_position = body.tell()
    if 'x-amz-content-sha256' not in headers:
        headers['x-amz-content-sha256'] = utils.calculate_sha256(body,
                                                                 as_hex=True)
    body.seek(starting_position)
    if 'x-amz-sha256-tree-hash' not in headers:
        headers['x-amz-sha256-tree-hash'] = utils.calculate_tree_hash(body)
    body.seek(starting_position)
Exemple #2
0
def add_glacier_checksums(params, **kwargs):
    """Add glacier checksums to the http request.

    This will add two headers to the http request:

        * x-amz-content-sha256
        * x-amz-sha256-tree-hash

    These values will only be added if they are not present
    in the HTTP request.

    """
    request_dict = params
    headers = request_dict['headers']
    body = request_dict['body']
    if isinstance(body, six.binary_type):
        # If the user provided a bytes type instead of a file
        # like object, we're temporarily create a BytesIO object
        # so we can use the util functions to calculate the
        # checksums which assume file like objects.  Note that
        # we're not actually changing the body in the request_dict.
        body = six.BytesIO(body)
    starting_position = body.tell()
    if 'x-amz-content-sha256' not in headers:
        headers['x-amz-content-sha256'] = utils.calculate_sha256(
            body, as_hex=True)
    body.seek(starting_position)
    if 'x-amz-sha256-tree-hash' not in headers:
        headers['x-amz-sha256-tree-hash'] = utils.calculate_tree_hash(body)
    body.seek(starting_position)
Exemple #3
0
 def test_as_binary(self):
     self.assertEqual(
         calculate_sha256(six.BytesIO(b"hello world"), as_hex=False),
         (
             b"\xb9M'\xb9\x93M>\x08\xa5.R\xd7\xda}\xab\xfa\xc4\x84\xef"
             b"\xe3zS\x80\xee\x90\x88\xf7\xac\xe2\xef\xcd\xe9"
         ),
     )
Exemple #4
0
 def test_as_hex(self):
     self.assertEqual(
         calculate_sha256(six.BytesIO(b'hello world'), as_hex=True),
         'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9')
Exemple #5
0
 def test_empty_hash(self):
     self.assertEqual(
         calculate_sha256(six.BytesIO(b''), as_hex=True),
         'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
Exemple #6
0
 def test_as_binary(self):
     self.assertEqual(
         calculate_sha256(six.BytesIO(b'hello world'), as_hex=False),
         (b"\xb9M'\xb9\x93M>\x08\xa5.R\xd7\xda}\xab\xfa\xc4\x84\xef"
          b"\xe3zS\x80\xee\x90\x88\xf7\xac\xe2\xef\xcd\xe9"))
Exemple #7
0
 def test_as_hex(self):
     self.assertEqual(
         calculate_sha256(six.BytesIO(b'hello world'), as_hex=True),
         'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9')
Exemple #8
0
 def test_empty_hash(self):
     self.assertEqual(
         calculate_sha256(six.BytesIO(b''), as_hex=True),
         'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')