3 l�_��@s�ddlmZmZmZddlmZddlmZddlm Z ddl m Z m Z dZ eje �Gdd�de��Zeje �Gd d �d e��Zd S) �)�absolute_import�division�print_function)�utils)�_evp_pkey_derive)� serialization)�X448PrivateKey� X448PublicKey�8c@s$eZdZdd�Zdd�Zdd�ZdS)�_X448PublicKeycCs||_||_dS)N)�_backend� _evp_pkey)�self�backend�evp_pkey�r�/usr/lib64/python3.6/x448.py�__init__sz_X448PublicKey.__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_X448PublicKey.public_bytescCsp|jjjdt�}|jjjdt�}|jjj|j||�}|jj|dk�|jj|dtk�|jjj|t�dd�S)Nzunsigned char []zsize_t *�r) r �_ffi�new�_X448_KEY_SIZE�_lib�EVP_PKEY_get_raw_public_keyr �openssl_assert�buffer)r�buf�buflen�resrrrr+s z _X448PublicKey._raw_public_bytesN)�__name__� __module__� __qualname__rrrrrrrr sr c@s4eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd S) �_X448PrivateKeycCs||_||_dS)N)r r )rrrrrrr8sz_X448PrivateKey.__init__cCsd|jjjdt�}|jjjdt�}|jjj|j||�}|jj|dk�|jj|dtk�|jj|�S)Nzunsigned char []zsize_t *rr) r rrrr r!r r"Zx448_load_public_bytes)rr$r%r&rrr� public_key<s z_X448PrivateKey.public_keycCs"t|t�std��t|j|j|�S)Nz&peer_public_key must be X448PublicKey.)� isinstancer � TypeErrorrr r )rZpeer_public_keyrrr�exchangeFs z_X448PrivateKey.exchangecCsf|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 PrivateFormatr,Z NoEncryptionr�_raw_private_bytesr Z_private_key_bytesr )rrrZencryption_algorithmrrr� private_bytesLs     z_X448PrivateKey.private_bytescCsp|jjjdt�}|jjjdt�}|jjj|j||�}|jj|dk�|jj|dtk�|jjj|t�dd�S)Nzunsigned char []zsize_t *rr) r rrrr ZEVP_PKEY_get_raw_private_keyr r"r#)rr$r%r&rrrr/cs z"_X448PrivateKey._raw_private_bytesN)r'r(r)rr+r.r0r/rrrrr*6s  r*N)Z __future__rrrZ cryptographyrZ*cryptography.hazmat.backends.openssl.utilsrZcryptography.hazmat.primitivesrZ.cryptography.hazmat.primitives.asymmetric.x448rr rZregister_interface�objectr r*rrrr�s   #