o
    Ç `Æ  ã                   @   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 dZdZe e¡G dd„ deƒƒZe e
¡G d	d
„ d
eƒƒZdS )é    )Úabsolute_importÚdivisionÚprint_function)Ú
exceptionsÚutils)Úserialization)ÚEd448PrivateKeyÚEd448PublicKeyé9   ér   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_Ed448PublicKeyc                 C   ó   || _ || _d S ©N©Ú_backendÚ	_evp_pkey©ÚselfÚbackendZevp_pkey© r   ú€home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/backends/openssl/ed448.pyÚ__init__   ó   
z_Ed448PublicKey.__init__c                 C   sV   |t jju s|t jju r |t jjus|t jjurtdƒ‚|  ¡ S | 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_Ed448PublicKey.public_bytesc                 C   óp   | j j dt¡}| j j dt¡}| j j | j||¡}| j  |dk¡ | j  |d tk¡ | j j |t¡d d … S ©Nzunsigned char []úsize_t *é   r   )	r   Ú_ffiÚnewÚ_ED448_KEY_SIZEÚ_libÚEVP_PKEY_get_raw_public_keyr   Úopenssl_assertÚbuffer©r   ÚbufÚbuflenÚresr   r   r   r   +   ó   ÿz!_Ed448PublicKey._raw_public_bytesc                 C   s¬   | 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  |dk¡ | j j 
||t|ƒ|t|ƒ¡}|dkrT| j  ¡  tj‚d S )Nr$   )r   r(   ÚEVP_MD_CTX_newr*   r%   ÚNULLÚgcÚEVP_MD_CTX_freeZEVP_DigestVerifyInitr   ZEVP_DigestVerifyÚlenZ_consume_errorsr   ZInvalidSignature)r   Ú	signatureÚdataÚ
evp_md_ctxr/   r   r   r   Úverify5   s(   
ÿûÿ
þz_Ed448PublicKey.verifyN)Ú__name__Ú
__module__Ú__qualname__r   r    r   r9   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 )Ú_Ed448PrivateKeyc                 C   r   r   r   r   r   r   r   r   M   r   z_Ed448PrivateKey.__init__c                 C   sz   | j j dt¡}| j j dt¡}| j j | j||¡}| j  |dk¡ | j  |d tk¡ | j j |¡d d … }| j  	|¡S r"   )
r   r%   r&   r'   r(   r)   r   r*   r+   Zed448_load_public_bytes)r   r-   r.   r/   r    r   r   r   Ú
public_keyQ   s   ÿz_Ed448PrivateKey.public_keyc                 C   sð   | 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  |dk¡ | j j 
dt¡}| j j 
dt|ƒ¡}| j j ||||t|ƒ¡}| j  |dk¡ | j  |d tk¡ | j j ||d ¡d d … S )Nr$   zunsigned char[]r#   r   )r   r(   r1   r*   r%   r2   r3   r4   ZEVP_DigestSignInitr   r&   Ú_ED448_SIG_SIZEr5   ZEVP_DigestSignr+   )r   r7   r8   r/   r-   r.   r   r   r   Úsign\   s*   
ÿûÿz_Ed448PrivateKey.signc                 C   sd   |t jju s|t jju r&|t jjus|t jjust|t jƒs"tdƒ‚|  ¡ S | 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_bytess   s&   
ÿ
þ
ÿ
þÿýÿÿz_Ed448PrivateKey.private_bytesc                 C   r!   r"   )	r   r%   r&   r'   r(   ZEVP_PKEY_get_raw_private_keyr   r*   r+   r,   r   r   r   rB   Š   r0   z#_Ed448PrivateKey._raw_private_bytesN)r:   r;   r<   r   r>   r@   rC   rB   r   r   r   r   r=   K   s    r=   N)Ú
__future__r   r   r   Úcryptographyr   r   Zcryptography.hazmat.primitivesr   Z/cryptography.hazmat.primitives.asymmetric.ed448r   r	   r'   r?   Zregister_interfaceÚobjectr   r=   r   r   r   r   Ú<module>   s   8