
    Eqg                        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                            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j#        j$        f                  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j0        dfeej1        dfeej2        dfeej3        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j#        j$        e5f                  dee"         ddf
dZ8dS )    )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                              | |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      I/var/www/html/env/lib/python3.11/site-packages/dns/dnssecalgs/__init__.pyget_algorithm_clsr"   /   sa     y))I
..)V,
-
-C
 

Pi'	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 )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///H&&vz155			Y1	1	1VZ]##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   r1   r)   r2   r   s        r!   register_algorithm_clsr<   U   s   $ m%677 31222y))I"FI(((<FGGGdC   	,8%%d++D	i*	*	*;EFFFCz""S(	 HGHHH	 HFG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 5 5 5 5 5 5 5 5 5 5 5 5 5  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              5!567OQ
Dy/12D9J4KKL Q Q Q t$m]D!:%~#T*,?'.0G $')9 $')9&-/E&-/E%~_d#\	
  $ ;? S#X(7	
   (7& 7T:K5L 7 7 7 7* 15	$4 $4S#X$4)*$4 5+,
-$4 
%	$4
 
$4 $4 $4 $4 $4 $4r#   