U N9a0@sddlZddlZddlZddlmZddlmZddZddZdd Z d d Z d d Z ddZ ddZ ddZddZddZddZddZddZGdddeZGd d!d!eZGd"d#d#eZGd$d%d%eZGd&d'd'eZGd(d)d)eZdS)*N) Encryption) WinRMErrorc Cs6tt}tddW5QRXdt|jks2tdS)NZinvalid_protocolzCEncryption for protocol 'invalid_protocol' not supported in pywinrm)pytestraisesrrstrvalueAssertionError)excinfor C:\Users\Justin\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\winrm/tests/test_encryption.pytest_init_with_invalid_protocol s r cCstt}d}d}t|d}||||}d}d}tdt|}|jddd ksRt|jd |||d ksptdS) Nunencrypted messagesendpointntlmdW5lbmNyeXB0ZWQgbWVzc2FnZQ==1234-sz6test_encrypt_large_credssp_message..rr&credsspZ55303zomultipart/x-multi-encrypted;protocol="application/HTTP-CredSSP-session-encrypted";boundary="Encrypted Boundary"r--Encrypted Boundary Content-Type: application/HTTP-CredSSP-session-encrypted OriginalContent: type=application/soap+xml;charset=UTF-8;Length=16384 --Encrypted Boundary Content-Type: application/octet-stream r --Encrypted Boundary Content-Type: application/HTTP-CredSSP-session-encrypted OriginalContent: type=application/soap+xml;charset=UTF-8;Length=8192 --Encrypted Boundary Content-Type: application/octet-stream r) rrangerrrbase64 b64encoderrrrr)rrZmessage_chunksr r!Zexpected_encrypted_message1Zexpected_encrypted_message2Zexpected_encrypted_message3r r*r "test_encrypt_large_credssp_message)s@       r5cCs`t}d}d}tdt|}d|||d}td|}t|d}||}|dks\tdS) Nrrrrs--Encrypted Boundary 4protocol="application/HTTP-SPNEGO-session-encrypted"rr rrrr ResponseTestrparse_encrypted_responserrtest_encrypted_messagetest_signaturetest_signature_lengthr test_responser r!r r r test_decrypt_messagePs"   r?cCs`t}d}d}tdt|}d|||d}td|}t|d}||}|dks\tdS) Nrrrrrr6rr r7r:r r r .test_decrypt_message_boundary_with_end_hyphenses"   r@c Cs|t}d}d}tdt|}d|||d}td|}t|d}tt}| |W5QRXdt |j ksxt dS) Nrrrs--Encrypted Boundary Content-Type: application/HTTP-SPNEGO-session-encrypted OriginalContent: type=application/soap+xml;charset=UTF-8;Length=20 --Encrypted Boundary Content-Type: application/octet-stream rr6rz]Encrypted length from server does not match the expected size, message has been tampered with) rrrrr8rrrrr9rrr)rr;r<r=rr>r r r r r $test_decrypt_message_length_mismatchzs$   rAc st}ddfddtdtdD}t|d}t|d}t|d}d td d |d td d |d td d |d}td|}t|d}| |}|kst dS)Nr#r$csg|]}||dqSr%r r'Ztest_unencrypted_messager r r+sz6test_decrypt_large_credssp_message..rr&r-r.r/riCr1i rz5protocol="application/HTTP-CredSSP-session-encrypted"r,) rr2rr3r4rrr8rr9r) rZtest_encrypted_message_chunksZtest_encrypted_message1Ztest_encrypted_message2Ztest_encrypted_message3rr>r r!r rBr "test_decrypt_large_credssp_messages:        rCcCs4t}tdd}t|d}||}|dks0tdS)Nzapplication/soap+xmlzunencrypted messager)rr8rr9r)rr>r r!r r r *test_decrypt_message_decryption_not_neededs    rDcCs0t}t|d}d}|dd}||ks,tdS)Nr,zECDHE-RSA-AES128-GCM-SHA256rrZ_get_credssp_trailer_lengthrrr expectedr!r r r #test_get_credssp_trailer_length_gcms   rJcCs0t}t|d}d}|dd}||ks,tdS)Nr,rErFzRC4-MD5rGrHr r r 'test_get_credssp_trailer_length_md5_rc4s   rKcCs0t}t|d}d}|dd}||ks,tdS)Nr,"rFzECDH-ECDSA-3DES-SHA256rGrHr r r +test_get_credssp_trailer_length_sha256_3dess   rMcCs0t}t|d}d}|dd}||ks,tdS)Nr,2rFzECDH-RSA-AES-SHA384rGrHr r r *test_get_credssp_trailer_length_sha384_aess   rOcCs0t}t|d}d}|dd}||ks,tdS)Nr,r.rFz ECDH-RSA-AESrGrHr r r 'test_get_credssp_trailer_length_no_hashs   rPc@seZdZddZddZdS)rcCs t|_dSN)AuthTestauthselfr r r __init__szSessionTest.__init__cCs |j|_|SrQ)datar)rUrequestr r r prepare_requestszSessionTest.prepare_requestN)__name__ __module__ __qualname__rVrYr r r r rsrc@s$eZdZddZddZddZdS)CredSSPContextcCs$Gdddt}||_t|_dS)Nc@seZdZddZdS)z+CredSSPContext.__init__..TlsContextcSsdS)NzECDH-RSA-AES256-SHAr rTr r r get_cipher_namesz;CredSSPContext.__init__..TlsContext.get_cipher_nameN)rZr[r\r^r r r r TlsContextsr_)objectZtls_connectionSessionSecurityTestsession_security)rUr_r r r rVszCredSSPContext.__init__cCs|j|\}}|SrQ)rbwraprUmessageZencoded_message signaturer r r rcszCredSSPContext.wrapcCs|j|d}|SNr)rbunwrap)rUreZdecoded_mesager r r rhszCredSSPContext.unwrapN)rZr[r\rVrcrhr r r r r]sr]c@seZdZddZdS)rRcCst|_dti|_dS)Nz testhost.com)rarbr]ZcontextsrTr r r rVszAuthTest.__init__NrZr[r\rVr r r r rR srRc@seZdZddZddZdS)racCst|}d}||fSrg)r3r4rdr r r rcs zSessionSecurityTest.wrapcCs|dks tt|}|Srg)rr3 b64decode)rUrerfZdecoded_messager r r rhs  zSessionSecurityTest.unwrapN)rZr[r\rcrhr r r r rasrac@seZdZddZdS) RequestTestcCs d|_dS)Nzhttp://testhost.com/path)urlrTr r r rV%szRequestTest.__init__Nrir r r r rk$srkc@seZdZddZdS)r8cCs"d|i|_||_||_t|_dS)Nr)rcontenttextrkrX)rU content_typermr r r rV*s zResponseTest.__init__Nrir r r r r8)sr8)r3rrZwinrm.encryptionrZwinrm.exceptionsrr r"r5r?r@rArCrDrJrKrMrOrPr`rr]rRrarkr8r r r r s.  ''