§
    Eqgì  ã                   óÎ   — 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dS )é    N)Údefault_backend)Úhashes)ÚdsaÚutils)ÚCryptographyPrivateKeyÚCryptographyPublicKey)Ú	Algorithm)ÚDNSKEYc                   óž   — e Zd ZU ej        ed<   ej        Zej        Z	 e
j        ¦   «         Zdededdfd„Zdefd„Zededd fd„¦   «         ZdS )	Ú	PublicDSAÚkeyÚ	signatureÚdataÚreturnNc                 óþ   — |dd…         }|dd …         }t          j        t                               |d¦  «        t                               |d¦  «        ¦  «        }| j                             ||| j        ¦  «         d S )Né   é   Úbig)r   Úencode_dss_signatureÚintÚ
from_bytesr   ÚverifyÚchosen_hash)Úselfr   r   Úsig_rÚsig_sÚsigs         úD/var/www/html/env/lib/python3.11/site-packages/dns/dnssecalgs/dsa.pyr   zPublicDSA.verify   sr   € Ø˜!˜B˜$”ˆØ˜"˜#˜#”ˆÝÔ(ÝNŠN˜5 %Ñ(Ô(­#¯.ª.¸ÀÑ*FÔ*Fñ
ô 
ˆð 	ŒŠ˜˜T 4Ô#3Ñ4Ô4Ð4Ð4Ð4ó    c                 óÔ  — | j                              ¦   «         }| j         j        dz  dz
  dz  }|dk    rt          d¦  «        ‚d|dz  z   }t	          j        d|¦  «        }||j        j                             dd¦  «        z  }||j        j	                             |d¦  «        z  }||j        j
                             |d¦  «        z  }||j                             |d¦  «        z  }|S )z,Encode a public key per RFC 2536, section 2.é   é@   zunsupported DSA key sizeú!Bé   r   )r   Úpublic_numbersÚkey_sizeÚ
ValueErrorÚstructÚpackÚparameter_numbersÚqÚto_bytesÚpÚgÚy)r   ÚpnÚdsa_tÚoctetsÚress        r   Úencode_key_byteszPublicDSA.encode_key_bytes   sã   € àŒX×$Ò$Ñ&Ô&ˆØ”Ô" aÑ'¨"Ñ,°Ñ2ˆØ1Š9ˆ9ÝÐ7Ñ8Ô8Ð8Øe˜a‘i‘ˆÝŒk˜$ Ñ&Ô&ˆØˆrÔ#Ô%×.Ò.¨r°5Ñ9Ô9Ñ9ˆØˆrÔ#Ô%×.Ò.¨v°uÑ=Ô=Ñ=ˆØˆrÔ#Ô%×.Ò.¨v°uÑ=Ô=Ñ=ˆØˆrŒt}Š}˜V UÑ+Ô+Ñ+ˆØˆ
r   c                 ó”  — |                       |¦  «         |j        }t          j        d|dd…         ¦  «        \  }|dd …         }d|dz  z   }|dd…         }|dd …         }|d|…         }||d …         }|d|…         }||d …         }|d|…         } | t	          j        t                               |d¦  «        t	          j        t                               |d¦  «        t                               |d¦  «        t                               |d¦  «        ¦  «        ¦  «         	                    t          ¦   «         ¦  «        ¬¦  «        S )	Nr#   r   r   r"   r!   r$   r   ©r   )Ú!_ensure_algorithm_key_combinationr   r(   Úunpackr   ÚDSAPublicNumbersr   r   ÚDSAParameterNumbersÚ
public_keyr   )	Úclsr   ÚkeyptrÚtr2   Údsa_qÚdsa_pÚdsa_gÚdsa_ys	            r   Úfrom_dnskeyzPublicDSA.from_dnskey(   sB  € à×-Ò-¨cÑ2Ô2Ð2Ø”ˆÝŒ}˜T 6¨!¨A¨#¤;Ñ/Ô/‰ˆØ˜˜˜”ˆØa˜!‘e‘ˆØq˜t”ˆØ˜˜˜”ˆØq˜xÔ ˆØ˜˜˜”ˆØq˜xÔ ˆØ˜˜˜”ˆØq˜xÔ ˆØˆsÝÔ$Ý—’˜u eÑ,Ô,ÝÔ'Ý—N’N 5¨%Ñ0Ô0Ý—N’N 5¨%Ñ0Ô0Ý—N’N 5¨%Ñ0Ô0ñô ñô ÷ ŠjÑ*Ô*Ñ+Ô+ð	
ñ 	
ô 	
ð 		
r   )Ú__name__Ú
__module__Ú__qualname__r   ÚDSAPublicKeyÚ__annotations__Úkey_clsr	   ÚDSAÚ	algorithmr   ÚSHA1r   Úbytesr   r4   Úclassmethodr
   rC   © r   r   r   r      s³   € € € € € € Ø	Ô	ÐÐÑØÔ€GØ”€IØ&”+‘-”-€Kð5 ð 5¨Uð 5°tð 5ð 5ð 5ð 5ð %ð ð ð ð ð ð
˜fð 
¨ð 
ð 
ð 
ñ „[ð
ð 
ð 
r   r   c            	       ót   — e Zd ZU ej        ed<   ej        ZeZ	 	 dde	de
de
de	fd„Zed	edd fd
„¦   «         ZdS )Ú
PrivateDSAr   FTr   r   Údeterministicr   c                 óþ  — | j                              ¦   «         }|j        dk    rt          d¦  «        ‚| j                              || j        j        ¦  «        }t          j        |¦  «        \  }}|j        dz  dz
  dz  }d}	t          j
        d|¦  «        t                               ||	d¬¦  «        z   t                               ||	d¬¦  «        z   }
|r(|                      ¦   «                              |
|¦  «         |
S )	z1Sign using a private key per RFC 2536, section 3.i   zDSA key size overflowr!   r"   r$   r#   r   )ÚlengthÚ	byteorder)r   r;   r&   r'   ÚsignÚ
public_clsr   r   Údecode_dss_signaturer(   r)   r   r,   r   )r   r   r   rR   Úpublic_dsa_keyÚder_signatureÚdsa_rÚdsa_sr1   r2   r   s              r   rV   zPrivateDSA.signG   sø   € ð œ×,Ò,Ñ.Ô.ˆØÔ" TÒ)Ð)ÝÐ4Ñ5Ô5Ð5ØœŸš d¨D¬OÔ,GÑHÔHˆÝÔ1°-Ñ@Ô@‰ˆˆuØÔ(¨AÑ-°Ñ2°qÑ8ˆØˆåŒK˜˜eÑ$Ô$ÝlŠl˜5¨¸5ˆlÑAÔAñBålŠl˜5¨¸5ˆlÑAÔAñBð 	ð
 ð 	6ØOŠOÑÔ×$Ò$ Y°Ñ5Ô5Ð5ØÐr   r&   c                 ó@   —  | t          j        |¬¦  «        ¬¦  «        S )N)r&   r6   )r   Úgenerate_private_key)r<   r&   s     r   ÚgeneratezPrivateDSA.generate^   s,   € àˆsÝÔ(°(Ð;Ñ;Ô;ð
ñ 
ô 
ð 	
r   N)FT)rD   rE   rF   r   ÚDSAPrivateKeyrH   rI   r   rW   rM   ÚboolrV   rN   r   r_   rO   r   r   rQ   rQ   B   s§   € € € € € € Ø	Ô	ÐÐÑØÔ€GØ€Jð
 Ø"ð	ð àðð ðð ð	ð
 
ðð ð ð ð. ð
 ð 
¨ð 
ð 
ð 
ñ „[ð
ð 
ð 
r   rQ   c                   ó   — e Zd Zej        ZdS )ÚPublicDSANSEC3SHA1N)rD   rE   rF   r	   ÚDSANSEC3SHA1rK   rO   r   r   rc   rc   e   s   € € € € € ØÔ&€I€I€Ir   rc   c                   ó   — e Zd ZeZdS )ÚPrivateDSANSEC3SHA1N)rD   rE   rF   rc   rW   rO   r   r   rf   rf   i   s   € € € € € Ø#€J€J€Jr   rf   )r(   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r   Údns.dnssecalgs.cryptographyr   r   Údns.dnssectypesr	   Údns.rdtypes.ANY.DNSKEYr
   r   rQ   rc   rf   rO   r   r   ú<module>rm      s<  ðØ €€€à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ %Ð %Ð %Ð %Ð %Ð %Ø )Ð )Ð )Ð )Ð )Ð )ð3
ð 3
ð 3
ð 3
ð 3
Ð%ñ 3
ô 3
ð 3
ðl 
ð  
ð  
ð  
ð  
Ð'ñ  
ô  
ð  
ðF'ð 'ð 'ð 'ð '˜ñ 'ô 'ð 'ð$ð $ð $ð $ð $˜*ñ $ô $ð $ð $ð $r   