
    r@;j                          d dl Z d dlZd dlZd dlZd dlZd dlmZ d Z G d de j                  Z	e
dk    r e             dS dS )    N)testmainc                     	  | | S # t           j        $ rF}|j        t          j        t          j        fv r!t          j        t          |                     d }~ww xY wN)	win32apierrorwinerrorsspiconSEC_E_NO_CREDENTIALS!SEC_E_NO_AUTHENTICATING_AUTHORITYunittestSkipTeststr)funcargsexcs      bC:\Users\Administrator\AppData\Local\Temp\2\pip-target-b0z114gj\lib\python\win32/test/test_sspi.pyapplyHandlingSkipsr      sp    tT{>   <(5
 
 
 #CHH---s    AAAAc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestSSPIc                     	  ||  t          d| d          # t          j        $ r&}|                     |j        |           Y d }~d S d }~ww xY w)Nz
expecting z failure)AssertionErrorwin32securityr   assertEqualr   )selfhrr   r   r   s        r   assertRaisesHRESULTzTestSSPI.assertRaisesHRESULT   sx    	/D$KK !:b!:!:!:;;;" 	/ 	/ 	/S\2.........	/s    AA

Ac                     t          j        |t          j                              }t          j        |          }d }d}|dk    r6|                    |          \  }}|                    |          \  }}|dk    6||fS )N)	targetspn   r   )sspi
ClientAuthr   GetUserName
ServerAuth	authorize)r   pkg_name
sspiclient
sspiserver
sec_buffererrs         r   _doAuthzTestSSPI._doAuth$   s    _X9M9O9OPPP
_X..

Qhh(22:>>OC(22:>>OC Qhh :%%    c                     |                      |          \  }}|j                                         |j                                         d S r   )r*   ctxtImpersonateSecurityContextRevertSecurityContext)r   r%   r&   r'   s       r   _doTestImpersonatezTestSSPI._doTestImpersonate/   sF    !%h!7!7
J22444--/////r+   c                 0    t          | j        d           d S NKerberos)r   r0   r   s    r   testImpersonateKerberosz TestSSPI.testImpersonateKerberos5   s    42J?????r+   c                 0    |                      d           d S NNTLM)r0   r4   s    r   testImpersonateNTLMzTestSSPI.testImpersonateNTLM8   s    '''''r+   c                 p   |                      |          \  }}|j                            t          j                  }d}|d         }t          j                    }|                    t          j        t          |          t          j
                             |                    t          j        |t          j                             ||d         _        |j                            d|d           |j                            |d           |                     ||d         j                   d}|                    |          \  }	}
|                     |                    |	|
          |           |                    |          \  }	}
|                     |                    |	|
          |           d S )N    some data to be encrypted ......SecurityTrailerr   r      hello)r*   r-   QueryContextAttributesr	   SECPKG_ATTR_SIZESr   PySecBufferDescTypeappendPySecBufferTypelenSECBUFFER_DATASECBUFFER_TOKENBufferEncryptMessageDecryptMessager   encryptdecrypt)r   r%   r&   r'   pkg_size_infomsgtrailersizeencbufdata_indatasigs              r   _doTestEncryptzTestSSPI._doTestEncrypt;   s   !%h!7!7
J">>%
 
 2#$56244m3CHHg>TUUVVV)+w7NOO	
 	
 	
 q	&&q&!444&&vq111fQi.///&&w//	c++D#66@@@&&w//	c++D#66@@@@@r+   c                 L   |                      |          \  }}|j                            t          j                  }d}|d         }|d         }t          j                    }|                    t          j        |t          j	                             |                    t          j        t          |          t          j                             |                    t          j        |t          j                             ||d         _        |j                            d|d           |d         j        |d         j        z   |d         j        z   }	t          j                    }
|
                    t          j        t          |	          t          j                             |
                    t          j        dt          j                             |	|
d         _        |j                            |
d           |                     ||
d         j                   d S )Nr;   r<   	BlockSizer   r      )r*   r-   r>   r	   r?   r   r@   rA   rB   rE   rC   rD   SECBUFFER_PADDINGrF   rG   SECBUFFER_STREAMrH   r   )r   r%   r&   r'   rK   rL   rM   	blocksizerN   encmsgdecbufs              r   _doTestEncryptStreamzTestSSPI._doTestEncryptStreamU   s    "&h!7!7
J">>%
 
 2#$56!+.	244)+w7NOO	
 	
 	
 	m3CHHg>TUUVVV))W5NOO	
 	
 	
 q	&&q&!444!F1I$44vay7GG244)#f++w7OPP	
 	
 	
 	m3Aw7MNNOOO!q	&&vq111fQi./////r+   c                 0    |                      d           d S r7   )rR   r4   s    r   testEncryptNTLMzTestSSPI.testEncryptNTLMx   s    F#####r+   c                 0    |                      d           d S r7   )r[   r4   s    r   testEncryptStreamNTLMzTestSSPI.testEncryptStreamNTLM{   s    !!&)))))r+   c                 0    t          | j        d           d S r2   )r   rR   r4   s    r   testEncryptKerberoszTestSSPI.testEncryptKerberos~   s    4.
;;;;;r+   c                 0    t          | j        d           d S r2   )r   r[   r4   s    r   testEncryptStreamKerberosz"TestSSPI.testEncryptStreamKerberos   s    44jAAAAAr+   c                    |                      |          \  }}|j                            t          j                  }d}|d         }t          j                    }|                    t          j        t          |          t          j
                             |                    t          j        |t          j                             ||d         _        |j                            d|d           |j                            |d           d|_        d|_        d}|                    |          }	|                    ||	           |                    |          }	|                     t          j        |j        ||z   |	           |                    |          }	|                    ||	           |                    |          }	|                     t          j        |j        ||z   |	           d S )Nr;   MaxSignaturer   r   r=   )r*   r-   r>   r	   r?   r   r@   rA   rB   rC   rD   rE   rF   MakeSignatureVerifySignaturenext_seq_numsignverifyr   SEC_E_MESSAGE_ALTERED)
r   r%   r&   r'   rK   rL   sigsizesigbufrP   keys
             r   _doTestSignzTestSSPI._doTestSign   s   !%h!7!7
J">>%
 
 2/244m3CHHg>TUUVVVm3GW=TUUVVVq	%%a333''222"#
"#
ood##$$$$ood##  ):+<dTk3	
 	
 	

 ood##$$$$ood##  ):+<dTk3	
 	
 	
 	
 	
r+   c                 0    |                      d           d S r7   )ro   r4   s    r   testSignNTLMzTestSSPI.testSignNTLM   s         r+   c                 0    t          | j        d           d S r2   )r   ro   r4   s    r   testSignKerberoszTestSSPI.testSignKerberos   s    4+Z88888r+   c                     |                      d          \  }}|                    d          }|                    d           |                     t          j        |j        d|           d S Nr3   r=   )r*   ri   r   r	   SEC_E_OUT_OF_SEQUENCErj   )r   r&   r'   rn   s       r   _testSequenceSignzTestSSPI._testSequenceSign   sl    !%j!9!9
Jooh''!!!  ):+<h	
 	
 	
 	
 	
r+   c                 .    t          | j                   d S r   )r   rw   r4   s    r   testSequenceSignzTestSSPI.testSequenceSign   s    4122222r+   c                     |                      d          \  }}|                    d          \  }}|                    d          \  }}|                     t          j        |j        ||           d S ru   )r*   rI   r   r	   rv   rJ   )r   r&   r'   blobrn   s        r   _testSequenceEncryptzTestSSPI._testSequenceEncrypt   sw    !%j!9!9
J&&x00	c&&x00	c  ):+=tS	
 	
 	
 	
 	
r+   c                 .    t          | j                   d S r   )r   r|   r4   s    r   testSequenceEncryptzTestSSPI.testSequenceEncrypt   s    4455555r+   c                 Z   t          j                    }|                     t          |          d           t          j        dt
          j                  }|                     t          |          d           |                    |           |                     t          |          d           t          j        dt
          j                  }|                     t          |          d           |                    |           |                     t          |          d           d S )NzNPySecBufferDesc\(ulVersion: 0 \| cBuffers: 0 \| pBuffers: 0x[\da-fA-F]{8,16}\)r   zKPySecBuffer\(cbBuffer: 0 \| BufferType: 2 \| pvBuffer: 0x[\da-fA-F]{8,16}\)zNPySecBufferDesc\(ulVersion: 0 \| cBuffers: 1 \| pBuffers: 0x[\da-fA-F]{8,16}\)   zKPySecBuffer\(cbBuffer: 4 \| BufferType: 1 \| pvBuffer: 0x[\da-fA-F]{8,16}\)zNPySecBufferDesc\(ulVersion: 0 \| cBuffers: 2 \| pBuffers: 0x[\da-fA-F]{8,16}\))	r   r@   assertRegexreprrB   r	   rE   rA   rD   )r   descbuffer1buffer2s       r   testSecBufferReprzTestSSPI.testSecBufferRepr   s$   022JJ]	
 	
 	

  /73JKKMMZ	
 	
 	
 	GJJ]	
 	
 	

  /73IJJMMZ	
 	
 	
 	GJJ]	
 	
 	
 	
 	
r+   N)__name__
__module____qualname__r   r*   r0   r5   r9   rR   r[   r]   r_   ra   rc   ro   rq   rs   rw   ry   r|   r~   r    r+   r   r   r      s<       / / /	& 	& 	&0 0 0@ @ @( ( (A A A4!0 !0 !0F$ $ $* * *< < <B B B 
  
  
D! ! !9 9 9
 
 
3 3 3
 
 
6 6 6
 
 
 
 
r+   r   __main__)r   r    r	   r   r   pywin32_testutilr   r   TestCaser   r   r   r+   r   <module>r      s            % % % % % %	 	 	E
 E
 E
 E
 E
x  E
 E
 E
P zHJJJJJ r+   