3 lá˜_« ã @ s„ d dl mZmZmZ d dlmZ d dlmZ d dlm Z d dl mZmZ dZ ejeƒG dd„ deƒƒZejeƒG d d „ d eƒƒZdS )é )Úabsolute_importÚdivisionÚprint_function)Úutils)Ú_evp_pkey_derive)Ú serialization)ÚX448PrivateKeyÚ X448PublicKeyé8 c @ s$ e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_X448PublicKeyc C s || _ || _d S )N)Ú_backendÚ _evp_pkey)ÚselfÚbackendÚevp_pkey© r ú/usr/lib64/python3.6/x448.pyÚ__init__ s z_X448PublicKey.__init__c C sV |t jjks|t jjkr@|t jjk s0|t jjk 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Úformatr r r Úpublic_bytes s z_X448PublicKey.public_bytesc C sp | j jjdtƒ}| j jjdtƒ}| j jj| j||ƒ}| j j|dkƒ | j j|d tkƒ | j jj|tƒd d … 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Úresr r r r + s z _X448PublicKey._raw_public_bytesN)Ú__name__Ú __module__Ú__qualname__r r r r r r r r s r c @ s4 e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d „ ZdS )Ú_X448PrivateKeyc C s || _ || _d S )N)r r )r r r r r r r 8 s z_X448PrivateKey.__init__c C sd | j jjdtƒ}| j jjdtƒ}| j jj| j||ƒ}| j j|dkƒ | j j|d tkƒ | j j|ƒS )Nzunsigned char []zsize_t *r r ) r r r r r r! r r" Zx448_load_public_bytes)r r$ r% r&