§
    ¢”j"Y  ã                   ó¤  — d dl mZmZmZmZ d dlZd dlZd dlZddlm	Z	 ddl
mZmZmZmZmZmZmZmZ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 ej        d
k     reZ e!Z"nd„ Z  e	¦   «         Z#e#dk    r e$d¦  «        ‚g d¢Z%ddddœZ&d d ddœZ'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,	 d„ Z- G d„ d¦  «        Z. G d„ d¦  «        Z/ e/ddd¦  «        Z0 e.ddd ¦  «        Z1 e/e1d!d"d#¦  «        Z2 e.d$dd%¦  «        Z3 e/e3d&d'd(¦  «        Z4 e.d)dd*¦  «        Z5 e/e5d+d,d-¦  «        Z6 e.d.dd/¦  «        Z7 e/e7d0d1d2¦  «        Z8 e.d3dd4¦  «        Z9 e/e9d5d6d7¦  «        Z:dS )8é    )Úunicode_literalsÚdivisionÚabsolute_importÚprint_functionNé   )Úbackend)
ÚCertificateÚDSASignatureÚECDomainParametersÚECPointBitStringÚECPrivateKeyÚint_from_bytesÚPrivateKeyAlgorithmÚPrivateKeyInfoÚPublicKeyAlgorithmÚPublicKeyInfo)Úpretty_message)Ú	type_nameÚbyte_cls)Ú
rand_bytes)ÚSignatureError)é   c                 ó"   — t          | g¦  «        S ©N)Úbytes)Únums    ú^/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/oscrypto/_ecdsa.pyÚchr_clsr      s   € Ý�c�U‰|Œ|Ðó    Ú	winlegacyz2Pure-python ECDSA code is only for Windows XP/2003)Úec_generate_pairÚec_compute_public_key_pointÚec_public_key_infoÚ
ecdsa_signÚecdsa_verifyé    é0   éB   ©Ú	secp256r1Ú	secp384r1Ú	secp521r1é   c           
      ó>  — | t          g d¢¦  «        vr*t          t          dt          | ¦  «        ¦  «        ¦  «        ‚t          |          }t
          t          t          dœ|          }	 t          |¦  «        }t          |d¬¦  «        }|dk    r||j
        k     rnŒ3t          dt          dt          d| ¬	¦  «        d
œ¦  «        t          d|dœ¦  «        dœ¦  «        }t          |¦  «        }|                     ¦   «         |d         j        d<   t%          || ¦  «        |fS )a³  
    Generates a EC public/private key pair

    :param curve:
        A unicode string. Valid values include "secp256r1", "secp384r1" and
        "secp521r1".

    :raises:
        ValueError - when any of the parameters contain an invalid value
        TypeError - when any of the parameters are of the wrong type

    :return:
        A 2-element tuple of (asn1crypto.keys.PublicKeyInfo,
        asn1crypto.keys.PrivateKeyInfo)
    r)   ú\
            curve must be one of "secp256r1", "secp384r1", "secp521r1", not %s
            TF©Úsignedr   ÚecÚnamed©ÚnameÚvalue©Ú	algorithmÚ
parametersÚecPrivkeyVer1)ÚversionÚprivate_key)r;   Úprivate_key_algorithmr<   r<   Ú
public_key)ÚsetÚ
ValueErrorr   ÚreprÚCURVE_BYTESÚSECP256R1_BASE_POINTÚSECP384R1_BASE_POINTÚSECP521R1_BASE_POINTr   r   Úorderr   r   r   r   r"   ÚcopyÚparsedr#   )ÚcurveÚcurve_num_bytesÚcurve_base_pointÚprivate_key_bytesÚprivate_key_intÚprivate_key_infoÚec_points          r   r!   r!   C   sp  € ð" •CÐ?Ð?Ð?Ñ@Ô@Ð@Ð@Ý�ðõ �‰KŒKñ	
ô 
ñ ô ð 	õ " %Ô(€Oå)Ý)Ý)ðð ð ô	ÐðÝ& Ñ7Ô7ÐÝ(Ð):À5ÐIÑIÔIˆà˜QÒÐ ?Ð5EÔ5KÒ#KÐ#KØðõ &ØÝ!4ØÝ,ØØðñ ô ð6
ð 6
ñ "ô "õ $Ø&Ø*ð%
ð %
ñ ô ð'ð 'ñ ô Ðõ +Ð+;Ñ<Ô<€HØ;C¿=º=¹?¼?Ð�]Ô#Ô*¨<Ñ8å˜x¨Ñ/Ô/Ð1AÐBÐBr   c                 óL  — t          | t          ¦  «        s*t          t          dt	          | ¦  «        ¦  «        ¦  «        ‚| j        \  }}|dk    rt          t          d¦  «        ¦  «        ‚|dk    rt          t          d¦  «        ¦  «        ‚|dk    rX|t          g d¢¦  «        vr*t          t          dt          |¦  «        ¦  «        ¦  «        ‚t          t          t          dœ|         }|| d	         j        d	         j        z  }t          j        |j        |j        ¦  «        S )
a  
    Constructs the PublicKeyInfo for a PrivateKeyInfo

    :param private_key:
        An asn1crypto.keys.PrivateKeyInfo object

    :raises:
        ValueError - when any of the parameters contain an invalid value

    :return:
        An asn1crypto.keys.ECPointBitString object
    zy
            private_key must be an instance of the
            asn1crypto.keys.PrivateKeyInfo class, not %s
            Úimplicit_cazj
            Unable to compute public key for EC key using Implicit CA
            parameters
            Ú	specifiedzX
            Unable to compute public key for EC key over a specified field
            r3   r)   zj
                Named curve must be one of "secp256r1", "secp384r1", "secp521r1", not %s
                r<   )Ú
isinstancer   Ú	TypeErrorr   r   rI   r@   r?   rA   rC   rD   rE   rH   Únativer   Úfrom_coordsÚxÚy)r<   Ú
curve_typeÚdetailsÚ
base_pointÚpublic_points        r   r"   r"      s\  € õ �k¥>Ñ2Ô2ð Ý�ðõ �kÑ"Ô"ñ
ô 
ñ ô ð 	ð &Ô+Ñ€J�à�]Ò"Ð"Ý�ðñ
ô 
ñ ô ð 	ð �[Ò Ð Ý�ðñ
ô 
ñ ô ð 	ð 
�wÒ	Ð	Ø�#ÐEÐEÐEÑFÔFÐFÐFÝ�^ðõ �W‘”ñ	ô ñ ô ð õ .Ý-Ý-ð
ð 
ð ô	ˆ
ð  ¨MÔ :Ô AÀ-Ô PÔ WÑW€LÝÔ'¨¬¸¼ÑGÔGÐGr   c           	      óÞ   — |t          g d¢¦  «        vr*t          t          dt          |¦  «        ¦  «        ¦  «        ‚t	          t          dt          d|¬¦  «        dœ¦  «        | dœ¦  «        S )aˆ  
    Constructs the PublicKeyInfo for an ECPointBitString

    :param private_key:
        An asn1crypto.keys.ECPointBitString object

    :param curve:
        A unicode string of the curve name - one of secp256r1, secp384r1 or secp521r1

    :raises:
        ValueError - when any of the parameters contain an invalid value

    :return:
        An asn1crypto.keys.PublicKeyInfo object
    r)   r/   r2   r3   r4   r7   )r8   r>   )r?   r@   r   rA   r   r   r   )Úpublic_key_pointrI   s     r   r#   r#   º   s¡   € ð" •CÐ?Ð?Ð?Ñ@Ô@Ð@Ð@Ý�ðõ �‰KŒKñ	
ô 
ñ ô ð 	õ Ý'ØÝ,ØØðñ ô ð)
ð )
ñ ô ð 'ð	ð 	ñ 	ô 	ð 	r   c                 ó¤  — t          | d¦  «        rt          | j        t          ¦  «        s*t	          t          dt          | ¦  «        ¦  «        ¦  «        ‚| j        }|t          g d¢¦  «        vrt          t          d¦  «        ¦  «        ‚t          |t          ¦  «        s*t	          t          dt          |¦  «        ¦  «        ¦  «        ‚|t          g d¢¦  «        vr*t          t          dt          |¦  «        ¦  «        ¦  «        ‚t          t          |¦  «        }| j        d         j        }|d         j        }|d         j        }t"          |         }t$          t&          t(          dœ|         }	|	j        }
 ||¦  «                             ¦   «         }t/          |¦  «        }t1          |d	¬
¦  «        |
z  }d|z  }d|z  }t3          j        ||dz   |z   |z   |¦  «                             ¦   «         }t3          j        |||¦  «                             ¦   «         }t3          j        ||dz   |z   |z   |¦  «                             ¦   «         }t3          j        |||¦  «                             ¦   «         }d}d}	 d}t/          |¦  «        |k     r@t3          j        |||¦  «                             ¦   «         }||z  }t/          |¦  «        |k     °@t1          |d|…         d	¬
¦  «        }|dk    s||
k    rŒ||	|z  j        |
z  }|dk    rŒ�t9          ||
¦  «        |||z  |
z  z   z  |
z  }|dk    rŒ¶	 t;          ||dœ¦  «                             ¦   «         S )aN  
    Generates an ECDSA signature in pure Python (thus slow)

    :param private_key:
        The PrivateKey to generate the signature with

    :param data:
        A byte string of the data the signature is for

    :param hash_algorithm:
        A unicode string of "sha1", "sha256", "sha384" or "sha512"

    :raises:
        ValueError - when any of the parameters contain an invalid value
        TypeError - when any of the parameters are of the wrong type
        OSError - when an error is returned by the OS crypto library

    :return:
        A byte string of the signature
    Úasn1zy
            private_key must be an instance of the
            oscrypto.asymmetric.PrivateKey class, not %s
            r)   zx
            private_key does not use one of the named curves secp256r1,
            secp384r1 or secp521r1
            ú<
            data must be a byte string, not %s
            ©Úsha1Úsha224Úsha256Úsha384Úsha512úz
            hash_algorithm must be one of "sha1", "sha224", "sha256", "sha384",
            "sha512", not %s
            r<   Fr0   ó   ó    r   Tr   )ÚrÚs)ÚhasattrrS   r`   r   rT   r   r   rI   r?   r@   r   rA   ÚgetattrÚhashlibrH   ÚcontentsrU   rB   rC   rD   rE   rF   ÚdigestÚlenr   ÚhmacÚnewrW   Úinverse_modr
   Údump)r<   ÚdataÚhash_algorithmÚ
curve_nameÚ	hash_funcÚec_private_keyrL   rM   rJ   rK   Únrq   Úhash_lengthÚhÚVÚKrk   rl   ÚTÚks                       r   r$   r$   ß   s¥  € õ, �; Ñ'Ô'ð ­z¸+Ô:JÍNÑ/[Ô/[ð Ý�ðõ �kÑ"Ô"ñ
ô 
ñ ô ð 	ð Ô"€JØ�ÐDÐDÐDÑEÔEÐEÐEÝ�ðñ
ô 
ñ ô ð 	õ �d�HÑ%Ô%ð Ý�ðõ �d‰OŒOñ	
ô 
ñ ô ð 	ð �SÐ!QÐ!QÐ!QÑRÔRÐRÐRÝ�ðõ �Ñ Ô ñ
ô 
ñ ô ð 	õ � Ñ0Ô0€Ià Ô% mÔ4Ô;€NØ& }Ô5Ô>ÐØ$ ]Ô3Ô:€Oå! *Ô-€Oå)Ý)Ý)ðð ð ô	Ðð 	Ô€Að
 ˆY�t‰_Œ_×#Ò#Ñ%Ô%€FÝ�f‘+”+€Kå�v eÐ,Ñ,Ô,¨qÑ0€Að 	�+Ñ€Að 	�+Ñ€Aõ 	Œ��A˜‘KÐ"3Ñ3°fÑ<¸iÑHÔH×OÒOÑQÔQ€Aõ 	Œ��A�yÑ!Ô!×(Ò(Ñ*Ô*€Aõ 	Œ��A˜‘KÐ"3Ñ3°fÑ<¸iÑHÔH×OÒOÑQÔQ€Aõ 	Œ��A�yÑ!Ô!×(Ò(Ñ*Ô*€Að 	
€AØ	€Aðàˆõ �!‰fŒf�Ò&Ð&Ý”˜˜A˜yÑ)Ô)×0Ò0Ñ2Ô2ˆAØ�‰FˆAõ �!‰fŒf�Ò&Ð&õ
 ˜1˜Q˜Ð.Ô/¸Ð>Ñ>Ô>ˆØ�Š6ˆ6�Q˜!’V�VØð  Ñ!Ô$ qÑ(ˆØ�Š6ˆ6Øå˜˜AÑÔ ! ¸Ñ':¸aÑ&?Ñ"?Ñ@ÀAÑEˆØ�Š6ˆ6Øàå˜a aÐ(Ð(Ñ)Ô)×.Ò.Ñ0Ô0Ð0r   c                 ó¸  — t          | d¦  «        }|r!t          | j        t          t          f¦  «        s*t          t          dt          | ¦  «        ¦  «        ¦  «        ‚| j        }|t          g d¢¦  «        vrt          t          d¦  «        ¦  «        ‚t          |t          ¦  «        s*t          t          dt          |¦  «        ¦  «        ¦  «        ‚t          |t          ¦  «        s*t          t          dt          |¦  «        ¦  «        ¦  «        ‚|t          g d¢¦  «        vr*t          t          dt          |¦  «        ¦  «        ¦  «        ‚| j        }t          |t          ¦  «        r|j        }t          t          t           dœ|         }|d	                              ¦   «         \  }}	|j        }
t'          |j        ||	|
¦  «        }	 t)          j        |¦  «        }|d
         j        }|d         j        }n# t          $ r t/          d¦  «        ‚w xY wd}||dk     z  }|||
k    z  }||dk     z  }|||
k    z  }|rt/          d¦  «        ‚t1          t2          |¦  «        } ||¦  «                             ¦   «         }t7          |d¬¦  «        |
z  }t9          ||
¦  «        }||z  |
z  }||z  |
z  }||z  ||z  z   }||j        |
z  k    rt/          d¦  «        ‚dS )aà  
    Verifies an ECDSA signature in pure Python (thus slow)

    :param certificate_or_public_key:
        A Certificate or PublicKey instance to verify the signature with

    :param signature:
        A byte string of the signature to verify

    :param data:
        A byte string of the data the signature is for

    :param hash_algorithm:
        A unicode string of "md5", "sha1", "sha256", "sha384" or "sha512"

    :raises:
        oscrypto.errors.SignatureError - when the signature is determined to be invalid
        ValueError - when any of the parameters contain an invalid value
        TypeError - when any of the parameters are of the wrong type
        OSError - when an error is returned by the OS crypto library
    r`   z·
            certificate_or_public_key must be an instance of the
            oscrypto.asymmetric.PublicKey or oscrypto.asymmetric.Certificate
            classes, not %s
            r)   z†
            certificate_or_public_key does not use one of the named curves
            secp256r1, secp384r1 or secp521r1
            zA
            signature must be a byte string, not %s
            ra   rb   rh   r>   rk   rl   zSignature is invalidr   r   Fr0   N)rm   rS   r`   r   r	   rT   r   r   rI   r?   r@   r   rA   r>   rC   rD   rE   Ú	to_coordsrF   Ú
PrimePointr
   ÚloadrU   r   rn   ro   rq   r   ru   rW   )Úcertificate_or_public_keyÚ	signaturerw   rx   Úhas_asn1ry   r`   rK   rW   rX   r|   r^   rk   rl   Úinvalidrz   rq   ÚzÚwÚu1Úu2Ú
hash_points                         r   r%   r%   `  s]  € õ. Ð0°&Ñ9Ô9€HØð �:Ð&?Ô&DÅ}ÕVaÐFbÑcÔcð Ý�ðõ
 Ð/Ñ0Ô0ñ
ô 
ñ ô ð 	ð +Ô0€JØ�ÐDÐDÐDÑEÔEÐEÐEÝ�ðñ
ô 
ñ ô ð 	õ �i¥Ñ*Ô*ð Ý�ðõ �iÑ Ô ñ	
ô 
ñ ô ð 	õ �d�HÑ%Ô%ð Ý�ðõ �d‰OŒOñ	
ô 
ñ ô ð 	ð �SÐ!QÐ!QÐ!QÑRÔRÐRÐRÝ�ðõ �Ñ Ô ñ
ô 
ñ ô ð 	ð %Ô)€DÝ�$�Ñ$Ô$ð ØŒˆõ *Ý)Ý)ðð ð ô	Ðð �Ô×'Ò'Ñ)Ô)�D€A€qØÔ€Aõ "Ð"2Ô"8¸!¸QÀÑBÔBÐð5Ý Ô% iÑ0Ô0ˆ	Ø�cŒNÔ!ˆØ�cŒNÔ!ˆˆøÝð 5ð 5ð 5ÝÐ3Ñ4Ô4Ð4ð5øøøð €Gð ˆq�1ŠuÑ€GØˆq�AŠvÑ€Gð ˆq�1ŠuÑ€GØˆq�AŠvÑ€Gàð 5ÝÐ3Ñ4Ô4Ð4å� Ñ0Ô0€IàˆY�t‰_Œ_×#Ò#Ñ%Ô%€Få�v eÐ,Ñ,Ô,¨qÑ0€AÝ�A�qÑÔ€AØ
ˆa‰%�1‰€BØ
ˆa‰%�1‰€BØ" RÑ'Ð,<¸rÑ,AÑB€JØˆZŒ\˜AÑÒÐÝÐ3Ñ4Ô4Ð4ð Ðs   Ç	.G8 Ç8Hc                 óÚ   — | dk     s|| k    r| |z  } | |}}d\  }}}}|dk    r5t          ||¦  «        |fz   \  }}}|||z  z
  |||z  z
  ||f\  }}}}|dk    °5|dk    sJ ‚|dk    r|S ||z   S )z—
    Compute the modular inverse of a (mod p)

    :param a:
        An integer

    :param p:
        An integer

    :return:
        An integer
    r   )r   r   r   r   r   )Údivmod)	ÚaÚpÚcÚdÚucÚvcÚudÚvdÚqs	            r   ru   ru     s°   € ð 	ˆ1‚u€u��Q’�Ø�‰Eˆð ˆa€q€AØ�N€BˆˆB�Ø
ˆqŠ&ˆ&Ý˜˜A‘,”, ! Ñ%‰ˆˆ1ˆaØ˜a "™f™ b¨1¨r©6¡k°2°rÐ9‰ˆˆB��Bð ˆqŠ&ˆ&ð �Š6ˆ6ˆ6ˆ6Ø	ˆA‚v€vØˆ	à�A‰vˆr   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú
PrimeCurvezc
    Elliptic curve over a prime field. Characteristic two field curves are not
    supported.
    c                 ó0   — || _         || _        || _        dS )a  
        The curve of points satisfying y^2 = x^3 + a*x + b (mod p)

        :param p:
            The prime number as an integer

        :param a:
            The component a as an integer

        :param b:
            The component b as an integer
        N)r“   r’   Úb)Úselfr“   r’   rž   s       r   Ú__init__zPrimeCurve.__init__-  s   € ð ˆŒØˆŒØˆŒˆˆr   c                 ó    — |j         |j         z  }|j        |j        z  |j        z  }||| j        |j        z  z   | j        z   z
  | j        z  dk    S )z~
        :param point:
            A Point object

        :return:
            Boolean if the point is on this curve
        r   )rX   rW   r’   rž   r“   )rŸ   ÚpointÚy2Úx3s       r   ÚcontainszPrimeCurve.contains?  sS   € ð ŒW�u”wÑˆØŒW�u”wÑ ¤Ñ(ˆØ�b˜4œ6 E¤GÑ+Ñ+¨d¬fÑ4Ñ5¸¼Ñ?À1ÒDÐDr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r¥   © r   r   rœ   rœ   '  sA   € € € € € ðð ð
ð ð ð$Eð Eð Eð Eð Er   rœ   c                   ó8   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )
r…   z1
    A point on a prime-field elliptic curve
    Nc                 óô   — || _         || _        || _        || _        | j         r)| j                              | ¦  «        st          d¦  «        ‚| j        r"| | j        z  t          k    rt          d¦  «        ‚dS dS )a)  
        :param curve:
            A PrimeCurve object

        :param x:
            The x coordinate of the point as an integer

        :param y:
            The y coordinate of the point as an integer

        :param order:
            The order of the point, as an integer - optional
        zInvalid EC pointN)rI   rW   rX   rF   r¥   r@   ÚINFINITY)rŸ   rI   rW   rX   rF   s        r   r    zPrimePoint.__init__R  sŽ   € ð ˆŒ
ØˆŒØˆŒØˆŒ
ð Œ:ð 	5Ø”:×&Ò& tÑ,Ô,ð 5Ý Ð!3Ñ4Ô4Ð4àŒ:ð 	5Ø�d”jÑ ¥HÒ,Ð,Ý Ð!3Ñ4Ô4Ð4ð	5ð 	5Ø,Ð,r   c                 ój   — | j         |j         k    r"| j        |j        k    r| j        |j        k    rdS dS )zy
        :param other:
            A PrimePoint object

        :return:
            0 if identical, 1 otherwise
        r   r   )rI   rW   rX   ©rŸ   Úothers     r   Ú__cmp__zPrimePoint.__cmp__o  s9   € ð Œ:˜œÒ$Ð$¨¬°5´7Ò):Ð):¸t¼vÈÌÒ?PÐ?PØ�1à�1r   c                 óô  — |t           k    r| S | t           k    r|S | j        |j        k    sJ ‚| j        |j        k    r;| j        |j        z   | j        j        z  dk    rt           S |                      ¦   «         S | j        j        }|j        | j        z
  t          |j        | j        z
  |¦  «        z  |z  }||z  | j        z
  |j        z
  |z  }|| j        |z
  z  | j        z
  |z  }t          | j        ||¦  «        S )zq
        :param other:
            A PrimePoint object

        :return:
            A PrimePoint object
        r   )r­   rI   rW   rX   r“   Údoubleru   r…   )rŸ   r°   r“   Úl_r¤   Úy3s         r   Ú__add__zPrimePoint.__add__|  sø   € ð •HÒÐØˆKØ•8ÒÐØˆLØŒz˜Uœ[Ò(Ð(Ð(Ð(ØŒ6�U”WÒÐØ”˜œÑ  D¤J¤LÑ0°AÒ5Ð5Ý�à—{’{‘}”}Ð$àŒJŒLˆàŒw˜œÑ¥;¨u¬w¸¼Ñ/?ÀÑ#CÔ#CÑCÀqÑHˆà�2‰g˜œÑ ¤Ñ(¨AÑ-ˆØ�D”F˜R‘KÑ  4¤6Ñ)¨QÑ.ˆå˜$œ* b¨"Ñ-Ô-Ð-r   c                 óž  — d„ }|}| j         r
|| j         z  }|dk    rt          S | t          k    rt          S |dk    sJ ‚d|z  }t          | j        | j        | j         | j         ¦  «        } ||¦  «        dz  }| }|dk    rM|                     ¦   «         }||z  dk    r||z  dk    r|| z   }||z  dk    r||z  dk    r||z   }|dz  }|dk    °M|S )ú�
        :param other:
            An integer to multiple the Point by

        :return:
            A PrimePoint object
        c                 óB   — | dk    sJ ‚d}|| k    rd|z  }|| k    °|dz  S )Nr   r   é   rª   )rW   Úresults     r   Úleftmost_bitz(PrimePoint.__mul__.<locals>.leftmost_bit¤  s;   € Ø�q’5�5�5�5ØˆFØ˜A’+�+Ø˜V™�ð ˜A’+�+à˜Q‘;Ðr   r   r   rº   r   )rF   r­   r…   rI   rW   rX   r³   )rŸ   r°   r¼   ÚeÚe3Únegative_selfÚir»   s           r   Ú__mul__zPrimePoint.__mul__›  s  € ð	ð 	ð 	ð ˆØŒ:ð 	Ø�D”J‘ˆAØ�Š6ˆ6ÝˆOØ•8ÒÐÝˆOØ�1Šuˆuˆuˆuð �‰UˆÝ" 4¤:¨t¬v¸¼°wÀÄ
ÑKÔKˆØˆL˜ÑÔ Ñ!ˆØˆà�!ŠeˆeØ—]’]‘_”_ˆFØ�Q‘˜1Š}ˆ} ! a¡%¨A¢ Ø $™�Ø�Q‘˜1Š}ˆ} ! a¡%¨A¢ Ø -Ñ/�à�Q‘ˆAð �!Šeˆeð ˆr   c                 ó   — | |z  S )r¸   rª   r¯   s     r   Ú__rmul__zPrimePoint.__rmul__Æ  s   € ð �e‰|Ðr   c                 ó  — | j         j        }| j         j        }d| j        z  | j        z  |z   t	          d| j        z  |¦  «        z  |z  }||z  d| j        z  z
  |z  }|| j        |z
  z  | j        z
  |z  }t          | j         ||¦  «        S )zS
        :return:
            A PrimePoint object that is twice this point
        r   rº   )rI   r“   r’   rW   ru   rX   r…   )rŸ   r“   r’   r´   r¤   rµ   s         r   r³   zPrimePoint.doubleÑ  s�   € ð ŒJŒLˆØŒJŒLˆà�4”6‰z˜DœFÑ" QÑ&­+°a¸$¼&±jÀ!Ñ*DÔ*DÑDÈÑIˆà�2‰g˜˜DœF™
Ñ" aÑ'ˆØ�D”F˜R‘KÑ  4¤6Ñ)¨QÑ.ˆå˜$œ* b¨"Ñ-Ô-Ð-r   r   )
r¦   r§   r¨   r©   r    r±   r¶   rÁ   rÃ   r³   rª   r   r   r…   r…   M  s~   € € € € € ðð ð5ð 5ð 5ð 5ð:ð ð ð.ð .ð .ð>)ð )ð )ðV	ð 	ð 	ð.ð .ð .ð .ð .r   r…   l   ÿÿÿÿïÿÿÿÿÿÿÿÿéýÿÿÿl   ±9�³{ÆuŸ†DÜjôSg9–g(Bl   þö+ø' 1tÐ:�_|v!aÀ:@mˆl   Hò<„^ËW]™dZ{cx´ÿW\Iq l   1(¤iÆ&^#aß;æÿÿÿÿÿÿl              Àÿÿÿÿÿÿÿÿ?l   ´«FeY8¢ûwõ-X"PVdÕ/�%ÀPP!-l   !¸"X”!#BXÕtàJ9!'È|û%»V—AÃ-l   4~ 
f¬&Dvè@hº!Íf¿E0m9_qlM/l   =*¸8%éá¸(‹ÿÿÿÿÿÿÿ?l   ÿÿÿÿÿÿ?               @ÿÿ l   K`¤Oøpq^cv
3,ƒe<1ÚUê]>{|RŽ*ìÆZl   –B11e	%:f=K`¾wr�HŽ7g‹HK8ùhkl   õQ~o ²]ìl+fÚUg+<ð)Z?î8óO†?q!ãOl   Q%Æx+ÎOhóbi+}s¼ÿÿÿÿ   @ÿÿ l   ÿÿ       Àÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl   ï*Ø'·#.TÒÚEbc+ÆZ'@=D 1 "( ?7N2Zà_+à“|¹ñS/1fl   ·
ìdáx¢RÃ¥joyU8T(	:Ÿssé"±nèZ‚L÷8kñ&Á"_ÊUl   _Ô!òuR×Ð/‡sX0
@qa×NˆQ�N�B&JÞôxS8KJüEéYë‹	K%Þl l   s)Š«e`g®w’lX_[nÐlv|ÿÿÿÿÿÿÿÿÿÿÿÿÿl#   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿl#    ? VQ(zO†%bï95~cîte1oR{¨VÂÄ;ŒLHw>ÅlÌ-rZE]´"Sr‡&Ga9}*Fl#   f=ËÇxóK¿)H-apY$3^Q‹	ná%kù{;/K!u{4-{Š?$íO‚�d8ÑV1¶lÇ3s:·l#   Pf¢?ÚQôE$XN¨!85aZþÈUÈ½WL9îYLù¹hûzÑf«$Du13otc!û%‘pMxjRr`l#   	dp"z\}[ëzˆ3"näZ;PKÜ#
`ü7ÍrËoÁC†Qôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ);Ú
__future__r   r   r   r   ro   rs   ÚsysÚ r   Ú_asn1r	   r
   r   r   r   r   r   r   r   r   Ú_errorsr   Ú_typesr   r   Úutilr   Úerrorsr   Úversion_infoÚchrr   ÚxrangeÚrangeÚ_backendÚSystemErrorÚ__all__rB   ÚCURVE_EXTRA_BITSr!   r"   r#   r$   r%   ru   rœ   r…   r­   ÚSECP192R1_CURVEÚSECP192R1_BASE_POINTÚSECP224R1_CURVEÚSECP224R1_BASE_POINTÚSECP256R1_CURVErC   ÚSECP384R1_CURVErD   ÚSECP521R1_CURVErE   rª   r   r   ú<module>rÝ      sÞ  ðà RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rà €€€Ø €€€Ø 
€
€
€
à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "àÔ�dÒÐØ€GØ€E€Eðð ð ð ˆ7‰9Œ9€ð ˆ{ÒÐð ˆ+ÐJÑ
KÔ
KÐKðð ð €ð ØØðð €ð ØØðð Ð ð9Cð 9Cð 9Cðx8Hð 8Hð 8Hðv"ð "ð "ðJ~1ð ~1ð ~1ðBr5ð r5ð r5ðj,ð^ ð  ð  ðF#Eð #Eð #Eð #Eð #Eñ #Eô #Eð #EðLT.ð T.ð T.ð T.ð T.ñ T.ô T.ð T.ðp ˆ:�d˜D $Ñ'Ô'€ð �*Ø>ØØ6ñô €ð
 "�zØØ6Ø6Ø>ñ	ô Ð ð �*ØHØØ>ñô €ð
 "�zØØ>Ø>ØHñ	ô Ð ð �*ØRØØFñô €ð
 "�zØØFØFØRñ	ô Ð ð �*ØxØØfñô €ð
 "�zØØfØfØxñ	ô Ð ð �*ð bØð Jñô €ð
 "�zØð Ið Jð bñ	ô Ð Ð Ð r   