a Me @s$ddlZddlZddlmZddlmZddlmZmZddl m Z m Z ddl m Z ddlmZGdd d e ZGd d d e ZGd d d eZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZdS) N)default_backend)hashes)paddingrsa)CryptographyPrivateKeyCryptographyPublicKey) Algorithm)DNSKEYc@sdeZdZUejed<ejZeed<ej ed<e e ddddZ e dd d Z e edd d d ZdS) PublicRSAkey algorithm chosen_hashN) signaturedatareturncCs|j||t|jdS)N)r verifyrPKCS1v15r )selfrrr6/usr/lib/python3.9/site-packages/dns/dnssecalgs/rsa.pyrszPublicRSA.verify)rcCs|j}tt|jd}tj|j|dd}|dkrLdt d|}n t d|}|j dkst|j d kr|t d |||j |j d ddS) z,Encode a public key per RFC 3110, section 2.big)length byteorder!H!Biizunsupported RSA key length) r Zpublic_numbersmathZceilint bit_lengtheto_bytesstructpackn ValueError)rZpnZ_exp_lenZexpZ exp_headerrrrencode_key_bytess  zPublicRSA.encode_key_bytes)r rcCs|||j}td|dd\}|dd}|dkr\td|dd\}|dd}|d|}||d}|tt|dt|dt dS)Nrrrrr ) Z!_ensure_algorithm_key_combinationr r$unpackrZRSAPublicNumbersr from_bytes public_keyr)clsr ZkeyptrZbytes_Zrsa_eZrsa_nrrr from_dnskey#s      zPublicRSA.from_dnskey)__name__ __module__ __qualname__rZ RSAPublicKey__annotations__key_clsrrZ HashAlgorithmbytesrr( classmethodr r0rrrrr s    r c@sNeZdZUejed<ejZeZdZ d e e e dddZ e edddd Zd S) PrivateRSAr iF)rrrcCs0|j|t|jj}|r,||||S)z1Sign using a private key per RFC 3110, section 3.)r signrr public_clsr r.r)rrrrrrrr9;szPrivateRSA.sign)key_sizercCs|tj|j|tddS)N)Zpublic_exponentr;Zbackendr+)rZgenerate_private_keydefault_public_exponentr)r/r;rrrgenerateBszPrivateRSA.generateN)F)r1r2r3rZ RSAPrivateKeyr4r5r r:r<r6boolr9r7r r=rrrrr85s  r8c@seZdZejZeZdS) PublicRSAMD5N) r1r2r3rZRSAMD5r rZMD5r rrrrr?Msr?c@seZdZeZdS) PrivateRSAMD5N)r1r2r3r?r:rrrrr@Rsr@c@seZdZejZeZdS) PublicRSASHA1N) r1r2r3rZRSASHA1r rSHA1r rrrrrAVsrAc@seZdZeZdS)PrivateRSASHA1N)r1r2r3rAr:rrrrrC[srCc@seZdZejZeZdS)PublicRSASHA1NSEC3SHA1N) r1r2r3rZRSASHA1NSEC3SHA1r rrBr rrrrrD_srDc@seZdZeZdS)PrivateRSASHA1NSEC3SHA1N)r1r2r3rDr:rrrrrEdsrEc@seZdZejZeZdS)PublicRSASHA256N) r1r2r3rZ RSASHA256r rZSHA256r rrrrrFhsrFc@seZdZeZdS)PrivateRSASHA256N)r1r2r3rFr:rrrrrGmsrGc@seZdZejZeZdS)PublicRSASHA512N) r1r2r3rZ RSASHA512r rZSHA512r rrrrrHqsrHc@seZdZeZdS)PrivateRSASHA512N)r1r2r3rHr:rrrrrIvsrI)rr$Zcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrZ)cryptography.hazmat.primitives.asymmetricrrZdns.dnssecalgs.cryptographyrrZdns.dnssectypesrZdns.rdtypes.ANY.DNSKEYr r r8r?r@rArCrDrErFrGrHrIrrrrs&    (