
    Ii
                         S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	J
r
JrJr  S SKJrJrJrJrJr  S SKJrJr  S SKJr   " S S	5      rS
rg)   )Math)RandomInteger)getPemContent	createPem)hexFromByteStringbyteStringFromHex
intFromHexbase64FromByteStringbyteStringFromBase64)
hexFromIntparseencodeConstructedDerFieldTypeencodePrimitive)	secp256k1getByOid)	PublicKeyc                   p    \ rS rSr\S4S jrS rS rS rS r	\
S 5       r\
S	 5       r\
\4S
 j5       rSrg)
PrivateKey
   Nc                 t    Xl         U=(       d$    [        R                  " SUR                  S-
  5      U l        g )Nr   )curver   betweenNsecret)selfr   r   s      >/venv/lib/python3.13/site-packages/ellipticcurve/privateKey.py__init__PrivateKey.__init__   s(    
E 5 5a1 E    c                     U R                   n[        R                  " UR                  U R                  UR
                  UR                  UR                  S9n[        X!S9$ )N)pnr   AP)pointr   )	r   r   multiplyGr   r   r$   r%   r   )r   r   publicPoints      r   	publicKeyPrivateKey.publicKey   sI    

mmggkkgggggg
 {88r    c                 ,    [        U R                  5      $ )N)r   r   )r   s    r   toStringPrivateKey.toString   s    $++&&r    c                    U R                  5       R                  SS9n[        [        [        R
                  S5      [        [        R                  [        U R                  5      5      [        [        R                  [        [        R                  U R                  R                  5      5      [        [        R                  [        [        R                  U5      5      5      n[        U5      $ )NTencodedr   )r*   r-   r   r   r   integeroctetStringr   r   oidContainerobjectr   oidpublicKeyPointContainer	bitStringr   )r   publicKeyStringhexadecimals      r   toDerPrivateKey.toDer   s    ..*33D3A'L00!4L44j6MNL55|GZGZ\`\f\f\j\j7klL@@/R^RhRhjyBz{	
 !--r    c                 P    U R                  5       n[        [        U5      [        S9$ )N)contenttemplate)r;   r   r
   _pemTemplate)r   ders     r   toPemPrivateKey.toPem(   s     jjl!5c!:\RRr    c                 R    [        U[        S9nU R                  [        U5      5      $ )N)pemr?   )r   r@   fromDerr   )clsstringprivateKeyPems      r   fromPemPrivateKey.fromPem,   s#    %&<H{{/>??r    c                    [        U5      n[        U5      S   u  p4pVUS:w  a  [        SR                  US95      e[	        US   5      nU R                  XGS9nUR                  5       R                  SS9US   :w  a  [        S5      eU$ )	N    r   zKPrivate keys should start with a '1' flag, but a '{flag}' was found instead)flag)rH   r   Tr0   zdThe public key described inside the private key file doesn't match the actual public key of the pair)r   r   	Exceptionformatr   
fromStringr*   r-   )	rG   rH   r:   privateKeyFlag	secretHex	curveDatar9   r   
privateKeys	            r   rF   PrivateKey.fromDer1   s    '/@Ek@RST@U=9Qipp# q    1&^^9^B
!**4*8OA<NN  C  D  Dr    c                 (    [        [        U5      US9$ )N)r   r   )r   r	   )rG   rH   r   s      r   rQ   PrivateKey.fromString?   s    F!35AAr    )r   r   )__name__
__module____qualname____firstlineno__r   r   r*   r-   r;   rB   classmethodrJ   rF   rQ   __static_attributes__ r    r   r   r   
   se    &t F	9'.S @ @   &/ B Br    r   zG
-----BEGIN EC PRIVATE KEY-----
{content}
-----END EC PRIVATE KEY-----
N)mathr   utils.integerr   	utils.pemr   r   utils.binaryr   r   r	   r
   r   	utils.derr   r   r   r   r   r   r   r   r*   r   r   r@   r_   r    r   <module>re      s4     ( / v v Z Z &  7B 7Btr    