
    ,h                     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!re&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
                  |        d      )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      Y/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/dns/dnssecalgs/__init__.pyget_algorithm_clsr"   /   sS     y)I
..)V,
-C



i''	233OP     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 )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                    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<   U   s    $ m%6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	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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#   