File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/Cryptodome/Signature/__pycache__/eddsa.cpython-310.pyc
Back
o ;j�0 � @ sr d dl mZ d dlmZmZ d dlmZmZ d dlm Z m Z mZmZ dd� Z dd� ZG d d � d e�Zddd �ZdS )� )�Integer)�SHA512�SHAKE256)�bchr�is_bytes)�EccKey� construct�_import_ed25519_public_key�_import_ed448_public_keyc C sZ t | �dkrt| �\}}d}nt | �dkrt| �\}}d}ntdt | � ��t|||d�S )a� Create a new Ed25519 or Ed448 public key object, starting from the key encoded as raw ``bytes``, in the format described in RFC8032. Args: encoded (bytes): The EdDSA public key to import. It must be 32 bytes for Ed25519, and 57 bytes for Ed448. Returns: :class:`Cryptodome.PublicKey.EccKey` : a new ECC key object. Raises: ValueError: when the given key cannot be parsed. � �Ed25519�9 �Ed448zNot an EdDSA key (%d bytes))�curveZpoint_xZpoint_y)�lenr r � ValueErrorr )�encoded�x�y� curve_name� r �N/opt/saltstack/salt/lib/python3.10/site-packages/Cryptodome/Signature/eddsa.py�import_public_key) s r c C s8 t | �dkr d}n t | �dkrd}ntd��t| |d�S )a� Create a new Ed25519 or Ed448 private key object, starting from the key encoded as raw ``bytes``, in the format described in RFC8032. Args: encoded (bytes): The EdDSA private key to import. It must be 32 bytes for Ed25519, and 57 bytes for Ed448. Returns: :class:`Cryptodome.PublicKey.EccKey` : a new ECC key object. Raises: ValueError: when the given key cannot be parsed. r Zed25519r Zed448z8Incorrect length. Only EdDSA private keys are supported.)�seedr )r r r )r r r r r �import_private_keyE s r c @ sP e Zd ZdZdd� Zdd� Zdd� Zdd � Zd d� Zdd � Z dd� Z dd� ZdS )�EdDSASigSchemezpAn EdDSA signature object. Do not instantiate directly. Use :func:`Cryptodome.Signature.eddsa.new`. c C s$ || _ || _|�� | _|jj| _dS )z�Create a new EdDSA object. Do not instantiate this object directly, use `Cryptodome.Signature.DSS.new` instead. N)�_key�_context�_export_eddsa_public�_A�_curve�order�_order)�self�key�contextr r r �__init__i s zEdDSASigScheme.__init__c C s | j �� S )zRReturn ``True`` if this signature object can be used for signing messages.)r �has_private)r# r r r �can_signu s zEdDSASigScheme.can_signc C s� | j �� s td��| j jdkr#t|tj�}|st|�std��| j}n| j jdkr=t|t j �}|s9t|�s9td��| j}ntd��|||�S )aR Compute the EdDSA signature of a message. Args: msg_or_hash (bytes or a hash object): The message to sign (``bytes``, in case of *PureEdDSA*) or the hash that was carried out over the message (hash object, for *HashEdDSA*). The hash object must be :class:`Cryptodome.Hash.SHA512` for Ed25519, and :class:`Cryptodome.Hash.SHAKE256` object for Ed448. :return: The signature as ``bytes``. It is always 64 bytes for Ed25519, and 114 bytes for Ed448. :raise TypeError: if the EdDSA key has no private half zPrivate key is needed to signr �-'msg_or_hash' must be bytes of a SHA-512 hashr �.'msg_or_hash' must be bytes of a SHAKE256 hash�Incorrect curve for EdDSA) r r'