
    h                     `   % S SK JrJrJr  S SK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 \!\RD                  RF                  -  S-  r$0 r%\\\
\$4   \\   4   \&S'   \ (       a  \%RO                  \
RP                  S4\\
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\05         SS\3\4-  S\$S\\   4S jjr5S\S\\   4S jr6  SS\3\4-  S\\   S\RD                  RF                  \4-  S-  S\!S-  SS4
S jjr7g)    )DictTupleTypeN)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      lC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\dns/dnssecalgs/__init__.pyget_algorithm_clsr    2   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_dnskeyr.   F   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   r/   r'   r0   r   s        r   register_algorithm_clsr:   X   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)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 % . ) ==hBSA  #((--'$.OQ
Dy/12D9J4KKL Qt$m]]D!:%~##T*,?''.0G  $')9  $')9&&-/E&&-/E%~__d#\	
$ 59Sy"1	
(7& 7T:K5L 7* (,	$4Sy$4)*$4 ((--#

$$4 
	$4
 
$4r!   