'Find encrypted headers and replace with the decrypted versions.
:param keys: a dict of decryption keys.
:return: A list of headers with any encrypted headers replaced by their
decrypted values.
:raises HTTPInternalServerError: if any error occurs while decrypting
headers'

def decrypt_resp_headers(self, keys):

    mod_hdr_pairs = []
    etag_header = 'X-Object-Sysmeta-Crypto-Etag'
    encrypted_etag = self._response_header_value(etag_header)
    if encrypted_etag:
        decrypted_etag = self._decrypt_header(etag_header, encrypted_etag, keys['object'], required=True)
        mod_hdr_pairs.append(('Etag', decrypted_etag))
    etag_header = 'X-Object-Sysmeta-Container-Update-Override-Etag'
    encrypted_etag = self._response_header_value(etag_header)
    if encrypted_etag:
        decrypted_etag = self._decrypt_header(etag_header, encrypted_etag, keys['container'])
        mod_hdr_pairs.append((etag_header, decrypted_etag))
    mod_hdr_pairs.extend(self.decrypt_user_metadata(keys))
    mod_hdr_names = {h.lower() for (h, v) in mod_hdr_pairs}
    mod_hdr_pairs.extend([(h, v) for (h, v) in self._response_headers if (h.lower() not in mod_hdr_names)])
    return mod_hdr_pairs
