o
    ɶd
                     @   s|   d dl mZ d dlZd dlmZ d dlZd dlZd dlZdd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd Zdd ZdS )    )sixN)DEFAULT_ENCODINGc                 C   s$   t | tjrt | ts| tS | S N)
isinstancer   string_typesbytesencoder   data r   Ausr/lib/python3.10/site-packages/oci/encryption/internal/utils.pyconvert_to_bytes   s   
r   c                 C   s   t | tr
| tS | S r   )r   r   decoder   r	   r   r   r   convert_to_str   s   

r   c                 C   s    t | ts	tdtt| S )NzCannot convert non-bytes object)r   r   	TypeErrorr   base64	b64encoder	   r   r   r   &convert_bytes_to_base64_encoded_string   s   
r   c                 C   s(   t | tjrt | trtdt| S )Nz%Cannot convert non string like object)r   r   r   r   r   r   	b64decoder	   r   r   r   &convert_base64_encoded_string_to_bytes    s   
r   c                 C   s   | sdS t j| dddS )N T),:)	sort_keys
separators)jsondumps)Zencryption_contextr   r   r   $convert_encryption_context_to_string'   s   r   c                 C   s
   t | S )zjGenerates a random initialization vector (IV).

    :returns: Initialization vector
    :rtype: bytes
    )osurandom)Ziv_lenr   r   r   generate_random_iv/   s   
r    c                 C   s.   t t| d@ }||krtd||dS )Nl    zPCould not verify integrity of data. Computed checksum: {}. Expected checksum: {}T)strzlibcrc32
ValueErrorformat)Zinput_bytesZchecksumZcrc32_calculated_checksumr   r   r   verify_crc32_checksum8   s   r&   c                 C   s.   t jrtd| t|t t| | d S )Nz{} Caused by exception: {})r   ZPY2RuntimeErrorr%   r!   Z
raise_from)Zruntime_exc_messageZorig_excr   r   r   raise_runtime_error_fromG   s   r(   )Zoci._vendorr   r   Z oci.encryption.internal.defaultsr   r"   r   r   r   r   r   r   r   r    r&   r(   r   r   r   r   <module>   s   	