
    %
i+                     ,   d dl Z d dlZd dlmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZ  G d dej                  ZdZd	Ze j        d
ededee         fd            Z G d dej                  Zedk    r e	             dS dS )    N)Iterator)Any)find_test_fixturetestmain)CERT_QUERY_CONTENT_CERTCERT_QUERY_CONTENT_FLAG_CERT CERT_QUERY_FORMAT_BASE64_ENCODEDCERT_QUERY_FORMAT_BINARYCERT_QUERY_FORMAT_FLAG_ALLCERT_QUERY_OBJECT_BLOBCERT_QUERY_OBJECT_FILECERT_STORE_ADD_REPLACE_EXISTINGCERT_STORE_PROV_SYSTEMCERT_SYSTEM_STORE_CURRENT_USERCERT_SYSTEM_STORE_LOCAL_MACHINEc                       e Zd Zd Zd ZdS )Cryptc                     d}d }d}d}d }t          j        |||d ||          }t          j        ||d ||          \  }}|                     ||           |                     ||           d S )N   My test dataMy descriptionr   
win32cryptCryptProtectDataCryptUnprotectDataassertEqual	selfdataentropydescflagspsblobgot_descgot_datas	            C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32/test/test_win32crypt.py
testSimplezCrypt.testSimple   s    *4wb%PP':'4U
 
( 	x(((x(((((    c                     d}d}d}d}d }t          j        |||d ||          }t          j        ||d ||          \  }}|                     ||           |                     ||           d S )Nr   s   My test entropyr   r   r   r   s	            r&   testEntropyzCrypt.testEntropy'   s    $*4wb%PP':'4U
 
( 	x(((x(((((r(   N)__name__
__module____qualname__r'   r*    r(   r&   r   r      s2        ) ) )) ) ) ) )r(   r   LocalMachineCurrentUser
store_namestore_locationreturnc              #      K   d}	 t          j        t          dd|t          k    rt          nt
          |           }|V  ||                                 dS dS # ||                                 w w xY w)zOpen a windows certificate store

    :param store_name: store name
    :param store_location: store location
    :return: handle to cert store
    Nr   )r   CertOpenStorer   _LOCAL_MACHINEr   r   CertCloseStore)r1   r2   handles      r&   open_windows_certstorer9   :   s       F$)" "^33 0/3

 

 !!##### 6!!#### s   8A A1c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestCertsc                     t          t          |          d          5 }t          |                                          }t	          j        t          |t          t          d          cd d d            S # 1 swxY w Y   d S )Nrbr   )	openr   	bytearrayreadr   CryptQueryObjectr   r   r   )r   	file_namefbufs       r&   readCertFilezTestCerts.readCertFileV   s    #I..55 	AFFHH%%C.&,* 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA33A7:A7c                     d}t          j        t          t          |          t          t
          d          }|                     |d         t                     |                     |d         t                     d S )Nwin32crypt_testcert_base64.cerr   
FormatTypeContentType)	r   rA   r   r   r   r   r   r	   r   )r   filenamecerts      r&   testReadCertFileszTestCerts.testReadCertFilesa   sr     4*"h''(&
 
 	l+-MNNNm,.EFFFFFr(   c                    |                      |          }|                     |d         |           |                     |d         t                     t          t          d          5 }|                    |d         t                    }|                     t          |	                                                     | 
                    t          |                                                     |                                 	 |                                 t          d          # t          $ r Y nw xY w	 d d d            d S # 1 swxY w Y   d S )NrH   rI   TempContextz-should not be able to close the context twice)rE   r   r   r9   _CURRENT_USER CertAddCertificateContextToStorer   
assertTruelenCertEnumCertificatesInStoreassertFalseCertEnumCTLsInStoreCertFreeCertificateContextAssertionError
ValueError)r   rJ   expected_formatrK   storecontexts         r&   checkCertFilezTestCerts.checkCertFiler   s     **l+_===m,.EFFF#M6:: 	Ve<<Y!@ G OOC A A C CDDEEES!:!:!<!<==>>>..000V22444 %%TUUU    	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs7   (BED*E*
D74E6D77EEEc                 <    |                      dt                     d S )NrG   )r]   r	   r   s    r&   testCertBase64zTestCerts.testCertBase64   s*    ,.N	
 	
 	
 	
 	
r(   c                 <    |                      dt                     d S )Nzwin32crypt_testcert_bin.cer)r]   r
   r_   s    r&   testCertBinaryzTestCerts.testCertBinary   s     8:RSSSSSr(   N)r+   r,   r-   rE   rL   r]   r`   rb   r.   r(   r&   r;   r;   U   sj        	 	 	G G G"V V V(
 
 

T T T T Tr(   r;   __main__)
contextlibunittestcollections.abcr   typingr   r   pywin32_testutilr   r   win32cryptconr   r   r	   r
   r   r   r   r   r   r   r   TestCaser   r6   rP   contextmanagerstrr9   r;   r+   r.   r(   r&   <module>rm      s        $ $ $ $ $ $           8 8 8 8 8 8 8 8                         ) ) ) ) )H ) ) ):   $s $C $HSM $ $ $ $47T 7T 7T 7T 7T! 7T 7T 7Tt zHJJJJJ r(   