
    Eqg&                        d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ  G d d	e          Z G d
 de
          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )     N)default_backend)hashes)paddingrsa)CryptographyPrivateKeyCryptographyPublicKey)	Algorithm)DNSKEYc                       e Zd ZU ej        ed<   ej        Zeed<   ej	        ed<   de
de
ddfdZde
fd	Zededd fd
            ZdS )	PublicRSAkey	algorithmchosen_hash	signaturedatareturnNc                 l    | j                             ||t          j                    | j                   d S )N)r   verifyr   PKCS1v15r   )selfr   r   s      D/var/www/html/env/lib/python3.11/site-packages/dns/dnssecalgs/rsa.pyr   zPublicRSA.verify   s.    	4)9););T=MNNNNN    c                 V   | j                                         }t          j        t                              |j                  dz            }t                              |j        |d          }|dk    rdt          j	        d|          z   }nt          j	        d|          }|j
                                        dk     s|j
                                        d	k    rt          d
          ||z   |j
                            |j
                                        dz   dz  d          z   S )z,Encode a public key per RFC 3110, section 2.   big)length	byteorder       !H!Bi   i   zunsupported RSA key length   )r   public_numbersmathceilint
bit_lengtheto_bytesstructpackn
ValueError)r   pn_exp_lenexp
exp_headers        r   encode_key_byteszPublicRSA.encode_key_bytes   s    X$$&&9S^^BD11A566ll24ElBBc>>T8!<!<<JJT844J4??s""bdoo&7&7$&>&>9:::C"$--1B1BQ1F10Le"T"TTTr   c           	         |                      |           |j        }t          j        d|dd                   \  }|dd          }|dk    r)t          j        d|dd                   \  }|dd          }|d|         }||d          } | t	          j        t                              |d          t                              |d                                        t                                          S )Nr!   r      r       r   r   )
!_ensure_algorithm_key_combinationr   r*   unpackr   RSAPublicNumbersr&   
from_bytes
public_keyr   )clsr   keyptrbytes_rsa_ersa_ns         r   from_dnskeyzPublicRSA.from_dnskey#   s    --c222M$qs44	Q;;dF1Q3K88IVABBZFqx vwws$ue,,cnnUE.J.J j**++
 
 
 	
r   )__name__
__module____qualname__r   RSAPublicKey__annotations__key_clsr	   r   HashAlgorithmbytesr   r2   classmethodr
   rA    r   r   r   r      s         		G%%%%O OU Ot O O O OU% U U U U 
f 
 
 
 
 [
 
 
r   r   c            	       x    e Zd ZU ej        ed<   ej        ZeZdZ		 	 dde
dedede
fd	Zed
edd fd            ZdS )
PrivateRSAr   i  FTr   r   deterministicr   c                     | j                             |t          j                    | j        j                  }|r(|                                                     ||           |S )z1Sign using a private key per RFC 3110, section 3.)r   signr   r   
public_clsr   r;   r   )r   r   r   rN   r   s        r   rP   zPrivateRSA.sign;   sW     HMM$(8(:(:DO<WXX	 	6OO$$Y555r   key_sizec                 f     | t          j        | j        |t                                          S )N)public_exponentrR   backendr6   )r   generate_private_keydefault_public_exponentr   )r<   rR   s     r   generatezPrivateRSA.generateG   sB    s( # ;!'))  
 
 
 	
r   N)FT)rB   rC   rD   r   RSAPrivateKeyrF   rG   r   rQ   rW   rI   boolrP   rJ   r&   rX   rK   r   r   rM   rM   5   s         		GJ#
 "	
 

 
 	

 

 
 
 
 
 
 
 
 
 [
 
 
r   rM   c                   :    e Zd Zej        Z ej                    ZdS )PublicRSAMD5N)	rB   rC   rD   r	   RSAMD5r   r   MD5r   rK   r   r   r\   r\   R   s#         I&*,,KKKr   r\   c                       e Zd ZeZdS )PrivateRSAMD5N)rB   rC   rD   r\   rQ   rK   r   r   r`   r`   W   s        JJJr   r`   c                   :    e Zd Zej        Z ej                    ZdS )PublicRSASHA1N)	rB   rC   rD   r	   RSASHA1r   r   SHA1r   rK   r   r   rb   rb   [   s#        !I&+--KKKr   rb   c                       e Zd ZeZdS )PrivateRSASHA1N)rB   rC   rD   rb   rQ   rK   r   r   rf   rf   `   s        JJJr   rf   c                   :    e Zd Zej        Z ej                    ZdS )PublicRSASHA1NSEC3SHA1N)	rB   rC   rD   r	   RSASHA1NSEC3SHA1r   r   rd   r   rK   r   r   rh   rh   d   s#        *I&+--KKKr   rh   c                       e Zd ZeZdS )PrivateRSASHA1NSEC3SHA1N)rB   rC   rD   rh   rQ   rK   r   r   rk   rk   i   s        'JJJr   rk   c                   :    e Zd Zej        Z ej                    ZdS )PublicRSASHA256N)	rB   rC   rD   r	   	RSASHA256r   r   SHA256r   rK   r   r   rm   rm   m   #        #I&-//KKKr   rm   c                       e Zd ZeZdS )PrivateRSASHA256N)rB   rC   rD   rm   rQ   rK   r   r   rr   rr   r            JJJr   rr   c                   :    e Zd Zej        Z ej                    ZdS )PublicRSASHA512N)	rB   rC   rD   r	   	RSASHA512r   r   SHA512r   rK   r   r   ru   ru   v   rp   r   ru   c                       e Zd ZeZdS )PrivateRSASHA512N)rB   rC   rD   ru   rQ   rK   r   r   ry   ry   {   rs   r   ry   )r$   r*   cryptography.hazmat.backendsr   cryptography.hazmat.primitivesr   )cryptography.hazmat.primitives.asymmetricr   r   dns.dnssecalgs.cryptographyr   r   dns.dnssectypesr	   dns.rdtypes.ANY.DNSKEYr
   r   rM   r\   r`   rb   rf   rh   rk   rm   rr   ru   ry   rK   r   r   <module>r      s     8 8 8 8 8 8 1 1 1 1 1 1 B B B B B B B B U U U U U U U U % % % % % % ) ) ) ) ) )%
 %
 %
 %
 %
% %
 %
 %
P
 
 
 
 
' 
 
 
:    9   
    J            I      
    Z            Y      
( ( ( ( (j ( ( (" " " " "i " " "
! ! ! ! !z ! ! !" " " " "i " " "
! ! ! ! !z ! ! ! ! !r   