/
var
/
opt
/
nydus
/
ops
/
customer_local_ops
/
util
/
__pycache__
/
up file
home
� =�j�, � � � d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm Z m Z mZmZ d dl mZ d dlmZ d dlmZmZ d dlmZmZ d d lmZmZ d e defd�Zd eeef defd�Z G d� d� Z G d� d� Z G d� d� Z y)� N)� b64decode� b64encode)�Path)�AnyStr�Optional�Union�cast)�x509)�Fernet)�hashes� serialization)�MGF1�OAEP)�aes_cbc_pkcs7_encrypt�aes_cbc_pkcs7_decrypt�data�returnc �d � t | t � r| j d� } t t | � S )a Convert a Python `str` object to a `bytes` object. If the parameter is already a `bytes` object, return it unmodified. :param data: The object to be converted :return: The converted object, or the original object if it was not a `str` object �utf-8)� isinstance�str�encoder �bytes)r s �R/opt/nydus/tmp/pip-target-hb7welcc/lib/python/customer_local_ops/util/encryptor.py�_make_bytesr s) � � �$����{�{�7�#����t��� �key_pathc �� � | �t d� �t | t � rt | � } | j � st dj | �� � �| j � S )a. Convenience function to load the content of a key or cert file and return its contents. :param key_path: Path to the key/cert file to be loaded :return: The file contents as a bytes object :raises: ValueError if the key_path parameter is None of doesn't point to an existing file z!key_path parameter cannot be Nonez$key path '{key_path}' does not exist�r )� ValueErrorr r r �is_file�format� read_bytesr s r �load_key_contentr$ ! s_ � � ���<�=�=��(�C� ���>�������?�F�F�PX�F�Y�Z�Z���� � r c �L � e Zd ZdZedededefd�� Zedededefd�� Z y) � Encryptor� �encrypted_data� secret_keyr c � � t t |� � }|d| j }|| j d }t |� }t j |� j � }t |||� j d� S )a� Decrypt encrypted data using the PKCS7 symmetric decryption algorithm :param encrypted_data: Base-64 encoded byte array containing encrypted data, which is a combination of the salt and the actual data :param secret_key: Secret value used to generate an encryption key :return: Decrypted, plain text value Nr )r r �_Encryptor__iv_size�hashlib�sha256�digestr �decode)�clsr( r) �decoded_data�ivr �secret_key_bytes�hashed_secret_keys r �decryptzEncryptor.decrypt9 sr � � !��^�!<�=�� �.�3�=�=� )���C�M�M�N�+��&�z�2��#�N�N�+;�<�C�C�E��$�%6��b�A�H�H��Q�Qr �unencrypted_datac �� � t j | j � }t |� }t |� }t j |� j � }t |||� \ }}t ||z � S )a# Encrypts data using the PKCS7 symmetric encryption algorithm :param unencrypted_data: Data to be encrypted :param secret_key: Secret value used to generate an encryption key :return: Base-64 encoded byte array containing encrypted value ) �os�urandomr+ r r, r- r. r r ) r0 r6 r) �iv_bytes�plain_text_bytesr3 r4 r2 r( s r �encryptzEncryptor.encryptK sl � � �:�:�c�m�m�,��&�'7�8��&�z�2��#�N�N�+;�<�C�C�E��2�3D�FV�X`�a���N���n�,�-�-r N) �__name__� __module__�__qualname__r+ �classmethodr r r5 r r<