a }|g}H@sNdZddlZddlmZddlmZddlZddlZddlmZddlZddlm Z ddl m Z ddl m Z dd l mZdd lmZdd lmZdd lmZddlZddlZdd lmZddlmZdZGdddejZGdddejZ ej!d"ddZ"ddZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*e+d krJe,e-ej.d!de/gdS)#zTests for ocsp.pyN)datetime) timedelta)mock)x509)InvalidSignature)UnsupportedAlgorithm)default_backend)hashes)CryptographyDeprecationWarningocsp)errors)utilz;Missing = in header key=value ocsp: Use -help for summary. c@seZdZdZddZedededddZed ed ed d d ZddZ eded ddZ dS)OCSPTestOpenSSLz5 OCSP revocation tests using OpenSSL binary. c Cs~ddlm}tdT}td*}t|_d|_|jdd|_Wdn1sR0YWdn1sp0YdS)Nrr certbot.ocsp.subprocess.runcertbot.util.exe_existsTZenforce_openssl_binary_usage) certbotr rpatchoutstderr return_valueRevocationCheckerchecker)selfr mock_run mock_existsrE/usr/lib/python3.9/site-packages/certbot/_internal/tests/ocsp_test.pysetUp"s    zOCSPTestOpenSSL.setUpzcertbot.ocsp.logger.inforrcCs`t|j_d|_ddlm}|jdd}tdd|j_|jdd}d|_d|_|jdd}dS)NTrr r F)rrrrr r partition call_count)rrrmock_logr rrrr test_init*s    zOCSPTestOpenSSL.test_init#certbot.ocsp._determine_ocsp_server!certbot.ocsp.crypto_util.notAfterzcertbot.util.run_scriptcCsttj}t}d|_d|_|tdd|_ d|j _ d|_ d|j _ t t dd|_ d |_ td |_||_ d|_ |j}dS) Nxyr!ZhoursT)r+F)z http://x.cozx.coz#Unable to load certificate launcher)rnowpytzUTCr MagicMock cert_path chain_pathrrrbrokentuple openssl_happyr ZSubprocessError side_effectr#)rrZmock_namock_determiner-cert_objZ count_beforerrrtest_ocsp_revokedBs  z!OCSPTestOpenSSL.test_ocsp_revokedcCs$td}ddlm}||}dS)Nocsp_certificate.pemrr ) test_util vector_pathrr Z_determine_ocsp_server)rr1r resultrrrtest_determine_ocsp_serverbs   z*OCSPTestOpenSSL.test_determine_ocsp_serverzcertbot.ocsp.loggercCs&t|_ddlm}d|j_d|j_dS)Nrr )openssl_confusedrrr debugr#info)rrr$r rrrtest_translate_ocspis  z#OCSPTestOpenSSL.test_translate_ocspN) __name__ __module__ __qualname____doc__rrrr%r9r>rBrrrrrsrc@s\eZdZdZddZededddZdd Zd d Z d d Z ddZ ddZ dS)OSCPTestCryptographyz; OCSP revokation tests using Cryptography >= 2.4.0 cCsddlm}||_td|_td|_t |_ |j|j _|j|j _t t j}tjd|tddd|_|j||jjdS) Nrr r:ocsp_issuer_certificate.pemr'r!r*)r)rr rrr;r<r1r2rr0r8rr-r.r/rrZ mock_notAfterstartZ addCleanupstop)rr r-rrrrs          zOSCPTestCryptography.setUpr&z%certbot.ocsp._check_ocsp_cryptographycCs,d|_|j|j||j|jdddS)N)http://example.com example.comrK )rr ocsp_revokedr8Zassert_called_once_withr1r2)r mock_checkr7rrr test_ensure_cryptography_toggledsz5OSCPTestCryptography.test_ensure_cryptography_toggledcCsDttjjtjj|j|j}Wdn1s60YdS)N) _ocsp_mockocsp_libOCSPCertStatusREVOKEDOCSPResponseStatus SUCCESSFULrrNr8)rrevokedrrr test_revokes,z OSCPTestCryptography.test_revokecCsttdt}ttjjtj j p}|j |dj _ d|dj _|j|jtj|j}d|dj _ ||dj _|j|jWdn1s0YdS)NrH mock_responserload_pem_x509_certificater; load_vectorrrQrRrSrTrUrVsubjectrresponder_nameZresponder_key_hashrrNr8ZSubjectKeyIdentifierZfrom_public_keyZ public_keyZdigest)rissuermockskey_hashrrrtest_responder_is_issuers    ,z-OSCPTestCryptography.test_responder_is_issuercCsttdt}ttdt}ttjjtj j p}|j |dj _ d|dj _|j|jtj|j}d|dj _ ||dj _|j|jWdn1s0YdS)NrHocsp_responder_certificate.pemrYrZ)rr_ responderr`rarrr%test_responder_is_authorized_delegates$     , z:OSCPTestCryptography.test_responder_is_authorized_delegatec Csttjjtjjdd|j|j}Wdn1s:0Yttjjtjj |j|j}Wdn1sz0Yttjjtjj|j|j}Wdn1s0Yttjj tjjZt j dt dt jjd|j|j}Wdn1s0YWdn1s80Yttjj tjjtdd|j|j}Wdn1s0Yttjj tjjtdd|j|j}Wdn1s0Yttjj tjjtdd|j|j}Wdn1s0Yttjj tjj*}g|dj_|j|j}Wdn1sd0Yttjj tjjJ}|djjd }t jd |jd |djjd <|j|j}Wdn1s0Yttjj tjjt d `}d |_t j dt dt jjd|j|j}Wdn1sB0YWdn1sb0YWdn1s0YdS)Ni)http_status_codez4cryptography.x509.Extensions.get_extension_for_classz Not foundr6Zfoo)check_signature_side_effectrYrZfake)r_r]r&)zhttps://example.comrL)rQrRrSZUNKNOWNrUrVrrNr8Z UNAUTHORIZEDrTrrrZExtensionNotFoundZAuthorityInformationAccessOIDZOCSPrrAssertionErrorr certificatesMockr])rrWr`certZ mock_serverrrrtest_revoke_resiliencysh,,,N... .. nz+OSCPTestCryptography.test_revoke_resiliencycsxttjjtjjR}|djjfdd}tj |d}|t |dj_|j |j }Wdn1sj0YdS)NrYcsd}t|tS)NugProperties that return a naïve datetime object have been deprecated. Please switch to this_update_utc.)warningswarnr )msgvaluerr warn_first&s zAOSCPTestCryptography.test_this_update_warning..warn_firstrg)rQrRrSZGOODrUrVr this_updaterZ PropertyMocktyperrNr8)rr`rsZ property_mockrWrrqrtest_this_update_warning!s   ,z-OSCPTestCryptography.test_this_update_warningN) rCrDrErFrrrrPrXrbrermrvrrrrrGs GrGc cstd}t|||_td`}tj|d|_td(}|rH||_|||dVWdn1sj0YWdn1s0YWdn1s0YdS)Nz(certbot.ocsp.ocsp.load_der_ocsp_responsezcertbot.ocsp.requests.post)Z status_codez.certbot.ocsp.crypto_util.verify_signed_payload)rY mock_postrO)rr_construct_mock_ocsp_responserrkr6)certificate_statusresponse_statusrfrhrYrxrOrrrrQ5s   rQcCsttdt}ttdt}ttdt}t}|||t }| }t j |||j |j|j|j|gt ttjjddtddttjjddtddtjjjd S)Nr:rHrc)Ztzinfor,)Zdays) r{rz serial_numberissuer_key_hashissuer_name_hashr^rjZhash_algorithmZ next_updatertZsignature_algorithm_oid)rr[r;r\rrRZOCSPRequestBuilderZadd_certificater ZSHA1Zbuildrrkr|r}r~r]rr-r.r/replacerZoidZSignatureAlgorithmOIDZ RSA_WITH_SHA1)rzr{rlr_rdZbuilderZrequestrrrryHs2   ry)r+z /etc/letsencrypt/live/example.org/cert.pem: good This Update: Dec 17 00:00:00 2016 GMT Next Update: Dec 24 00:00:00 2016 GMT z Response Verify Failure 139903674214048:error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:ocsp_vfy.c:138:Verify error:unable to get local issuer certificate )blah.pemz^ blah.pem: good This Update: Dec 20 18:00:00 2016 GMT Next Update: Dec 27 18:00:00 2016 GMT Response verify OK)rz blah.pem: revoked This Update: Dec 20 01:00:00 2016 GMT Next Update: Dec 27 01:00:00 2016 GMT Revocation Time: Dec 20 01:46:34 2016 GMT r)rza blah.pem: unknown This Update: Dec 20 18:00:00 2016 GMT Next Update: Dec 27 18:00:00 2016 GMT r)r+Z tentaclesr)rz blah.pem: WARNING: Status times invalid. 140659132298912:error:2707307D:OCSP routines:OCSP_check_validity:status expired:ocsp_cl.c:372: good This Update: Apr 6 00:00:00 2016 GMT Next Update: Apr 13 00:00:00 2016 GMT r)rz blah.pem: WARNING: Status times invalid. 140659132298912:error:2707307D:OCSP routines:OCSP_check_validity:status expired:ocsp_cl.c:372: revoked This Update: Apr 6 00:00:00 2016 GMT Next Update: Apr 13 00:00:00 2016 GMT r__main__r,)rwN)0rF contextlibrrsysZunittestrrnZ cryptographyrZcryptography.exceptionsrrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesr Zcryptography.utilsr Zcryptography.x509r rRZpytestr.rr Z certbot.testsrr;rZTestCaserrGcontextmanagerrQryr?r5Zopenssl_revokedZopenssl_unknownZopenssl_brokenZopenssl_expired_ocspZopenssl_expired_ocsp_revokedrCexitmainargv__file__rrrrsF            e4