Ë
    RPf·  ã                   óR  — U d dl mZmZmZmZm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                   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e"ejF                  jH                  f      Z%i Z&eeee%f   ee	   f   e'd<   e!r«e&jQ                  ejR                  dfeejT                  dfeejV                  dfeejX                  dfeejZ                  dfeej\                  dfeej^                  dfe ej`                  dfeejb                  dfeejd                  dfeejf                  dfei«       	 ddee4e5f   de%dee	   fd„Z6dedee	   fd„Z7	 	 ddee4e5f   dee	   deeejF                  jH                  e5f      dee"   ddf
d„Z8y)é    )ÚDictÚOptionalÚTupleÚTypeÚUnionN)ÚGenericPrivateKey)Ú	Algorithm)ÚUnsupportedAlgorithm)ÚDNSKEYÚdnssec)Ú
PrivateDSAÚPrivateDSANSEC3SHA1)ÚPrivateECDSAP256SHA256ÚPrivateECDSAP384SHA384)ÚPrivateED448ÚPrivateED25519)ÚPrivateRSAMD5ÚPrivateRSASHA1ÚPrivateRSASHA1NSEC3SHA1ÚPrivateRSASHA256ÚPrivateRSASHA512TFÚ
algorithmsÚ	algorithmÚprefixÚreturnc                 ó¤   — t        j                  | «      } t        j                  | |f«      }|r|S t	        dt        j
                  | «      z  «      ‚)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 "%s" not supported by dnspython)r	   Úmaker   Úgetr
   Úto_text)r   r   Úclss      úQ/var/www/fastapitest/venv/lib/python3.12/site-packages/dns/dnssecalgs/__init__.pyÚget_algorithm_clsr"   .   sM   € ô —‘˜yÓ)€IÜ
�.‰.˜) VÐ,Ó
-€CÙ
Øˆ
Ü
Ø3´i×6GÑ6GÈ	Ó6RÑRóð ó    Údnskeyc                 óV  — d}| j                   t        j                  k(  r.t        j                  j                  | j                  d«      \  }}nG| 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_dnskeyr0   B   sˆ   € ð #€FØ×Ñœ9×/Ñ/Ò/Ü—H‘H×&Ñ& v§z¡z°1Ó5‰	ˆ‘Ø	×	Ñ	œY×1Ñ1Ò	1Ü�V—Z‘Z ‘]Ó#ˆØ—‘˜A ¨¡
Ð+ˆÜ˜V×-Ñ-¨vÓ6Ð6r#   Úalgorithm_clsr)   Úoidc                 óÈ  — t        |t        «      st        d«      ‚t        j                  | «      } d}| t        j
                  k(  r?|€t        d«      ‚t        |t        «      rt        j                  j                  |«      }|}nS| t        j                  k(  r&|€t        d«      ‚t        t        |«      g«      |z   }n|rt        d«      ‚|rt        d«      ‚|t        | |f<   y)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   r1   r)   r2   r   s        r!   Úregister_algorithm_clsr<   T   sÑ   € ô$ �mÔ%6Ô7ÜÐ1Ó2Ð2Ü—‘˜yÓ)€IØ"€FØ”I×(Ñ(Ò(Øˆ<ÜÐFÓGÐGÜ�dœCÔ Ü—8‘8×%Ñ% dÓ+ˆDØ‰Ø	”i×*Ñ*Ò	*Øˆ;ÜÐEÓFÐFÜœ˜C›�zÓ" SÑ(‰Ù	ÜÐGÓHÐHÙ	ÜÐFÓGÐGØ&3„J�	˜6Ð"Ò#r#   )N)NN)9Útypingr   r   r   r   r   Údns.namer(   Ú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_cryptographyr:   r)   ÚNameÚAlgorithmPrefixr   Ú__annotations__ÚupdateÚRSAMD5ÚDSAÚRSASHA1ÚDSANSEC3SHA1ÚRSASHA1NSEC3SHA1Ú	RSASHA256Ú	RSASHA512ÚECDSAP256SHA256ÚECDSAP384SHA384ÚED25519ÚED448r-   r8   r"   r0   r<   © r#   r!   ú<module>rZ      s  ðß 5Ö 5ã Ý 1Ý %Ý .Ý )à‡=�=×Ñ�hÔßBßSßA÷õ ð ÑàÐà˜5 ¨¯©¯©Ð!5Ñ6Ñ7€àOQ€
ˆD��y /Ð1Ñ2°DÐ9JÑ4KÐKÑLÓ QÙØ×Ñà×Ñ˜tÐ$ mØ�]‰]˜DÐ! :Ø×Ñ Ð% ~Ø×#Ñ# TÐ*Ð,?Ø×'Ñ'¨Ð.Ð0GØ× Ñ  $Ð'Ð)9Ø× Ñ  $Ð'Ð)9Ø×&Ñ&¨Ð-Ð/EØ×&Ñ&¨Ð-Ð/EØ×Ñ Ð% ~Ø�_‰_˜dÐ# \ð	
ôð$ ;?ñØ�S˜#�X‰ðØ(7ðà	Ð
Ñóð(7¨&ð 7°TÐ:KÑ5Ló 7ð* 15Øñ	$4Ø�S˜#�X‰ð$4àÐ)Ñ*ð$4ð �5˜Ÿ™Ÿ™¨Ð+Ñ,Ñ
-ð$4ð 
�%‰ð	$4ð
 
ô$4r#   