whoami7 - Manager
:
/
lib
/
python3
/
dist-packages
/
nacl
/
__pycache__
/
Upload File:
files >> //lib/python3/dist-packages/nacl/__pycache__/secret.cpython-38.pyc
U �֫[6 � @ sb d dl mZmZmZ d dlZd dlmZ d dlmZ d dl m Z mZmZ G dd� dej ee�ZdS )� )�absolute_import�division�print_functionN)�encoding)� exceptions)�EncryptedMessage�StringFixer�randomc @ sf e Zd ZdZejjZejjZ ejj ZejjZ ejfdd�Zdd� Zdejfdd�Zdejfd d �ZdS )� SecretBoxa5 The SecretBox class encrypts and decrypts messages using the given secret key. The ciphertexts generated by :class:`~nacl.secret.Secretbox` include a 16 byte authenticator which is checked as part of the decryption. An invalid authenticator will cause the decrypt function to raise an exception. The authenticator is not a signature. Once you've decrypted the message you've demonstrated the ability to create arbitrary valid message, so messages you send are repudiable. For non-repudiable messages, sign them after encryption. :param key: The secret key used to encrypt and decrypt messages :param encoder: The encoder class used to decode the given key :cvar KEY_SIZE: The size that the key is required to be. :cvar NONCE_SIZE: The size that the nonce is required to be. :cvar MACBYTES: The size of the authentication MAC tag in bytes. :cvar MESSAGEBYTES_MAX: The maximum size of a message which can be safely encrypted with a single key/nonce pair. c C sF |� |�}t|t�st�d��t|�| jkr<t�d| j ��|| _d S )Nz'SecretBox must be created from 32 bytesz%The key must be exactly %s bytes long) �decode� isinstance�bytes�exc� TypeError�len�KEY_SIZE� ValueError�_key)�self�key�encoder� r �-/usr/lib/python3/dist-packages/nacl/secret.py�__init__4 s ��zSecretBox.__init__c C s | j S )N)r )r r r r � __bytes__A s zSecretBox.__bytes__Nc C sn |dkrt | j�}t|�| jkr0t�d| j ��tj�||| j�}|� |�}|� |�}t �|||� || ��S )aL Encrypts the plaintext message using the given `nonce` (or generates one randomly if omitted) and returns the ciphertext encoded with the encoder. .. warning:: It is **VITALLY** important that the nonce is a nonce, i.e. it is a number used only once for any given key. If you fail to do this, you compromise the privacy of the messages encrypted. Give your nonces a different prefix, or have one side use an odd counter and one an even counter. Just make sure they are different. :param plaintext: [:class:`bytes`] The plaintext message to encrypt :param nonce: [:class:`bytes`] The nonce to use in the encryption :param encoder: The encoder to use to encode the ciphertext :rtype: [:class:`nacl.utils.EncryptedMessage`] N�'The nonce must be exactly %s bytes long)r � NONCE_SIZEr r r �nacl�bindingsZcrypto_secretboxr �encoder Z_from_parts)r � plaintext�noncer � ciphertextZ encoded_nonceZencoded_ciphertextr r r �encryptD s"