
     h                         d dl m Z  d dlmZ d dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d	d
lmZ d	dlmZmZ ddlmZ ddlmZ dgZ G d de          ZdS )    )datetime)OptionalN)algoscmscorekeystspx509)hashesserialization)PKCS1v15)RSAPrivateKey)CertificateStore   )general)get_pyca_cryptography_hashsimple_cms_attribute   )TimeStamper)	get_nonceDummyTimeStamperc            
            e Zd ZdZ	 	 	 	 ddej        dej        dee	         dee
         f fdZd	ej        d
ej        fdZd	ej        d
ej        fdZ xZS )r   z
    Timestamper that acts as its own TSA. It accepts all requests and
    signs them using the certificate provided.
    Used for testing purposes.
    NTtsa_certtsa_keycerts_to_embedfixed_dtc                     || _         || _        t          |pd          | _        || _        || _        t                                          |           d S )N )include_nonce)r   r   listr   r   override_mdsuper__init__)selfr   r   r   r   r   r!   	__class__s          `/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko/sign/timestamps/dummy_client.pyr#   zDummyTimeStamper.__init__   sX     !">#7R88 &}55555    reqreturnc                    t          j        dt          j        d          i          }|d         }| j        }||d         d         j        }t          j        d|i          }| j        p%t          j	        t          j                              }dt          j        d          |t                      |t          j        d	| j        j        
          d}|d         j        |d         |d<   t          j        |          }|                                }	t)          |          }
t+          j        |
          }|                    |	           |                                }t3          j        t7          dd          t7          dt3          j        dt;          j        |          i                    t7          dt?          j         | j                            t7          d|          g          }tC          j"        | j#                                        d           }tI          |tJ                    stM          d          |'                    |                                tQ                      t)          |)                                                    }t3          j*        dt3          j+        dt3          j,        | j        j-        | j        j.        d          i          |t          j/        ddi          ||d          }ta          | j1                  }|2                    | j                   dt3          j3        |f          t3          j4        t3          j5        d          t3          j6        |	          d          ||gd}t3          j7        t3          j5        d          t3          j8        |          d          }t          j9        ||d          S )Nstatusgrantedmessage_imprinthash_algorithm	algorithm)tzv1z1.3.6.1.4.1.4146.2.2directory_name)namevalue)versionpolicyr-   serial_numbergen_timetsanoncecontent_typetst_infosigning_timeutc_timesigning_certificatemessage_digest)passwordzDummy timestamper is RSA-only.issuer_and_serial_number)issuerr7   rsassa_pkcs1v15)r5   siddigest_algorithmsignature_algorithmsigned_attrs	signaturev3)r;   content)r5   digest_algorithmsencap_content_infocertificatessigner_infossigned_data)r+   time_stamp_token):r	   PKIStatusInfo	PKIStatusr!   nativer   DigestAlgorithmr   r   nowtzlocalget_localzoneObjectIdentifierr   r
   GeneralNamer   subjectTSTInfodumpr   r   Hashupdatefinalizer   CMSAttributesr   Timer   UTCTimer   as_signing_certificater   load_der_private_keyr   
isinstancer   NotImplementedErrorsignr   upper
SignerInfoSignerIdentifierIssuerAndSerialNumberrC   r7   SignedDigestAlgorithmsetr   addDigestAlgorithmsEncapsulatedContentInfoContentTypeParsableOctetStringContentInfo
SignedDataTimeStampResp)r$   r(   r+   r-   md_algorithmdigest_algorithm_objdttst_info_argsr<   tst_info_datamd_specmdmessage_digest_valuerH   priv_keyrI   sig_infocertsrP   tsts                       r&   request_tsa_responsez%DummyTimeStamper.request_tsa_response*   s    "HcmI.F.F#GHH.12C.D'*+;<[IPL$4,' 
  
 ]Fhlg.C.E.EFFF *+ABB.&[[#%T]-B  
 
 w<*%(\M'";}-- ,\::[!!
		-   !{{}}($^Z@@$"CHj$,r:J:J-K$L$L  %)24=AA  %%57KLL

 
 !5L$
 
 
 (M22 	H%&FGGGMMJJ&|'9'9';';<<
 
	
 >+2C4M*.-*>151L 5 5	 	 %9','B "34( ( !-&# 
 
* D'((		$-    !$!57K6M!N!N"%"=$'OJ$?$?"6}EE # # "%J
 
 o # > >>+66 
 
  F!L!LMMMr'   c                 0   K   |                      |          S )N)r   )r$   r(   s     r&   async_request_tsa_responsez+DummyTimeStamper.async_request_tsa_response   s       ((---r'   )NNTN)__name__
__module____qualname____doc__r
   Certificater   PrivateKeyInfor   r   r   r#   r	   TimeStampReqrv   r   r   __classcell__)r%   s   @r&   r   r      s          6:'+6 6"6 $6 !!12	6
 8$6 6 6 6 6 6 fN(8 fNS=N fN fN fN fNP.#.		. . . . . . . .r'   )r   typingr   rW   
asn1cryptor   r   r   r   r	   r
   cryptography.hazmat.primitivesr   r   1cryptography.hazmat.primitives.asymmetric.paddingr   -cryptography.hazmat.primitives.asymmetric.rsar   pyhanko_certvalidator.registryr    r   r   r   apir   common_utilsr   __all__r   r   r'   r&   <module>r      sD                8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 @ @ @ @ @ @ @ @ F F F F F F G G G G G G ; ; ; ; ; ;       F F F F F F F F       # # # # # #
C. C. C. C. C.{ C. C. C. C. C.r'   