U mf@sUddlmZmZmZmZmZddlZddlm Z ddl m Z ddl m Z ddlmZejdrddlmZmZdd lmZmZdd lmZmZdd lmZmZmZmZm Z d Z!nd Z!eee"ej#j$fZ%iZ&eee e%fee fe'd<e!rje&(e j)dfee j*dfee j+dfee j,dfee j-dfee j.dfee j/dfe e j0dfee j1dfee j2dfee j3dfei dee4e5fe%ee dddZ6eee dddZ7dee4e5fee eeej#j$e5fee"ddddZ8dS))DictOptionalTupleTypeUnionN)GenericPrivateKey) Algorithm)UnsupportedAlgorithm)DNSKEYZdnssec) PrivateDSAPrivateDSANSEC3SHA1)PrivateECDSAP256SHA256PrivateECDSAP384SHA384) PrivateED448PrivateED25519) PrivateRSAMD5PrivateRSASHA1PrivateRSASHA1NSEC3SHA1PrivateRSASHA256PrivateRSASHA512TF algorithms) algorithmprefixreturncCs6t|}t||f}|r |Stdt|dS)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 "%s" not supported by dnspythonN)rmakergetr Zto_text)rrclsrE/opt/hc_python/lib/python3.8/site-packages/dns/dnssecalgs/__init__.pyget_algorithm_cls.s  r)dnskeyrcCs^d}|jtjkr&tj|jd\}}n,|jtjkrRt|jd}|jd|d}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) rr PRIVATEDNSdnsnameZ from_wirekey PRIVATEOIDintr)r r_lengthrrrget_algorithm_cls_from_dnskeyBs   r*)r algorithm_clsr$oidrcCst|tstdt|}d}|tjkrV|dkr:tdt|trPt j |}|}nH|tj kr|dkrptdt t|g|}n|rtdn |rtd|t||f<dS)aRegister 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. zInvalid 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 TypeErrorrrr" ValueError isinstancestrr#r$Z from_textr&byteslenr)rr+r$r,rrrrregister_algorithm_clsTs&       r4)N)NN)9typingrrrrrZdns.namer#Zdns.dnssecalgs.baserZdns.dnssectypesrZ dns.exceptionr Zdns.rdtypes.ANY.DNSKEYr Z _featuresZhaveZdns.dnssecalgs.dsar r Zdns.dnssecalgs.ecdsar rZdns.dnssecalgs.eddsarrZdns.dnssecalgs.rsarrrrrZ_have_cryptographyr2r$NameZAlgorithmPrefixr__annotations__updateZRSAMD5ZDSAZRSASHA1Z DSANSEC3SHA1ZRSASHA1NSEC3SHA1Z RSASHA256Z RSASHA512ZECDSAP256SHA256ZECDSAP384SHA384ZED25519ZED448r'r1rr*r4rrrrsr