Ejemplo n.º 1
0
def _calculate_md5_from_file(fileobj):
    start_position = fileobj.tell()
    md5 = get_md5()
    for chunk in iter(lambda: fileobj.read(1024 * 1024), b''):
        md5.update(chunk)
    fileobj.seek(start_position)
    return md5.digest()
Ejemplo n.º 2
0
def _calculate_md5_from_file(fileobj):
    start_position = fileobj.tell()
    md5 = get_md5()
    for chunk in iter(lambda: fileobj.read(1024 * 1024), b''):
        md5.update(chunk)
    fileobj.seek(start_position)
    return md5.digest()
Ejemplo n.º 3
0
def _sse_md5(params, sse_member_prefix="SSECustomer"):
    if not _needs_s3_sse_customization(params, sse_member_prefix):
        return

    sse_key_member = sse_member_prefix + "Key"
    sse_md5_member = sse_member_prefix + "KeyMD5"
    key_as_bytes = params[sse_key_member]
    if isinstance(key_as_bytes, six.text_type):
        key_as_bytes = key_as_bytes.encode("utf-8")
    key_md5_str = base64.b64encode(get_md5(key_as_bytes).digest()).decode("utf-8")
    key_b64_encoded = base64.b64encode(key_as_bytes).decode("utf-8")
    params[sse_key_member] = key_b64_encoded
    params[sse_md5_member] = key_md5_str
Ejemplo n.º 4
0
def _sse_md5(params, sse_member_prefix='SSECustomer'):
    if not _needs_s3_sse_customization(params, sse_member_prefix):
        return

    sse_key_member = sse_member_prefix + 'Key'
    sse_md5_member = sse_member_prefix + 'KeyMD5'
    key_as_bytes = params[sse_key_member]
    if isinstance(key_as_bytes, six.text_type):
        key_as_bytes = key_as_bytes.encode('utf-8')
    key_md5_str = base64.b64encode(
        get_md5(key_as_bytes).digest()).decode('utf-8')
    key_b64_encoded = base64.b64encode(key_as_bytes).decode('utf-8')
    params[sse_key_member] = key_b64_encoded
    params[sse_md5_member] = key_md5_str
Ejemplo n.º 5
0
def _calculate_md5_from_bytes(body_bytes):
    md5 = get_md5(body_bytes)
    return md5.digest()
Ejemplo n.º 6
0
def _calculate_md5_from_bytes(body_bytes):
    md5 = get_md5(body_bytes)
    return md5.digest()
Ejemplo n.º 7
0
 def test_unavailable_raises_error(self):
     with mock.patch('botocore.compat.MD5_AVAILABLE', False):
         with self.assertRaises(MD5UnavailableError):
             get_md5()
Ejemplo n.º 8
0
 def test_available(self):
     md5 = mock.Mock()
     with mock.patch('botocore.compat.MD5_AVAILABLE', True):
         with mock.patch('hashlib.md5', mock.Mock(return_value=md5)):
             self.assertEqual(get_md5(), md5)
Ejemplo n.º 9
0
 def test_unavailable_raises_error(self):
     with mock.patch('botocore.compat.MD5_AVAILABLE', False):
         with self.assertRaises(MD5UnavailableError):
             get_md5()
Ejemplo n.º 10
0
 def test_available(self):
     md5 = mock.Mock()
     with mock.patch('botocore.compat.MD5_AVAILABLE', True):
         with mock.patch('hashlib.md5', mock.Mock(return_value=md5)):
             self.assertEqual(get_md5(), md5)