/
lib
/
python3.9
/
site-packages
/
oci
/
__pycache__
/
Upload File
HOME
a ���f� � @ sj d dl mZ d dlZd dlZd dlZd dlZG dd� d�Zdd� Zddd �Zd d� Z dd � Z ddd�ZdS )� )�absolute_importNc @ s e Zd ZdZdd� ZdS )�DevNullza Simple class to supress errors which may occur when importing hashlib in FIPS mode. c C s d S )N� )�self�msgr r �,/usr/lib/python3.9/site-packages/oci/fips.py�write s z DevNull.writeN)�__name__� __module__�__qualname__�__doc__r r r r r r s r c C s8 t �| �}|�t �d�� ddl}t|d�s4|j|_dS )zQ Override libcrypto and add FIPS_mode function to ssl if it is not there � r N� FIPS_mode)�ctypesZCDLLZ FIPS_mode_setZc_int�ssl�hasattrr )�fips_libcrypto_pathZ _bs_cryptor r r r �override_libcrypto s r � c C s t d��dS )zm Placeholder md5 function for hashlib so it won't segfault when called after enabling FIPS mode. zmd5 disabled for fipsN)� ValueError)Zintitial_messager r r �md5! s r c C sB t j} zt� t _ddl}W n ttfy0 Y n0 | t _t|_dS )z� hashlib.md5 is imported by urllib3, which is required by requests, which is used by oci (python sdk). This will cause errors so we need to patch hashlib. r N)�sys�stderrr �hashlib�RuntimeErrorr r )r r r r r �patch_hashlib_md5* s r c C sZ ddl } ddl}t|d�sdS |�� dkr.dS z| �d��� }W dS tyT Y n0 dS )zZ Verify that ssl.FIPS_mode() returns 1 and that using md5 raises an exception r Nr Fr � Hello World T)r r r r r � hexdigestr )r r �digestr r r �is_fips_mode; s r c C s� t �d�ttt���}|�t �� � | sRdtj v r>tj d } ndtj v rRtj d } | r�t | � ddl}z|�d�� � }t� W n ty� Y n0 |�d�| �� t� r�|�d� n |�d � dS ) zG Enable FIPS mode by overriding libcrypto and patching hashlib z{}.{}ZFIPS_LIBCRYPTO_PATHZ"OCI_PYTHON_SDK_FIPS_LIBCRYPTO_PATHr Nr zUsing '{}' for libcyptozFIPS mode is activezFailed to enter FIPS mode)�loggingZ getLogger�formatr �id�enable_fips_modeZ addHandlerZNullHandler�os�environr r r r r r �infor �error)r �loggerr r r r r r# S s&