§
    Hºiþ  ã                   óØ  — U d dl mZmZmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ ej                             d¦  «        r)d dlmZmZ d d	lmZmZ d d
lmZmZ d dlmZmZmZmZmZ dZ ndZ e!ej"        j#        z  dz  Z$i Z%eee
e$f         ee         f         e&d<   e rxe% '                    e
j(        dfee
j)        dfee
j*        dfee
j+        dfee
j,        dfee
j-        dfee
j.        dfee
j/        dfee
j0        dfee
j1        dfee
j2        dfei¦  «         	 dde3e4z  de$dee         fd„Z5dedee         fd„Z6	 	 dde3e4z  dee         dej"        j#        e4z  dz  de!dz  ddf
d„Z7dS )é    )ÚDictÚTupleÚTypeN)ÚGenericPrivateKey)Ú	Algorithm)ÚUnsupportedAlgorithm)ÚDNSKEYÚdnssec)Ú
PrivateDSAÚPrivateDSANSEC3SHA1)ÚPrivateECDSAP256SHA256ÚPrivateECDSAP384SHA384)ÚPrivateED448ÚPrivateED25519)ÚPrivateRSAMD5ÚPrivateRSASHA1ÚPrivateRSASHA1NSEC3SHA1ÚPrivateRSASHA256ÚPrivateRSASHA512TFÚ
algorithmsÚ	algorithmÚprefixÚreturnc                 ó´   — t          j        | ¦  «        } t                               | |f¦  «        }|r|S t	          dt          j        | ¦  «        › d�¦  «        ‚)zèGet Private Key class from Algorithm.

    *algorithm*, a ``str`` or ``int`` specifying the DNSKEY algorithm.

    Raises ``UnsupportedAlgorithm`` if the algorithm is unknown.

    Returns a ``dns.dnssecalgs.GenericPrivateKey``
    zalgorithm "z" not supported by dnspython)r   Úmaker   Úgetr   Úto_text)r   r   Úclss      ú\/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/dnssecalgs/__init__.pyÚget_algorithm_clsr    2   sa   € õ ”˜yÑ)Ô)€IÝ
�.Š.˜) VÐ,Ñ
-Ô
-€CØ
ð Øˆ
Ý
ØP•iÔ'¨	Ñ2Ô2ÐPÐPÐPñô ð ó    Údnskeyc                 ó.  — d}| j         t          j        k    r)t          j                             | j        d¦  «        \  }}nA| j         t          j        k    r,t          | j        d         ¦  «        }| j        d|dz   …         }t          | j         |¦  «        S )zÕGet Private Key class from DNSKEY.

    *dnskey*, a ``DNSKEY`` to get Algorithm class for.

    Raises ``UnsupportedAlgorithm`` if the algorithm is unknown.

    Returns a ``dns.dnssecalgs.GenericPrivateKey``
    Nr   é   )
r   r   Ú
PRIVATEDNSÚdnsÚnameÚ	from_wireÚkeyÚ
PRIVATEOIDÚintr    )r"   r   Ú_Úlengths       r   Úget_algorithm_cls_from_dnskeyr.   F   s„   € ð #€FØÔ�9Ô/Ò/Ð/Ý”H×&Ò& v¤z°1Ñ5Ô5‰	ˆ��Ø	Ô	�YÔ1Ò	1Ð	1Ý�V”Z ”]Ñ#Ô#ˆØ”˜A ¨¡
˜NÔ+ˆÝ˜VÔ-¨vÑ6Ô6Ð6r!   Úalgorithm_clsr'   Úoidc                 ó
  — t          |t          ¦  «        st          d¦  «        ‚t          j        | ¦  «        } d}| t          j        k    rH|€t          d¦  «        ‚t          |t          ¦  «        rt          j
                             |¦  «        }|}nd| t          j        k    r2|€t          d¦  «        ‚t          t          |¦  «        g¦  «        |z   }n"|rt          d¦  «        ‚|rt          d¦  «        ‚|t          | |f<   dS )aˆ  Register Algorithm Private Key class.

    *algorithm*, a ``str`` or ``int`` specifying the DNSKEY algorithm.

    *algorithm_cls*: A `GenericPrivateKey` class.

    *name*, an optional ``dns.name.Name`` or ``str``, for for PRIVATEDNS algorithms.

    *oid*: an optional BER-encoded `bytes` for PRIVATEOID algorithms.

    Raises ``ValueError`` if a name or oid is specified incorrectly.
    zInvalid algorithm classNz'Name required for PRIVATEDNS algorithmsz&OID required for PRIVATEOID algorithmsz,Name only supported for PRIVATEDNS algorithmz+OID only supported for PRIVATEOID algorithm)Ú
issubclassr   Ú	TypeErrorr   r   r%   Ú
ValueErrorÚ
isinstanceÚstrr&   r'   Ú	from_textr*   ÚbytesÚlenr   )r   r/   r'   r0   r   s        r   Úregister_algorithm_clsr:   X   s  € õ$ �mÕ%6Ñ7Ô7ð 3ÝÐ1Ñ2Ô2Ð2Ý”˜yÑ)Ô)€IØ"€FØ•IÔ(Ò(Ð(Øˆ<ÝÐFÑGÔGÐGÝ�d�CÑ Ô ð 	,Ý”8×%Ò% dÑ+Ô+ˆDØˆˆØ	•iÔ*Ò	*Ð	*Øˆ;ÝÐEÑFÔFÐFÝ�˜C™œ�zÑ"Ô" SÑ(ˆˆØ	ð HÝÐGÑHÔHÐHØ	ð HÝÐFÑGÔGÐGØ&3…J�	˜6Ð"Ñ#Ð#Ð#r!   )N)NN)8Útypingr   r   r   Údns._featuresr&   Údns.nameÚdns.dnssecalgs.baser   Údns.dnssectypesr   Údns.exceptionr   Údns.rdtypes.ANY.DNSKEYr	   Ú	_featuresÚhaveÚdns.dnssecalgs.dsar   r   Údns.dnssecalgs.ecdsar   r   Údns.dnssecalgs.eddsar   r   Údns.dnssecalgs.rsar   r   r   r   r   Ú_have_cryptographyr8   r'   ÚNameÚAlgorithmPrefixr   Ú__annotations__ÚupdateÚRSAMD5ÚDSAÚRSASHA1ÚDSANSEC3SHA1ÚRSASHA1NSEC3SHA1Ú	RSASHA256Ú	RSASHA512ÚECDSAP256SHA256ÚECDSAP384SHA384ÚED25519ÚED448r+   r6   r    r.   r:   © r!   r   ú<module>rY      s  ðØ $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ø €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %Ø .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )ð „=×Ò�hÑÔð ØBÐBÐBÐBÐBÐBÐBÐBØSÐSÐSÐSÐSÐSÐSÐSØAÐAÐAÐAÐAÐAÐAÐAðð ð ð ð ð ð ð ð ð ð ð ð ð ð ÐÐàÐà˜#œ(œ-Ñ'¨$Ñ.€àOQ€
ˆD��y /Ð1Ô2°DÐ9JÔ4KÐKÔLÐ QÐ QÑ QØð à×ÒàÔ˜tÐ$ mØŒ]˜DÐ! :ØÔ Ð% ~ØÔ# TÐ*Ð,?ØÔ'¨Ð.Ð0GØÔ  $Ð'Ð)9ØÔ  $Ð'Ð)9ØÔ&¨Ð-Ð/EØÔ&¨Ð-Ð/EØÔ Ð% ~ØŒ_˜dÐ# \ð	
ñô ð ð$ 59ðð Ø�S‰yðØ"1ðà	Ð
Ôðð ð ð ð(7¨&ð 7°TÐ:KÔ5Lð 7ð 7ð 7ð 7ð* (,Øð	$4ð $4Ø�S‰yð$4àÐ)Ô*ð$4ð Œ(Œ-˜#Ñ
 Ñ
$ð$4ð 
�‰ð	$4ð
 
ð$4ð $4ð $4ð $4ð $4ð $4r!   