+
    '(j"                     ^    ^ RI t^ RI HtHtHt ^ RIHtHtHtH	t	  ! R R4      t
RR ltR tR# )	    N)ceil_divbytes_to_longlong_to_bytes)DerSequenceDerNullDerOctetStringDerObjectIdc                   <   a  ] tR t^#t o RtR tR tR tR tRt	V t
R# )PKCS115_SigSchemezvA signature object for ``RSASSA-PKCS1-v1_5``.
Do not instantiate directly.
Use :func:`Crypto.Signature.pkcs1_15.new`.
c                    Wn         R# )zInitialize this PKCS#1 v1.5 signature scheme object.

:Parameters:
  rsa_key : an RSA key object
    Creation of signatures is only possible if this is a *private*
    RSA key. Verification of signatures is always possible.
N_key)selfrsa_keys   &&N/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/Signature/pkcs1_15.py__init__PKCS115_SigScheme.__init__)   s	     	    c                6    V P                   P                  4       # )z<Return ``True`` if this object can be used to sign messages.)r   has_private)r   s   &r   can_signPKCS115_SigScheme.can_sign3   s    yy$$&&r   c                   \         P                  P                  P                  V P                  P
                  4      p\        V^4      p\        W4      p\        V4      pV P                  P                  V4      pV\        \        V4      V P                  P                  V P                  P
                  4      8w  d   \        R4      hV# )a(  Create the PKCS#1 v1.5 signature of a message.

This function is also called ``RSASSA-PKCS1-V1_5-SIGN`` and
it is specified in
`section 8.2.1 of RFC8017 <https://tools.ietf.org/html/rfc8017#page-36>`_.

:parameter msg_hash:
    This is an object from the :mod:`Crypto.Hash` package.
    It has been used to digest the message to sign.
:type msg_hash: hash object

:return: the signature encoded as a *byte string*.
:raise ValueError: if the RSA key is not long enough for the given hash algorithm.
:raise TypeError: if the RSA key has no private half.
z+Fault detected in RSA private key operation)CryptoUtilnumbersizer   nr   _EMSA_PKCS1_V1_5_ENCODEr   _decrypt_to_bytespowe
ValueError)r   msg_hashmodBitskemem_int	signatures   &&     r   signPKCS115_SigScheme.sign7   s    $ ++$$))$))++6WQ %X1r"II//7	Sy1499;;		LLJKKr   c                F   \         P                  P                  P                  V P                  P
                  4      p\        V^4      p\        V4      V8w  d   \        R4      h\        V4      pV P                  P                  V4      p\        Wd4      p \        WR4      .p VP                  P                  R4      p	V	'       g   VP!                  \        WR4      4       Yx9  d   \        R4      hR#   \         d    Rp	 LEi ; i  \         d    \        R4      hi ; i)a  Check if the  PKCS#1 v1.5 signature over a message is valid.

This function is also called ``RSASSA-PKCS1-V1_5-VERIFY`` and
it is specified in
`section 8.2.2 of RFC8037 <https://tools.ietf.org/html/rfc8017#page-37>`_.

:parameter msg_hash:
    The hash that was carried out over the message. This is an object
    belonging to the :mod:`Crypto.Hash` module.
:type parameter: hash object

:parameter signature:
    The signature that needs to be validated.
:type signature: byte string

:raise ValueError: if the signature is not valid.
zInvalid signatureTz1.2.840.113549.2.FN)r   r   r   r   r   r   r   lenr#   r   _encryptr   r   oid
startswithAttributeErrorappend)
r   r$   r)   r%   r&   signature_intr(   em1possible_em1algorithm_is_mds
   &&&       r   verifyPKCS115_SigScheme.verifyW   s   ( ++$$))$))++6Wa  y>Q011%i0##M2F&	24X$GIL("*,,"9"9:M"N ###$;H$OP "011 " ("'(  	2011	2s6   D	 %C6  D	 D	 6DD	 DD	 	D r   N)__name__
__module____qualname____firstlineno____doc__r   r   r*   r7   __static_attributes____classdictcell__)__classdict__s   @r   r   r   #   s$     
'@4 4r   r   c                ,   \        \        V P                  4      P                  4       .4      pV'       d(   VP	                  \        4       P                  4       4       \        V P                  4       4      p\        VP                  4       VP                  4       .4      P                  4       pV\        V4      ^,           8  d   \        R\        V4      ,          4      hRV\        V4      ,
          ^,
          ,          pRV,           R,           V,           # )a  
Implement the ``EMSA-PKCS1-V1_5-ENCODE`` function, as defined
in PKCS#1 v2.1 (RFC3447, 9.2).

``_EMSA-PKCS1-V1_5-ENCODE`` actually accepts the message ``M`` as input,
and hash it internally. Here, we expect that the message has already
been hashed instead.

:Parameters:
 msg_hash : hash object
        The hash object that holds the digest of the message being signed.
 emLen : int
        The length the final encoding must have, in bytes.
 with_hash_parameters : bool
        If True (default), include NULL parameters for the hash
        algorithm in the ``digestAlgorithm`` SEQUENCE.

:attention: the early standard (RFC2313) stated that ``DigestInfo``
    had to be BER-encoded. This means that old signatures
    might have length tags in indefinite form, which
    is not supported in DER. Such encoding cannot be
    reproduced by this function.

:Return: An ``emLen`` byte long string that encodes the hash.
z3DigestInfo is too long for this RSA key (%d bytes).   s        )
r   r	   r/   encoder2   r   r   digestr-   	TypeError)r$   emLenwith_hash_parameters
digestAlgorE   
digestInfoPSs   &&&    r   r   r      s    d {8<<8??ACDJ')**,- !23F%%'MMO  vx  S_RMPST^P__``	EC
O+a/	0Bg%
22r   c                    \        V 4      # )af  Create a signature object for creating
or verifying PKCS#1 v1.5 signatures.

:parameter rsa_key:
  The RSA key to use for signing or verifying the message.
  This is a :class:`Crypto.PublicKey.RSA` object.
  Signing is only possible when ``rsa_key`` is a **private** RSA key.
:type rsa_key: RSA object

:return: a :class:`PKCS115_SigScheme` signature object
)r   )r   s   &r   newrM      s     W%%r   )T)Crypto.Util.numberr   r   r   r   Crypto.Util.asn1r   r   r   r	   r   r   rM    r   r   <module>rQ      s/   >  E E N Nh hVB3H&r   