§
    ¥”jÊ  ã                  óB  — d dl mZ d dl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 d dlmZmZmZmZmZmZmZ d d	lmZmZmZ d d
lmZmZ g d¢Z ed¬¦  «         G d„ d¦  «        ¦   «         Z G d„ dej        ¦  «        Z G d„ de¦  «        Z  e¦   «         fdd„Z!dS )é    )ÚannotationsN)Ú	dataclass)ÚOptional)Úalgos)ÚPublicKeyInfo)Úserialization)ÚdsaÚecÚed448Úed25519ÚmldsaÚpaddingÚrsa)ÚAlgorithmNotSupportedÚDSAParametersUnavailableÚPSSParameterMismatch)Ú&get_pyca_cryptography_hash_for_signingÚprocess_pss_params)ÚDefaultSignatureValidatorÚSignatureValidationContextÚSignatureValidatorT)Úfrozenc                  ó2   — e Zd ZU dZdZded<   	 dZded<   dS )r   zv
    Additional context about a signature that is crucial for
    executing the cryptographic validation process.
    NzOptional[str]Úcontextual_md_algorithmFÚboolÚ	prehashed)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   © ó    úq/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko_certvalidator/sig_validate.pyr   r   %   sL   € € € € € € ðð ð
 .2ÐÐ1Ð1Ð1Ñ1ðð €IÐÐÐÑðð r#   r   c                  ó.   — e Zd ZdZ e¦   «         fdd„ZdS )r   z=
    Abstracts away cryptographic validation primitives.
    Ú	signatureÚbytesÚsigned_dataÚpublic_key_infor   Úsignature_algorithmúalgos.SignedDigestAlgorithmÚcontextr   c                ó   — t          ¦   «         ‚)aN  
        Validate a cryptographic signature over a piece of data.

        :param signature:
            The signature data.
        :param signed_data:
            The signed data.
        :param public_key_info:
            The public key with which to validate the signature.
        :param signature_algorithm:
            The algorithm to use when validating.
        :param context:
            Additional context that is crucial for executing the cryptographic
            validation process.
        :raises InvalidSignature:
            Raised if the signature is invalid.
        )ÚNotImplementedError©Úselfr&   r(   r)   r*   r,   s         r$   Úvalidate_signaturez%SignatureValidator.validate_signature?   s   € õ2 "Ñ#Ô#Ð#r#   N©
r&   r'   r(   r'   r)   r   r*   r+   r,   r   )r   r   r   r    r   r1   r"   r#   r$   r   r   :   sF   € € € € € ðð ð /IÐ.HÑ.JÔ.Jð$ð $ð $ð $ð $ð $ð $r#   r   c                  ó*   — e Zd Z e¦   «         fdd
„ZdS )r   r&   r'   r(   r)   r   r*   r+   r,   r   c                ó,   — t          |||||¦  «         d S )N)Ú_validate_rawr/   s         r$   r1   z,DefaultSignatureValidator.validate_signature\   s/   € õ 	ØØØØØñ	
ô 	
ð 	
ð 	
ð 	
r#   Nr2   )r   r   r   r   r1   r"   r#   r$   r   r   [   s<   € € € € € ð /IÐ.HÑ.JÔ.Jð
ð 
ð 
ð 
ð 
ð 
ð 
r#   r   r&   r'   r(   r)   r   r*   r+   r,   c                ój  — 	 |j         }n# t          $ r |d         j        }Y nw xY w|d         }|dk    r"|d         d         j        €t          d¦  «        ‚|j        dk    rf|                     ¦   «         }t          |t          j        ¦  «        sJ ‚|d         d         j        }|�||j        k    rt          d¦  «        ‚ddi|d<   t          j        |                     ¦   «         ¦  «        }	 |j        }	n# t          $ r
 |j        }	Y nw xY w|d	k    r]t          |t          j        ¦  «        sJ ‚t#          |	|j        ¬
¦  «        }
|                     | |t)          j        ¦   «         |
¦  «         dS |dk    rUt          |t          j        ¦  «        sJ ‚t-          |d         |j        ¬
¦  «        \  }}
|                     | |||
¦  «         dS |dk    rKt          |t.          j        ¦  «        sJ ‚t#          |	|j        ¬
¦  «        }
|                     | ||
¦  «         dS |dk    r]t          |t2          j        ¦  «        sJ ‚t#          |	|j        ¬
¦  «        }
|                     | |t3          j        |
¦  «        ¦  «         dS |dk    r4t          |t8          j        ¦  «        sJ ‚|                     | |¦  «         dS |dk    r4t          |t<          j        ¦  «        sJ ‚|                     | |¦  «         dS |dk    r4t          |t@          j!        ¦  «        sJ ‚|                     | |¦  «         dS |dk    r4t          |t@          j"        ¦  «        sJ ‚|                     | |¦  «         dS |dk    r4t          |t@          j#        ¦  «        sJ ‚|                     | |¦  «         dS tI          d|› d�¦  «        ‚)z1
    Validate a raw signature. Internal API.
    Ú	algorithmÚ
parametersr	   Nz,DSA public key parameters were not provided.Ú
rsassa_psszPPublic key info includes PSS parameters that do not match those on the signaturer   Úrsassa_pkcs1v15)r   Úecdsar   r   Úmldsa44Úmldsa65Úmldsa87zSignature mechanism z is not supported.)%Úsignature_algoÚ
ValueErrorÚnativer   r7   ÚcopyÚ
isinstancer   ÚRSASSAPSSParamsr   r   Úload_der_public_keyÚdumpÚ	hash_algor   r   ÚRSAPublicKeyr   r   Úverifyr   ÚPKCS1v15r   r	   ÚDSAPublicKeyr
   ÚEllipticCurvePublicKeyÚECDSAr   ÚEd25519PublicKeyr   ÚEd448PublicKeyr   ÚMLDSA44PublicKeyÚMLDSA65PublicKeyÚMLDSA87PublicKeyr   )r&   r(   r)   r*   r,   Úsig_algor8   Úpss_key_paramsÚpub_keyrG   Ú	verify_mdÚpss_paddings               r$   r5   r5   m   sG  € ð;Ø&Ô5ˆˆøÝð ;ð ;ð ;Ø& {Ô3Ô:ˆˆˆð;øøøð % \Ô2€Jð 	�EÒÐØ˜KÔ(¨Ô6Ô=ÐEå&Ø:ñ
ô 
ð 	
ð
 Ô  LÒ0Ð0Ø)×.Ò.Ñ0Ô0ˆÝ˜*¥eÔ&;Ñ<Ô<Ð<Ð<Ð<Ø(¨Ô5°lÔCÔJˆØÐ%¨.¸JÔ<MÒ*MÐ*MÝ&ð)ñô ð ð
 )4°UÐ';ˆ˜Ñ$åÔ/°×0DÒ0DÑ0FÔ0FÑGÔG€Gð4Ø'Ô1ˆ	ˆ	øÝð 4ð 4ð 4ØÔ3ˆ	ˆ	ˆ	ð4øøøàÐ$Ò$Ð$Ý˜'¥3Ô#3Ñ4Ô4Ð4Ð4Ð4Ý:Ø Ô!2ð
ñ 
ô 
ˆ	ð 	�Š�y +­wÔ/?Ñ/AÔ/AÀ9ÑMÔMÐMÐMÐMØ	�\Ò	!Ð	!Ý˜'¥3Ô#3Ñ4Ô4Ð4Ð4Ð4Ý!3Ø Ô-¸Ô9Jð"
ñ "
ô "
Ñˆ�Yð 	�Š�y +¨{¸IÑFÔFÐFÐFÐFØ	�UÒ	Ð	Ý˜'¥3Ô#3Ñ4Ô4Ð4Ð4Ð4Ý:Ø Ô!2ð
ñ 
ô 
ˆ	ð 	�Š�y +¨yÑ9Ô9Ð9Ð9Ð9Ø	�WÒ	Ð	Ý˜'¥2Ô#<Ñ=Ô=Ð=Ð=Ð=Ý:Ø Ô!2ð
ñ 
ô 
ˆ	ð 	�Š�y +­r¬x¸	Ñ/BÔ/BÑCÔCÐCÐCÐCØ	�YÒ	Ð	Ý˜'¥7Ô#;Ñ<Ô<Ð<Ð<Ð<Ø�Š�y +Ñ.Ô.Ð.Ð.Ð.Ø	�WÒ	Ð	Ý˜'¥5Ô#7Ñ8Ô8Ð8Ð8Ð8Ø�Š�y +Ñ.Ô.Ð.Ð.Ð.Ø	�YÒ	Ð	Ý˜'¥5Ô#9Ñ:Ô:Ð:Ð:Ð:Ø�Š�y +Ñ.Ô.Ð.Ð.Ð.Ø	�YÒ	Ð	Ý˜'¥5Ô#9Ñ:Ô:Ð:Ð:Ð:Ø�Š�y +Ñ.Ô.Ð.Ð.Ð.Ø	�YÒ	Ð	Ý˜'¥5Ô#9Ñ:Ô:Ð:Ð:Ð:Ø�Š�y +Ñ.Ô.Ð.Ð.Ð.å#Ø? 8Ð?Ð?Ð?ñ
ô 
ð 	
s   ‚
 Š$£$Ã/C7 Ã7DÄ
Dr2   )"Ú
__future__r   ÚabcÚdataclassesr   Útypingr   Ú
asn1cryptor   Úasn1crypto.keysr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr	   r
   r   r   r   r   r   Úpyhanko_certvalidator.errorsr   r   r   Úpyhanko_certvalidator.utilr   r   Ú__all__r   ÚABCr   r   r5   r"   r#   r$   ú<module>rd      s  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð
ð ð €ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð($ð $ð $ð $ð $˜œñ $ô $ð $ðB
ð 
ð 
ð 
ð 
Ð 2ñ 
ô 
ð 
ð. +EÐ*DÑ*FÔ*FðU
ð U
ð U
ð U
ð U
ð U
ð U
r#   