3 y�_��@s�ddlmZmZmZddlmZmZddlmZddl m Z m Z dZ dZ eje �Gdd�de��Zeje �Gd d �d e��Zd S) �)�absolute_import�division�print_function)� exceptions�utils)� serialization)�Ed448PrivateKey�Ed448PublicKey�9�rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) �_Ed448PublicKeycCs||_||_dS)N)�_backend� _evp_pkey)�self�backend�evp_pkey�r�/usr/lib64/python3.6/ed448.py�__init__sz_Ed448PublicKey.__init__cCsV|tjjks|tjjkr@|tjjk s0|tjjk r8td��|j�S|jj||||jd�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�formatrrr� public_bytess    z_Ed448PublicKey.public_bytescCsp|jjjdt�}|jjjdt�}|jjj|j||�}|jj|dk�|jj|dtk�|jjj|t�dd�S)Nzunsigned char []zsize_t *�r) r �_ffi�new�_ED448_KEY_SIZE�_lib�EVP_PKEY_get_raw_public_keyr�openssl_assert�buffer)r�buf�buflen�resrrrr+s z!_Ed448PublicKey._raw_public_bytescCs�|jjj�}|jj||jjjk�|jjj||jjj�}|jjj||jjj|jjj|jjj|j �}|jj|dk�|jjj ||t |�|t |��}|dkr�|jj �t j�dS)Nr)r r!�Cryptography_EVP_MD_CTX_newr#r�NULL�gc�Cryptography_EVP_MD_CTX_freeZEVP_DigestVerifyInitrZEVP_DigestVerify�lenZ_consume_errorsrZInvalidSignature)rZ signature�data� evp_md_ctxr'rrr�verify5s   z_Ed448PublicKey.verifyN)�__name__� __module__� __qualname__rrrr/rrrrr s r c@s4eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd S) �_Ed448PrivateKeycCs||_||_dS)N)r r)rrrrrrrMsz_Ed448PrivateKey.__init__cCsz|jjjdt�}|jjjdt�}|jjj|j||�}|jj|dk�|jj|dtk�|jjj|�dd�}|jj |�S)Nzunsigned char []zsize_t *rr) r rrr r!r"rr#r$Zed448_load_public_bytes)rr%r&r'rrrr� public_keyQs z_Ed448PrivateKey.public_keycCs�|jjj�}|jj||jjjk�|jjj||jjj�}|jjj||jjj|jjj|jjj|j �}|jj|dk�|jjj dt �}|jjj dt |��}|jjj ||||t |��}|jj|dk�|jj|dt k�|jjj||d�dd�S)Nrzunsigned char[]zsize_t *r)r r!r(r#rr)r*r+ZEVP_DigestSignInitrr�_ED448_SIG_SIZEr,ZEVP_DigestSignr$)rr-r.r'r%r&rrr�sign\s$ z_Ed448PrivateKey.signcCsf|tjjks|tjjkrN|tjjk s>|tjjk s>t|tj� rFtd��|j�S|j j |||||j d�S)NzcWhen using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption()) rrrrZ PrivateFormat� isinstanceZ NoEncryptionr�_raw_private_bytesr Z_private_key_bytesr)rrrZencryption_algorithmrrr� private_bytesss     z_Ed448PrivateKey.private_bytescCsp|jjjdt�}|jjjdt�}|jjj|j||�}|jj|dk�|jj|dtk�|jjj|t�dd�S)Nzunsigned char []zsize_t *rr) r rrr r!ZEVP_PKEY_get_raw_private_keyrr#r$)rr%r&r'rrrr8�s z#_Ed448PrivateKey._raw_private_bytesN)r0r1r2rr4r6r9r8rrrrr3Ks  r3N)Z __future__rrrZ cryptographyrrZcryptography.hazmat.primitivesrZ/cryptography.hazmat.primitives.asymmetric.ed448rr r r5Zregister_interface�objectr r3rrrr�s 8