PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
a !cu-@sddlmZddlmZddlmZddlmZddlZddlZddlZddl Z ddl m Z ddl Z ddlZ edZdZGd d d e jjZdd d ZGdddeZGdddZGdddZGdddZddZddZGdddZdS))print_function)absolute_import)unicode_literals)EnumN_dnf=c@seZdZdZddZdS) DnssecErrorz- Exception used in the dnssec module cCsd|jdur|jndS)Nzz Not specified)formatvalueselfr./usr/lib/python3.9/site-packages/dnf/dnssec.py__repr__-szDnssecError.__repr__N)__name__ __module__ __qualname____doc__rrrrrr )sr _openpgpkeycCs|dd}t|dkr$d}t||d}|d}t}||dt| dd d }|d|d|S) z Implements RFC 7929, section 3 https://tools.ietf.org/html/rfc7929#section-3 :param email_address: :param tag: :return: @z0Email address must contain exactly one '@' sign.rzutf-8.) rsplitlenr hashlibZsha256updateencodebase64Z b16encodedigestdecodelower)Z email_addresstagsplitmsglocaldomainhashr"rrremail2location2s  r+c@s(eZdZdZdZdZdZdZdZdZ dS) Validityz Output of the verification algorithm. TODO: this type might be simplified in order to less reflect the underlying DNS layer. TODO: more specifically the variants from 3 to 5 should have more understandable names rr N) rrrrVALIDREVOKEDPROVEN_NONEXISTENCERESULT_NOT_SECURE BOGUS_RESULTERRORrrrrr,Jsr,c@seZdZdZdS)NoKeyz This class represents an absence of a key in the cache. It is an expression of non-existence using the Python's type system. N)rrrrrrrrr7Xsr7c@s.eZdZdZd ddZddZeddZdS) KeyInfozv Wrapper class for email and associated verification key, where both are represented in form of a string. NcCs||_||_dS)N)emailkey)rr9r:rrr__init__eszKeyInfo.__init__cCsd|j|jdddS)NzKeyInfo("{}", "{}...")ascii)r r9r:r#r rrrriszKeyInfo.__repr__c Cstd|}|durt|d}|dd}d}d}tdt|D]$}||dkr\|}||dkrH|}qHd ||d |d d}t ||S) z Since dnf uses different format of the key than the one used in DNS RR, I need to convert the former one into the new one. <(.*@.*)>Nrr< rz$-----BEGIN PGP PUBLIC KEY BLOCK-----z"-----END PGP PUBLIC KEY BLOCK-----r) researchr groupr#r&rangerjoinr r8) ZuseridZraw_keyZ input_emailr9r:startstopiZcat_keyrrrfrom_rpm_key_objectls     zKeyInfo.from_rpm_key_object)NN)rrrrr;r staticmethodrIrrrrr8`s  r8c@s8eZdZdZiZeddZeddZeddZdS) DNSSECKeyVerificationz The main class when it comes to verification itself. It wraps Unbound context and a cache with already obtained results. cCsZ||krtdtjS|tur0tdtjStd|td|tjSdS)zD Compare the key in case it was found in the cache. zCache hit, valid keyzCache hit, proven non-existencezKey in cache: {}Input key : {}N)loggerdebugr,r1r7r3r r2) key_unionZinput_key_stringrrr _cache_hits  z DNSSECKeyVerification._cache_hitc Csz ddl}Wn>tyJ}z&td|}tj|WYd}~n d}~00|}|dddkrnt d|dddkrt d | dkrt d | d dkrt d | t|jt|j\}}|dkrt d tjS|jrt d|jtjS|js t dtjS|js>|j|jkrN|jsNt dtjS|jsnt d|jtjS|j d}t!"|}||j#krtj$St d|t d|j#tj%SdS)zz In case the key was not found in the cache, create an Unbound context and contact the DNS system rNzLConfiguration option 'gpgkey_dns_verification' requires python3-unbound ({})z verbosity:0z(Unbound context: Failed to set verbosityzqname-minimisation:Zyesz1Unbound context: Failed to set qname minimisationz+Unbound context: Failed to read resolv.confz/var/lib/unbound/root.keyz0Unbound context: Failed to add trust anchor filez%Communication with DNS servers failedz DNSSEC signatures are wrong ({})z!Result is not secured with DNSSECz1Non-existence of this record was proven by DNSSECz&Unknown error in DNS communication: {}zKey from DNS: {}rL)&unbound ImportErrorrr r exceptionsErrorZub_ctxZ set_optionrMrNZ resolvconfZ add_ta_fileresolver+r9RR_TYPE_OPENPGPKEYZ RR_CLASS_INr,r6ZbogusZ why_bogusr5Zsecurer4ZnxdomainZrcodeZ RCODE_NOERRORZhavedatar3Z rcode_strdataZ as_raw_datar!Z b64encoder:r1r2) input_keyrRer'ctxstatusresultrXZ dns_data_b64rrr _cache_misssR "           z!DNSSECKeyVerification._cache_misscCsztd|jtj|j}|dur6t||jSt |}|t j krZ|jtj|j<n|t j krrt tj|j<|SdS)zI Public API. Use this method to verify a KeyInfo object. z(Running verification for key with id: {}N)rMrNr r9rK_cachegetrPr:r^r,r1r3r7)rYrOr]rrrverifys   zDNSSECKeyVerification.verifyN) rrrrr_rJrPr^rarrrrrKs  9rKcCs8td|jd}|tjkr(|tdS|tdSdS)zE Inform the user about key validity in a human readable way. zDNSSEC extension: Key for user  z is valid.zhas unknown status.N)rr9r,r1)Zkivprefixrrr nice_user_msgs  recCs td|S)z; Label any given message with DNSSEC extension tag zDNSSEC extension: r)mrrrany_msgsrgc@s(eZdZdZeddZeddZdS)RpmImportedKeysaQ Wrapper around keys, that are imported in the RPM database. The keys are stored in packages with name gpg-pubkey, where the version and release is different for each of them. The key content itself is stored as an ASCII armored string in the package description, so it needs to be parsed before it can be used. c Cstjj}|dd}g}|D]d}tj|d}td|d}tj|d}| ddd }d |}|t || d g7}q |S) Nnamez gpg-pubkeypackagerr>r descriptionr?r-r@r<) rZrpmZ transactionZTransactionWrapperZdbMatchZ getheaderrArBrCr&rEr8r ) Ztransaction_setZpackagesZ return_listpkgrjr9rkZ key_linesZkey_strrrr_query_db_for_gpg_keys s   z&RpmImportedKeys._query_db_for_gpg_keysc Cst}tttd|D]}zt|}WnFtyv}z.t d |j |j WYd}~qWYd}~n d}~00|t jkrttd |j q|t jkrttd |j q|t jkrttd |j q|t jkrttd |j qttd |j qdS)Nz1Testing already imported keys for their validity.z%DNSSEC extension error (email={}): {}zGPG Key {} is validz,GPG Key {} does not support DNS verificationzGPG Key {} could not be verified, because DNSSEC signatures are bogus. Possible causes: wrong configuration of the DNS server, MITM attackz=GPG Key {} has been revoked and should be removed immediatelyzGPG Key {} could not be tested)rhrnrMinforgrrKrar Zwarningr r9r r,r1rNr3r5r2)keysr:r]rZrrrcheck_imported_keys_validitys4"          z,RpmImportedKeys.check_imported_keys_validityN)rrrrrJrnrqrrrrrhs  rh)r)Z __future__rrrenumrr!rZloggingrAZdnf.i18nrZdnf.rpmrZdnf.exceptionsZ getLoggerrMrWrTrUr r+r,r7r8rKrergrhrrrrs*       &h