
     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dZ G d d	e          Z G d
 de          ZdS )    N)
exceptions)serialization)Ed448PrivateKeyEd448PublicKey)Backend9   r   c                   ^    e Zd ZddZdej        dej        defdZdefdZ	d	ed
eddfdZ
dS )_Ed448PublicKeybackendr   c                 "    || _         || _        d S N_backend	_evp_pkeyselfr   evp_pkeys      f/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/ed448.py__init__z_Ed448PublicKey.__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_Ed448PublicKey.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 []size_t *   r   )	r   _ffinew_ED448_KEY_SIZE_libEVP_PKEY_get_raw_public_keyr   openssl_assertbufferr   bufbuflenress       r   r!   z!_Ed448PublicKey._raw_public_bytes1   s    m $$%7II#''
ODDm <<NC
 
 	$$SAX...$$VAY/%ABBB}!((o>>qqqAAr   	signaturedataNc           	         | 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    r%| j                                          t          j        d S )Nr'   )r   r+   EVP_MD_CTX_newr-   r(   NULLgcEVP_MD_CTX_freeEVP_DigestVerifyInitr   EVP_DigestVerifylen_consume_errorsr   InvalidSignature)r   r3   r4   
evp_md_ctxr2   s        r   verifyz_Ed448PublicKey.verify;   s#   ]'6688
$$Z4=3E3J%JKKK]'***:
 

 m 55M#M#M#N
 
 	$$SAX...m 11	3y>>4T
 
 !88M))+++-- 8r   r   r   )__name__
__module____qualname__r   r   r   r   bytesr#   r!   r@    r   r   r   r      s        " " " "
(
 *
 
	
 
 
 
.B5 B B B B. .U .t . . . . . .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 )_Ed448PrivateKeyr   r   c                 "    || _         || _        d S r   r   r   s      r   r   z_Ed448PrivateKey.__init__R   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.   ed448_load_public_bytes)r   r0   r1   r2   r#   s        r   
public_keyz_Ed448PrivateKey.public_keyV   s    m $$%7II#''
ODDm <<NC
 
 	$$SAX...$$VAY/%ABBB})0055aaa8}44\BBBr   r4   c           	         | 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+   r6   r-   r(   r7   r8   r9   EVP_DigestSignInitr   r)   _ED448_SIG_SIZEr<   EVP_DigestSignr.   )r   r4   r?   r2   r0   r1   s         r   signz_Ed448PrivateKey.signa   s   ]'6688
$$Z4=3E3J%JKKK]'***:
 

 m 33M#M#M#N
 
 	$$SAX...m $$%6HH#''
CHH==m //VT3t99
 
 	$$SAX...$$VAY/%ABBB}!((fQi88;;r   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   PrivateFormat
isinstanceNoEncryptionr    _raw_private_bytesr   _private_key_bytesr   )r   r   r   rR   s       r   private_bytesz_Ed448PrivateKey.private_bytesx   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   rW   z#_Ed448PrivateKey._raw_private_bytes   s    m $$%7II#''
ODDm ==NC
 
 	$$SAX...$$VAY/%ABBB}!((o>>qqqAAr   NrA   )rB   rC   rD   r   r   rL   rE   rQ   r   r   rT   KeySerializationEncryptionrY   rW   rF   r   r   rH   rH   Q   s        " " " "	CN 	C 	C 	C 	C< <5 < < < <.
(
 +
 ,F	

 

 
 
 
8BE B B B B B Br   rH   )typingcryptographyr   cryptography.hazmat.primitivesr   /cryptography.hazmat.primitives.asymmetric.ed448r   r   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   r*   rO   r   rH   rF   r   r   <module>rc      s   
  # # # # # # 8 8 8 8 8 8       
 
 EDDDDDD9. 9. 9. 9. 9.n 9. 9. 9.xKB KB KB KB KB KB KB KB KB KBr   