U
    cc                     @   s   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 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mZ ddlmZmZ edddhZdefeeejeje dddZ!ej"dddZ#dS )    )cmsx509)serialization)padding)DSAPublicKey)ECDSAEllipticCurvePublicKey)Ed448PublicKey)Ed25519PublicKey)RSAPublicKey   )MultivaluedAttributeErrorNonexistentAttributeErrorfind_unique_cms_attributeget_pyca_cryptography_hashprocess_pss_params   )SignatureValidationErrorWeakHashAlgorithmErrorsha1md5Zmd2F)	signaturesigned_datacertsignature_algorithmmd_algorithmc              	   C   s  z
|j }W n ttfk
r&   d}Y nX |dk	rH||kr@t|| }t||d}t|j	 }	|j
}
|
dkrt|	tst|	| |t | n|
dkrt|	tstt|d ||d\}}|	| ||| n|
dkrt|	tst|	| || n|
dkr(t|	tst|	| |t| n`|
dkrPt|	tsBt|	| | n8|
d	krxt|	tsjt|	| | ntd
|
 ddS )z1
    Validate a raw signature. Internal API.
    N)	prehashedZrsassa_pkcs1v15Z
rsassa_pss
parametersZdsaZecdsaZed25519Zed448zSignature mechanism z is not supported.)	hash_algo
ValueErrorAttributeErrorr   upperr   r   Zload_der_public_keyZ
public_keydumpZsignature_algo
isinstancer   AssertionErrorverifyr   ZPKCS1v15r   r   r   r   r
   r	   NotImplementedError)r   r   r   r   r   r   Zweak_hash_algorithmsZsig_md_algorithmZ	verify_mdZpub_keyZsig_algoZpss_paddingr    r'   W/var/www/html/project/venv/lib/python3.8/site-packages/pyhanko/sign/validation/utils.pyvalidate_raw   sN    

 




r)   )signer_infoc              	   C   s<   zt | d d}|jW S  ttfk
r6   tdY nX d S )NZsigned_attrsZmessage_digestzUMessage digest not found in signature, or multiple message digest attributes present.)r   nativer   r   r   )r*   Zembedded_digestr'   r'   r(   extract_message_digestM   s     r,   N)$Z
asn1cryptor   r   Zcryptography.hazmat.primitivesr   Z)cryptography.hazmat.primitives.asymmetricr   Z-cryptography.hazmat.primitives.asymmetric.dsar   Z,cryptography.hazmat.primitives.asymmetric.ecr   r   Z/cryptography.hazmat.primitives.asymmetric.ed448r	   Z1cryptography.hazmat.primitives.asymmetric.ed25519r
   Z-cryptography.hazmat.primitives.asymmetric.rsar   Zgeneralr   r   r   r   r   errorsr   r   	frozensetZDEFAULT_WEAK_HASH_ALGORITHMSbytesZCertificateZSignedDigestAlgorithmstrr)   Z
SignerInfor,   r'   r'   r'   r(   <module>   s"   
4