
    Wwg=                     h   d Z ddlmZmZmZ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mZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZ ddlmZmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( dgZ)ddddddZ*dddddZ+de,fdZ-de&de(fd Z.de&d!ed"ej^                  fd#Z0d$efd%Z1de&d!ed"e,fd&Z2y')(zu
ETSI TS 119 102-2 reporting functionality.

.. warning::
    This feature is incubating and subject to API changes.
    )AnyDictOptionalcast)tsp)hashes)ValidationObjectValidationObjectType)XmlDateTime)ts_11910202xades)xmldsig_core)
cades_asn1)
AdESStatus)NonexistentAttributeErrorfind_cms_attributefind_unique_cms_attributeget_pyca_cryptography_hash)AdESBasicValidationResultAdESLTAValidationResultAdESWithTimeValidationResult$derive_validation_object_binary_data#derive_validation_object_identifier)get_signing_cert_attr)EmbeddedPdfSignature)PdfSignatureStatusgenerate_reportz&http://www.w3.org/2000/09/xmldsig#sha1z'http://www.w3.org/2001/04/xmlenc#sha256z-http://www.w3.org/2001/04/xmldsig-more#sha224z-http://www.w3.org/2001/04/xmldsig-more#sha384z'http://www.w3.org/2001/04/xmlenc#sha512)sha1sha256sha224sha384sha512z!http://uri.etsi.org/19102/v1.2.1#z!http://uri.etsi.org/01903/v1.3.2#z"http://www.w3.org/2000/09/xmldsig#z http://www.w3.org/2001/XMLSchema)vrXAdESdsxsalgoc                 N    	 t         |    S # t        $ r t        d|  d      w xY w)Nz3No XML signature syntax available for digest algo '')DIGEST_ALGO_URISKeyErrorNotImplementedError)r'   s    [/var/www/horilla/myenv/lib/python3.12/site-packages/pyhanko/sign/validation/report/tools.py_digest_algo_urir.   6   s:    
%% 
!A$qI
 	

s    $embedded_sig
api_statusc           
         | j                   d   }i }| j                  xs$ |j                  r|j                  j                  nd }|r-t	        j
                  dt        j                  |            |d<   t        |      }|g }|d   D ]  }t        |t        j                        rd}n|d   d   j                  }|j                  t	        j                  t        j                   t#        |            t        j$                  |d	   j                        |d
   r|d
   j'                         nd               t	        j(                  dt+        |            |d<   	 t-        |d      }	|	d   }
t	        j.                  dd|
j0                         |d<   |j4                  rAt	        j6                  dt        j                  |j4                  j                              |d<   	 t9        |d      d   }|j:                  }t        |t<        j>                        r.|d   }
t	        j@                  dd|
j0                         }||d<   d| jB                  v r1t	        jD                  dtG        | jB                  d         f      |d<   |jH                  rM|jH                  }g }|jJ                  D ]}  }t        jL                  jN                  }|jP                  j                   ddjS                  d |jT                  D               }|j                  t	        jV                  ||              |jX                  xs d D ]}  }t        jL                  jZ                  }|jP                  j                   d!djS                  d" |jT                  D               }|j                  t	        jV                  ||              t	        j\                  dt+        |      #      |d$<   |j                  rAt	        j6                  d%t        j                  |j                  j                              |d&<   	 t-        |d'      }t	        j^                  d|j                  (      |d'<   d)| jB                  v r0t	        j`                  dtG        | jB                  d)         *      |d+<   d,| jB                  v r0t	        jb                  dtG        | jB                  d,         -      |d.<   d/| jB                  v r0t	        jd                  dtG        | jB                  d/         0      |d1<   d2| jB                  v r3t	        jf                  dtG        | jB                  d2         d3d  4      |d5<   t+        d6 | jB                  d7   D              |d8<   d9| jB                  v r2t	        jh                  tG        | jB                  d9         d3d  :      |d;<   t	        jj                  d i |S # t2        $ r Y Fw xY w# t2        $ r Y w xY w# t2        $ r Y w xY w)<Nsigned_attrsT)signedtimesigning_timecertsr   hash_algorithm	algorithm	cert_hashissuer_serial)digest_methoddigest_valuex509_issuer_serial)r3   cert_idsigning_certificatecommitment_type_indicationcommitment_type_idzurn:oid:)r3   commitment_type_identifier)r3   time_stamp_valueall_data_objects_time_stampsignature_policy_identifierr   sig_policy_id)r3   rF   sig_policy_identifierz	/Location)r3   address_stringsignature_production_placez: z; c              3   F   K   | ]  }t        |j                          y wNstrnative.0vs     r-   	<genexpr>z#_summarise_attrs.<locals>.<genexpr>   s     MqS]M   !)endorsement_typerole  c              3   F   K   | ]  }t        |j                          y wrK   rL   rO   s     r-   rR   z#_summarise_attrs.<locals>.<genexpr>   s     JqS]JrS   )r3   role_detailssigner_roleFsignature_time_stampmessage_digest)r3   digestz/Reason)r3   reason_elementreasonz/Name)r3   name_elementnamez/ContactInfo)r3   contact_info_elementcontact_infoz
/SubFilter   )r3   sub_filter_element
sub_filterc              3   2   K   | ]  }t        |        y wrK   )int)rP   xs     r-   rR   z#_summarise_attrs.<locals>.<genexpr>   s      !A!   z
/ByteRange
byte_rangez/Filter)filterrl   )6signer_infoself_reported_timestamptimestamp_validity	timestampr   SASigningTimeTyper   from_datetimer   
isinstancer   	ESSCertIDrN   appendSACertIDTyper   DigestMethodr.   DigestValuedumpSACertIDListTypetupler   SACommitmentTypeIndicationTypedottedr   content_timestamp_validitySATimestampTyper   chosenr   SignaturePolicyIdSASigPolicyIdentifierType
sig_objectSASignatureProductionPlaceTyperM   cades_signer_attrsclaimed_attrs"SAOneSignerRoleTypeEndorsementTypeCLAIMED	attr_typejoinattr_valuesSAOneSignerRoleTypecertified_attrs	CERTIFIEDSASignerRoleTypeSAMessageDigestTypeSAReasonType
SANameTypeSAContactInfoTypeSASubFilterTypeSAFilterTypeSignatureAttributesType)r/   r0   r2   kwargsclaimed_timesigning_cert_attrcert_ids_xmlr>   	hash_algocommitment_typeoidsig_policy_identactual_policy_ident	ident_xmlr   rolesclaimed_attr	role_typestringified	cert_attrr\   s                        r-   _summarise_attrsr   ?   s	     ++N;L  F77 (( 	%%// 
 !,!>!>**<8"
~
 .l;$(1 	G'3==1"	#$45kBII	((".";";(3# ".!9!9,33"
 #?3  0557!	( )4(D(D|!4)
$%
%: 	
 2366(3::,8O 	+, ,,0;0K0K(6655??1
,-|-JKAN 	 /55):+G+GH%o6C#==Xcjj\+BI /8F*+
 l---66 #L$;$;K$H IK 	+, $$'::.<< 
	L#FFNNI))00199ML4L4LMMNP  LL//%.[
	 ,;;Ar 	I#FFPPI &&--.a99JI4I4IJJKM  LL//%.[	 !, < <eEl!
} $$)4)D)D(66--77*
%&,2*
 $/#B#B 5 5$
  L+++&33L,C,CI,N(O
x ,)))$//\44W=>
v
 000!,!>!>!$\%<%<^%L!M"
~
 |...*::"<#:#:<#HI!"M 
|
 ! !$//=! F< L+++&33|..y9:12>
x ..888Y % 0 % X % s7   8W  A#W *0W, 	WW	W)(W),	W98W9statusreturnc                 n   t        t        |j                        }t        |j                        }t        j                  |      }|j                  | j                  d   j                                |j                         }t        j                  t        j                  t        |j                              t        j                   |            }t#        j$                  t        j&                  | j                  d   j(                        |dd      }t+        |t,              rd}nt+        |t.              rd}nd}t0        j2                  d	t0        j4                  d
t0        j6                  di|j8                  j:                     }	|j<                  }
|
J d }t+        |t.              r4t#        j>                  tA        jB                  |jD                        d      }tG        tH        jJ                  |jL                        }t#        jN                  |t#        jP                  tA        jB                  |
      |      t#        jR                  t        j                  t        j                  t        |j                              t        j                   | jU                                           tW        | |      t#        jX                  t#        jZ                  t]        |       f            t#        j^                  d|       t#        j`                  |	d|j8                  jb                   f            }|S )Nr2   )r;   r<   	signatureF)signature_valuedigest_alg_and_value	hash_onlydoc_hash_onlyLTALTVMBasicz+urn:etsi:019102:mainindication:total-passedz+urn:etsi:019102:mainindication:total-failedz,urn:etsi:019102:mainindication:indeterminatez"urn:etsi:019102:poetype:validation)poetimetype_of_proof)object_typevalue)validation_timebest_signature_time)r   )voreference)signer_certificatez"urn:etsi:019102:validationprocess:)signature_validation_process_idzurn:etsi:019102:subindication:)main_indicationsub_indication)signature_identifiervalidation_time_infosigners_documentsignature_attributessigner_informationsignature_validation_processsignature_validation_status)2r   r   r0   r   md_algorithmr   Hashupdaterm   ry   finalizer   DigestAlgAndValueTyper   rw   r.   rx   r   SignatureIdentifierTypeSignatureValuerN   rs   r   r   r   PASSEDFAILEDINDETERMINATEades_subindicr   r   POETyper   rr   r   r	   r
   CERTIFICATEsigning_certSignatureValidationReportTypeValidationTimeInfoTypeSignersDocumentTypecompute_digestr   SignerInformationTypeVOReferenceTyper   SignatureValidationProcessTypeValidationStatusTypestandard_name)r/   r   r0   md_specmddtbsr_digestdtbsr_digest_infosig_idprocessades_main_indicr   best_sig_timesigner_cert_vosingle_reports                 r-   _generate_reportr     s    &**<f>O>O%PJ()@)@AG	W	BIIl&&~6;;=>;;=L33"//Z445
 "--l;	 00$33$$[188
 /F &12	F8	9HH  "P !!	#O
 !00O&&&37M&67#++--f.H.HI ?	
 &(44%%N  ==#(??'55oF -
 %88!&!<!<*77$Z%<%<= *55 //1	"	
 .lJG&<<*:::>JK 
 &1%O%O4WI>&

 %0$D$D+01E1E1S1S0TU%
?%ML     voc                     t        |       }t        j                  t        |       | j                  j                         |rt        j                  |            S d       S )N)base64)idr    validation_object_representation)r   r   r
   r   r   urn"ValidationObjectRepresentationType)r   bin_datas     r-   _package_validation_objectr   d  s[    3B7H++.r2NN&&(  ::(K	   r   c           	      
   t        j                  t        | |      ft        j                  t	        d |j
                  D                          }ddlm} ddlm	}  |d      } ||      j                  |t        	      }|S )
a.  
    Generate signature validation report in XML format according to
    ETSI TS 119 102-2.

    :param embedded_sig:
        PDF signature to report on.
    :param status:
        AdES validation result to turn into a report.
    :return:
        A string representation of the validation report.
    c              3   2   K   | ]  }t        |        y wrK   )r   )rP   r   s     r-   rR   z"generate_report.<locals>.<genexpr>  s       +2.rj   )signature_validation_reportsignature_validation_objectsr   )XmlSerializer)SerializerConfigz  )indent)config)ns_map)r   ValidationReportr   ValidationObjectListTyper{   validation_objects$xsdata.formats.dataclass.serializersr   +xsdata.formats.dataclass.serializers.configr   render
NAMESPACES)r/   r   reportr   r   r   sers          r-   r   r   r  s|     ))%5lF%K$M%0%I%I  33 &
F CLT*F
v
&
-
-fZ
-
HCJr   N)3__doc__typingr   r   r   r   
asn1cryptor   cryptography.hazmat.primitivesr   pyhanko_certvalidator.ltv.poer	   r
   xsdata.models.datatyper   pyhanko.generated.etsir   r   pyhanko.generated.w3cr   pyhanko.sign.adesr   pyhanko.sign.ades.reportr   pyhanko.sign.generalr   r   r   r   pyhanko.sign.validation.adesr   r   r   r   r   #pyhanko.sign.validation.generic_cmsr   $pyhanko.sign.validation.pdf_embeddedr   pyhanko.sign.validation.statusr   __all__r*   r   rM   r.   r   r   r   r   r   rV   r   r-   <module>r     s    - ,  1 P . 5 . ( /   F E =
 57==7  .0
.
,	

3 
I9&I94FI9XV&V0IV..Vr#3 &0Ir   