£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
y_&                 @   s   d dl mZmZmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZmZ ejeG dd deZeje
G dd deZd	S )
    )absolute_importdivisionprint_function)
exceptionsutils)serialization)Ed25519PrivateKeyEd25519PublicKey_ED25519_KEY_SIZE_ED25519_SIG_SIZEc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_Ed25519PublicKeyc             C   s   || _ || _d S )N)_backend	_evp_pkey)selfbackendevp_pkey r   /usr/lib64/python3.6/ed25519.py__init__   s    z_Ed25519PublicKey.__init__c             C   sV   |t jjks|t jjkr@|t jjk	s0|t jjk	r8td| j S | jj||| | jd S )Nz3When using Raw both encoding and format must be Raw)	r   EncodingRawPublicFormat
ValueError_raw_public_bytesr   Z_public_key_bytesr   )r   encodingformatr   r   r   public_bytes   s    z_Ed25519PublicKey.public_bytesc             C   sp   | j jjdt}| j jjdt}| j jj| j||}| j j|dk | j j|d tk | j jj|td d  S )Nzunsigned char []zsize_t *   r   )	r   _ffinewr
   _libEVP_PKEY_get_raw_public_keyr   openssl_assertbuffer)r   bufbuflenresr   r   r   r   *   s    z#_Ed25519PublicKey._raw_public_bytesc             C   s   | j jj }| j j|| j jjk | j jj|| j jj}| j jj|| j jj| j jj| j jj| j	}| j j|dk | j jj
||t||t|}|dkr| j j  tjd S )Nr   )r   r    Cryptography_EVP_MD_CTX_newr"   r   NULLgcCryptography_EVP_MD_CTX_freeZEVP_DigestVerifyInitr   ZEVP_DigestVerifylenZ_consume_errorsr   ZInvalidSignature)r   Z	signaturedata
evp_md_ctxr&   r   r   r   verify4   s     
z_Ed25519PublicKey.verifyN)__name__
__module____qualname__r   r   r   r.   r   r   r   r   r      s   
r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )_Ed25519PrivateKeyc             C   s   || _ || _d S )N)r   r   )r   r   r   r   r   r   r   L   s    z_Ed25519PrivateKey.__init__c             C   sz   | j jjdt}| j jjdt}| j jj| j||}| j j|dk | j j|d tk | j jj|d d  }| j j	|S )Nzunsigned char []zsize_t *r   r   )
r   r   r   r
   r    r!   r   r"   r#   Zed25519_load_public_bytes)r   r$   r%   r&   r   r   r   r   
public_keyP   s    z_Ed25519PrivateKey.public_keyc             C   s   | j jj }| j j|| j jjk | j jj|| j jj}| j jj|| j jj| j jj| j jj| j	}| j j|dk | j jj
dt}| j jj
dt|}| j jj||||t|}| j j|dk | j j|d tk | j jj||d d d  S )Nr   zunsigned char[]zsize_t *r   )r   r    r'   r"   r   r(   r)   r*   ZEVP_DigestSignInitr   r   r   r+   ZEVP_DigestSignr#   )r   r,   r-   r&   r$   r%   r   r   r   sign[   s$    z_Ed25519PrivateKey.signc             C   sf   |t jjks|t jjkrN|t jjk	s>|t jjk	s>t|t j rFtd| j S | j	j
|||| | jd S )NzcWhen using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption())r   r   r   r   ZPrivateFormat
isinstanceZNoEncryptionr   _raw_private_bytesr   Z_private_key_bytesr   )r   r   r   Zencryption_algorithmr   r   r   private_bytesr   s    z _Ed25519PrivateKey.private_bytesc             C   sp   | j jjdt}| j jjdt}| j jj| j||}| j j|dk | j j|d tk | j jj|td d  S )Nzunsigned char []zsize_t *r   r   )	r   r   r   r
   r    ZEVP_PKEY_get_raw_private_keyr   r"   r#   )r   r$   r%   r&   r   r   r   r6      s    z%_Ed25519PrivateKey._raw_private_bytesN)r/   r0   r1   r   r3   r4   r7   r6   r   r   r   r   r2   J   s
   r2   N)Z
__future__r   r   r   Zcryptographyr   r   Zcryptography.hazmat.primitivesr   Z1cryptography.hazmat.primitives.asymmetric.ed25519r   r	   r
   r   Zregister_interfaceobjectr   r2   r   r   r   r   <module>   s   8