NHre d dl mZ d dlmZmZmZmZmZmZm Z m Z d dlmZ edd Z G d d Zdd Zd ZdZdS ) )_copy_bytes)load_pycryptodome_raw_libcreate_string_bufferget_raw_bufferVoidPointerSmartPointerc_size_tc_uint8_ptris_writeable_buffer)get_random_byteszCrypto.Cipher._Salsa20a int Salsa20_stream_init(uint8_t *key, size_t keylen, uint8_t *nonce, size_t nonce_len, void **pSalsaState); int Salsa20_stream_destroy(void *salsaState); int Salsa20_stream_encrypt(void *salsaState, const uint8_t in[], uint8_t out[], size_t len); c ( e Zd ZdZd ZddZddZdS ) Salsa20CipherzSalsa20 cipher object. Do not create it directly. Use :py:func:`new` instead. :var nonce: The nonce with length 8 :vartype nonce: byte string c t | t vrt dt | z t | dk rt dt | z t dd| | _ t | _ t t | t t | t | t t | | j }|rt d t | j t j | _ d| _ t | | _ dS )zQInitialize a Salsa20 cipher object See also `new()` at the module level.z+Incorrect key length for Salsa20 (%d bytes) z-Incorrect nonce length for Salsa20 (%d bytes)Nz'Error %d instantiating a Salsa20 cipher )lenkey_size ValueErrorr noncer _state_raw_salsa20_libSalsa20_stream_initr r address_ofr getSalsa20_stream_destroy block_size)selfkeyr results w/builddir/build/BUILD/imunify360-venv-2.6.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/Cipher/Salsa20.py__init__zSalsa20Cipher.__init__6 s; s888##JSQTXXUVVVu::??L ZZ( ) ) ) !tU33 !mm!55#C(( S**#E** U,,..002 2 HFGGG"4;??#4#4#3#JL L C Nc |t t | }n_|}t | st d t | t | k rt dt | z t | j t | t | t t | }|rt d|z |t | S dS )a Encrypt a piece of data. Args: plaintext(bytes/bytearray/memoryview): The data to encrypt, of any size. Keyword Args: output(bytes/bytearray/memoryview): The location where the ciphertext is written to. If ``None``, the ciphertext is returned. Returns: If ``output`` is ``None``, the ciphertext is returned as ``bytes``. Otherwise, ``None``. Nz4output must be a bytearray or a writeable memoryviewz9output must have the same length as the input (%d bytes)z&Error %d while encrypting with Salsa20)r r r TypeErrorr r Salsa20_stream_encryptr r r r r )r plaintextoutput ciphertextr s r encryptzSalsa20Cipher.encryptS s >-c)nn==JJJ&v.. X VWWW9~~V,, "025i.."A B B B "88)-):):)4Y)?)?)4Z)@)@)1#i..)A)A C C PENOOO>!*---4r" c | || S # t $ r5}t t | dd d}~ww xY w)a Decrypt a piece of data. Args: ciphertext(bytes/bytearray/memoryview): The data to decrypt, of any size. Keyword Args: output(bytes/bytearray/memoryview): The location where the plaintext is written to. If ``None``, the plaintext is returned. Returns: If ``output`` is ``None``, the plaintext is returned as ``bytes``. Otherwise, ``None``. )r' encdecN)r) r strreplace)r r( r' es r decryptzSalsa20Cipher.decrypty s^ ;<< 6<::: ; ; ;SVV^^E599::: ;s A0AAN)__name__ __module____qualname____doc__r! r) r0 r" r r r . sV ! ! !:$ $ $ $L; ; ; ; ; ;r" r Nc D |t d }t | | S )a% Create a new Salsa20 cipher :keyword key: The secret key to use. It must be 16 or 32 bytes long. :type key: bytes/bytearray/memoryview :keyword nonce: A value that must never be reused for any other encryption done with this key. It must be 8 bytes long. If not provided, a random byte string will be generated (you can read it back via the ``nonce`` attribute of the returned object). :type nonce: bytes/bytearray/memoryview :Return: a :class:`Crypto.Cipher.Salsa20.Salsa20Cipher` object Nr )r r )r r s r newr8 s&