
     h                         d dl Z d dlmZ d dlmZ d dlmZmZ e j        rd dl	m
Z
 dZ G d de          Z G d	 d
e          ZdS )    N)_evp_pkey_derive)serialization)X448PrivateKeyX448PublicKey)Backend8   c                   J    e Zd Zd
dZdej        dej        defdZdefdZ	d	S )_X448PublicKeybackendr   c                 "    || _         || _        d S N_backend	_evp_pkeyselfr   evp_pkeys      e/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/x448.py__init__z_X448PublicKey.__init__       !    encodingformatreturnc                 &   |t           j        j        u s|t           j        j        u rI|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   _public_key_bytesr   )r   r   r   s      r   public_bytesz_X448PublicKey.public_bytes   s     .2223777  6 :::!;!??? I   ))+++}..fdDND
 
 	
r   c                    | 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 []zsize_t *   r   )	r   _ffinew_X448_KEY_SIZE_libEVP_PKEY_get_raw_public_keyr   openssl_assertbufferr   bufbuflenress       r   r    z _X448PublicKey._raw_public_bytes0   s    m $$%7HH#''
NCCm <<NC
 
 	$$SAX...$$VAY.%@AAA}!((n==aaa@@r   Nr   r   )
__name__
__module____qualname__r   r   r   r   bytesr"   r     r   r   r
   r
      s        " " " "
(
 *
 
	
 
 
 
.A5 A A A A A Ar   r
   c                   t    e Zd ZddZdefdZdedefdZdej	        d	ej
        d
ej        defdZdefdZdS )_X448PrivateKeyr   r   c                 "    || _         || _        d S r   r   r   s      r   r   z_X448PrivateKey.__init__<   r   r   r   c                    | 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,   x448_load_public_bytes)r   r.   r/   r0   r"   s        r   
public_keyz_X448PrivateKey.public_key@   s    m $$%7HH#''
NCCm <<NC
 
 	$$SAX...$$VAY.%@AAA})0055aaa8}33LAAAr   peer_public_keyc                     t          |t                    st          d          t          | j        | j        |          S )Nz&peer_public_key must be X448PublicKey.)
isinstancer   	TypeErrorr   r   r   )r   r=   s     r   exchangez_X448PrivateKey.exchangeK   s:    /=99 	FDEEEt~OOOr   r   r   encryption_algorithmc                 \   |t           j        j        u s|t           j        j        u rc|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   PrivateFormatr?   NoEncryptionr   _raw_private_bytesr   _private_key_bytesr   )r   r   r   rB   s       r   private_bytesz_X448PrivateKey.private_bytesQ   s     .2224888 m9====#9#===!(-*D  >
 !F  
 **,,,}//f2D$.$
 
 	
r   c                    | j         j                            dt                    }| j         j                            dt                    }| j         j                            | j        ||          }| j                             |dk               | j                             |d         t          k               | j         j                            |t                    d d          S r$   )	r   r&   r'   r(   r)   EVP_PKEY_get_raw_private_keyr   r+   r,   r-   s       r   rF   z"_X448PrivateKey._raw_private_bytesm   s    m $$%7HH#''
NCCm ==NC
 
 	$$SAX...$$VAY.%@AAA}!((n==aaa@@r   Nr1   )r2   r3   r4   r   r   r<   r5   rA   r   r   rD   KeySerializationEncryptionrH   rF   r6   r   r   r8   r8   ;   s        " " " "	BM 	B 	B 	B 	BP P% P P P P
(
 +
 ,F	

 

 
 
 
8AE A A A A A Ar   r8   )typing*cryptography.hazmat.backends.openssl.utilsr   cryptography.hazmat.primitivesr   .cryptography.hazmat.primitives.asymmetric.x448r   r   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   r(   r
   r8   r6   r   r   <module>rR      s   
  G G G G G G 8 8 8 8 8 8       
 
 EDDDDDD$A $A $A $A $A] $A $A $AN:A :A :A :A :An :A :A :A :A :Ar   