
    g                     p   % S SK JrJrJrJrJr  S SKrS SKJ	r	  S SK
Jr  S SKJr  S SKJr  \R                   R#                  S5      (       a)  S SKJrJr  S S	KJrJr  S S
KJrJr  S SKJrJrJrJrJ r   Sr!OSr!\\\"\RF                  RH                  4      r%0 r&\\\\%4   \\	   4   \'S'   \!(       a  \&RQ                  \RR                  S4\\RT                  S4\\RV                  S4\\RX                  S4\\RZ                  S4\\R\                  S4\\R^                  S4\ \R`                  S4\\Rb                  S4\\Rd                  S4\\Rf                  S4\05         SS\\4\54   S\%S\\	   4S jjr6S\S\\	   4S jr7  SS\\4\54   S\\	   S\\\RF                  RH                  \54      S\\"   SS4
S jjr8g)    )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                     [         R                  " U 5      n [        R                  X45      nU(       a  U$ [	        S[         R
                  " U 5       S35      e)zGet 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      P/home/matz/Project1/venv/lib/python3.13/site-packages/dns/dnssecalgs/__init__.pyget_algorithm_clsr"   /   sQ     y)I
..),
-C



i''	233OP     dnskeyc                 X   SnU R                   [        R                  :X  a-  [        R                  R                  U R                  S5      u  pOHU R                   [        R                  :X  a*  [        U R                  S   5      nU R                  SUS-    n[        U R                   U5      $ )zGet 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   C   s     #F9///HH&&vzz15				Y11	1VZZ]#A
+V--v66r#   algorithm_clsr)   oidc                    [        U[        5      (       d  [        S5      e[        R                  " U 5      n SnU [        R
                  :X  aE  Uc  [        S5      e[        U[        5      (       a  [        R                  R                  U5      nUnO_U [        R                  :X  a'  Uc  [        S5      e[        [        U5      /5      U-   nO$U(       a  [        S5      eU(       a  [        S5      eU[        X4'   g)ap  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<   U   s    $ m%677122y)I"FI(((<FGGdC  88%%d+D	i**	*;EFFCz"S(	GHH	FGG&3J	"#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2D9J4KKL Qt$m]]D!:%~##T*,?''.0G  $')9  $')9&&-/E&&-/E%~__d#\	
$ ;?S#X(7	
(7& 7T:K5L 7* 15	$4S#X$4)*$4 5+,
-$4 
%	$4
 
$4r#   