Ë
    ìU.jýO  ã                   óê   — d dl Z d dlmZ d dlmZ d dl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mZmZ dZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZ  G d„ de!«      Z" G d„ de#«      Z$ G d„ de#«      Z%y)é    N)ÚHash)ÚRandom)ÚDerSequenceÚDerOctetStringÚDerObjectIdÚ
DerInteger)ÚAES)ÚpadÚunpad)ÚPBKDF1ÚPBKDF2Úscryptz1.2.840.113549.1.5.3z1.2.840.113549.1.5.6z1.2.840.113549.1.5.10z1.2.840.113549.1.5.11z1.2.840.113549.1.5.13z1.2.840.113549.1.5.12z1.3.6.1.4.1.11591.4.11z1.2.840.113549.2.7z1.2.840.113549.3.7z2.16.840.1.101.3.4.1.2z2.16.840.1.101.3.4.1.22z2.16.840.1.101.3.4.1.42z2.16.840.1.101.3.4.1.6z2.16.840.1.101.3.4.1.26z2.16.840.1.101.3.4.1.46c                   ó   — e Zd Zy)Ú	PbesErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úQC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\Crypto/IO/_PBES.pyr   r   C   s   „ Ør   r   c                   ó    — e Zd ZdZed„ «       Zy)ÚPBES1z¼Deprecated encryption scheme with password-based key derivation
    (originally defined in PKCS#5 v1.5, but still present in `v2.0`__).

    .. __: http://www.ietf.org/rfc/rfc2898.txt
    c                 óR  — t        «       j                  | «      }t        «       j                  |d   «      }t        «       j                  |d   «      j                  }t	        «       j                  |d   «      j
                  }i }|t        k(  rddlm} ddl	m
} |}	|}
nc|t        k(  rddlm} ddl	m} |}	|}
d|d<   nD|t        k(  rddlm} ddl	m
} |}	|}
n*|t        k(  rddlm} ddl	m} |}	|}
d|d<   nt!        d	«      ‚t        «       j                  |d   d
¬«      }t        «       j                  |d   «      j                  }|d   }t#        ||d||	«      }|dd |dd }} |
j$                  ||
j&                  |fi |¤Ž}|j)                  |«      }t+        ||j,                  «      S )ax  Decrypt a piece of data using a passphrase and *PBES1*.

        The algorithm to use is automatically detected.

        :Parameters:
          data : byte string
            The piece of data to decrypt.
          passphrase : byte string
            The passphrase to use for decrypting the data.
        :Returns:
          The decrypted data, as a binary string.
        r   é   )ÚMD5)ÚDES)ÚARC2é@   Úeffective_keylen)ÚSHA1zUnknown OID for PBES1é   ©Únr_elementsé   Né   )r   Údecoder   Úpayloadr   ÚvalueÚ_OID_PBE_WITH_MD5_AND_DES_CBCÚCrypto.Hashr   ÚCrypto.Cipherr   Ú_OID_PBE_WITH_MD5_AND_RC2_CBCr   Ú_OID_PBE_WITH_SHA1_AND_DES_CBCr    Ú_OID_PBE_WITH_SHA1_AND_RC2_CBCr   r   ÚnewÚMODE_CBCÚdecryptr   Ú
block_size)ÚdataÚ
passphraseÚenc_private_key_infoÚencrypted_algorithmÚencrypted_dataÚpbe_oidÚcipher_paramsr   r   ÚhashmodÚmoduler   r    Ú
pbe_paramsÚsaltÚ
iterationsÚkey_ivÚkeyÚivÚcipherÚpts                        r   r1   zPBES1.decrypt„   s   € ô  +›}×3Ñ3°DÓ9ÐÜ)›m×2Ñ2Ð3GÈÑ3JÓKÐÜ'Ó)×0Ñ0Ð1EÀaÑ1HÓI×QÑQˆä“-×&Ñ&Ð':¸1Ñ'=Ó>×DÑDˆØˆØÔ3Ò3å'Ý)ØˆGØ‰FØÔ5Ò5å'Ý*ØˆGØˆFØ02ˆMÐ,Ò-ØÔ6Ò6å(Ý)ØˆGØ‰FØÔ6Ò6å(Ý*ØˆGØˆFØ02ˆMÐ,Ò-äÐ3Ó4Ð4ä “]×)Ñ)Ð*=¸aÑ*@ÈaÐ)ÓPˆ
ÜÓ×&Ñ& z°!¡}Ó5×=Ñ=ˆØ ‘]ˆ
ä˜
 D¨"¨j¸'ÓBˆØ˜˜!�*˜f Q R˜jˆRˆà�—‘˜C §¡°"ÑF¸ÑFˆØ�^‰^˜NÓ+ˆÜ�R˜×*Ñ*Ó+Ð+r   N)r   r   r   Ú__doc__Ústaticmethodr1   r   r   r   r   r   }   s   „ ñð ñ:,ó ñ:,r   r   c                   ó2   — e Zd ZdZedd„«       Zed„ «       Zy)ÚPBES2z‡Encryption scheme with password-based key derivation
    (defined in `PKCS#5 v2.0`__).

    .. __: http://www.ietf.org/rfc/rfc2898.txt.Nc                 ó	  — |€i }|€t        j                  «       j                  }t        j                  d«      }|j                  |«      }|€t        d|z  «      ‚|j                  d«      r%d}|j                  d«      }|j                  d«      }	nd}|j                  d«      }	d}
|	d	k(  r(d
dl	m
} d}|}|j                  }t        }d |d«      i}�n(|	dk(  r)d}t        }t        j                  }t        }d |d«      i}nú|	dk(  r)d}t        }t        j                  }t        }d |d«      i}nÌ|	dk(  r)d}t        }t        j                  }t         }d |d«      i}nž|	dk(  r+d}t        }t        j"                  }t$        }d |d«      i}d}
nn|	dk(  r+d}t        }t        j"                  }t&        }d |d«      i}d}
n>|	dk(  r+d}t        }t        j"                  }t(        }d |d«      i}d}
nt        d|	z  «      ‚t+        |j-                  «       «      d
   } ||j/                  dd«      «      }|dk(  rÆ|j/                  dd«      }t1        j                  «      }t3        |||||¬«      }t5        t7        |«      t9        |«      g«      }|dk7  rP	 t0        j:                  j                  d |¬!«      j<                  }|jA                  t5        tC        |«      g«      «       t5        tC        tD        «      |g«      }n´|dk(  r’|j/                  dd#«      }|j/                  d$d«      }|j/                  d%d&«      }tG        ||||||«      }t5        tC        tH        «      t5        t7        |«      t9        |«      t9        |«      t9        |«      g«      g«      }nt        d'|j                  d&«      z   «      ‚ |j                  ||fi |¤Ž}|
r|jK                  | «      \  }}||z   }n%|jM                  tO        | |jP                  «      «      }t5        tC        |«      t7        |«      g«      }t5        t5        tC        tR        «      t5        ||g«      g«      t7        |«      g«      } | jU                  «       S # t>        $ r t        d"«      ‚w xY w)(a¦	  Encrypt a piece of data using a passphrase and *PBES2*.

        :Parameters:
          data : byte string
            The piece of data to encrypt.
          passphrase : byte string
            The passphrase to use for encrypting the data.
          protection : string
            The identifier of the encryption algorithm to use.
            The default value is '``PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC``'.
          prot_params : dictionary
            Parameters of the protection algorithm.

            +------------------+-----------------------------------------------+
            | Key              | Description                                   |
            +==================+===============================================+
            | iteration_count  | The KDF algorithm is repeated several times to|
            |                  | slow down brute force attacks on passwords    |
            |                  | (called *N* or CPU/memory cost in scrypt).    |
            |                  |                                               |
            |                  | The default value for PBKDF2 is 1 000.        |
            |                  | The default value for scrypt is 16 384.       |
            +------------------+-----------------------------------------------+
            | salt_size        | Salt is used to thwart dictionary and rainbow |
            |                  | attacks on passwords. The default value is 8  |
            |                  | bytes.                                        |
            +------------------+-----------------------------------------------+
            | block_size       | *(scrypt only)* Memory-cost (r). The default  |
            |                  | value is 8.                                   |
            +------------------+-----------------------------------------------+
            | parallelization  | *(scrypt only)* CPU-cost (p). The default     |
            |                  | value is 1.                                   |
            +------------------+-----------------------------------------------+


          randfunc : callable
            Random number generation function; it should accept
            a single integer N and return a string of random data,
            N bytes long. If not specified, a new RNG will be
            instantiated from ``Crypto.Random``.

        :Returns:
          The encrypted data, as a binary string.
        z5^(PBKDF2WithHMAC-([0-9A-Z-]+)|scrypt)And([0-9A-Z-]+)$zUnknown protection %sÚPBKDFÚpbkdf2r!   é   r   FzDES-EDE3-CBCr   ©ÚDES3é   rA   r%   z
AES128-CBCr$   z
AES192-CBCz
AES256-CBCé    z
AES128-GCMÚnonceé   Tz
AES192-GCMz
AES256-GCMzUnknown encryption mode '%s'Ú	salt_sizeÚiteration_countiè  ©Úhmac_hash_moduler    r   )Ú	digestmodzNo OID for HMAC hash algorithmi @  r2   Úparallelizationr   zUnknown KDF )+r   r/   ÚreadÚreÚcompileÚmatchÚ
ValueErrorÚ
startswithÚgroupr+   rM   r0   Ú_OID_DES_EDE3_CBCr	   Ú_OID_AES128_CBCÚ_OID_AES192_CBCÚ_OID_AES256_CBCÚMODE_GCMÚ_OID_AES128_GCMÚ_OID_AES192_GCMÚ_OID_AES256_GCMÚlistÚvaluesÚgetr   r   r   r   r   ÚHMACÚoidÚKeyErrorÚappendr   Ú_OID_PBKDF2r   Ú_OID_SCRYPTÚencrypt_and_digestÚencryptr
   r2   Ú
_OID_PBES2Úencode)!r3   r4   Ú
protectionÚprot_paramsÚrandfuncÚpatternÚresÚpbkdfÚpbkdf2_hmac_algoÚenc_algoÚaeadrM   Úkey_sizer;   Úcipher_modeÚenc_oidÚ	enc_paramÚiv_noncer=   ÚcountrV   r@   Úpbkdf2_paramsÚhmac_oidÚkdf_infoÚscrypt_rÚscrypt_prB   ÚctÚtagr7   Úenc_infor5   s!                                    r   rq   zPBES2.encryptÈ   s�  € ð^ ÐØˆKàÐÜ—z‘z“|×(Ñ(ˆHä—*‘*ÐUÓVˆØ�m‰m˜JÓ'ˆØˆ;ÜÐ4°zÑAÓBÐBà× Ñ  Ô)ØˆEØ"Ÿy™y¨›|ÐØ—y‘y “|‰HàˆEØ—y‘y “|ˆHàˆØ�~Ò%Ý*ØˆHØˆFØŸ-™-ˆKÜ'ˆGØ™x¨›{Ð+ŠIØ˜Ò%ØˆHÜˆFÜŸ,™,ˆKÜ%ˆGØ™x¨›|Ð,‰IØ˜Ò%ØˆHÜˆFÜŸ,™,ˆKÜ%ˆGØ™x¨›|Ð,‰IØ˜Ò%ØˆHÜˆFÜŸ,™,ˆKÜ%ˆGØ™x¨›|Ð,‰IØ˜Ò%ØˆHÜˆFÜŸ,™,ˆKÜ%ˆGØ ¡(¨2£,Ð/ˆIØ‰DØ˜Ò%ØˆHÜˆFÜŸ,™,ˆKÜ%ˆGØ ¡(¨2£,Ð/ˆIØ‰DØ˜Ò%ØˆHÜˆFÜŸ,™,ˆKÜ%ˆGØ ¡(¨2£,Ð/ˆIØ‰DäÐ;¸hÑFÓGÐGä˜	×(Ñ(Ó*Ó+¨AÑ.ˆÙ˜Ÿ™¨°QÓ7Ó8ˆð �HÒà—O‘OÐ$5°tÓ<ˆEÜŸ™Ð!1Ó2ˆIä˜ØØ!ØØ*3ô	5ˆCô (Ü .¨tÓ 4Ü *¨5Ó 1ð)ó ˆMð
   6Ò)ðGÜ#Ÿy™yŸ}™}¨S¸I˜}ÓF×JÑJ�Hð ×$Ñ$¤[´+¸hÓ2GÐ1HÓ%IÔJä"Ü¤Ó,Ø!ð$ó ‰Hð
 �hÒà—O‘OÐ$5°uÓ=ˆEØ"—‘ |°QÓ7ˆHØ"—‘Ð'8¸!Ó<ˆHÜ˜ T¨8Ø ¨(ó4ˆCä"Ü¤Ó,ÜÜ& tÓ,Ü" 5Ó)Ü" 8Ó,Ü" 8Ó,ð	!ó ð$ó ‰Hô ˜^¨c¯i©i¸«lÑ:Ó;Ð;ð �—‘˜C Ñ:°	Ñ:ˆÙØ×/Ñ/°Ó5‰GˆB�Ø #™X‰Nà#Ÿ^™^¬C°°f×6GÑ6GÓ,HÓIˆNÜÜ˜GÓ$Ü˜xÓ(ð 
ó ˆô  +äÜœJÓ'ÜØØðó ðó ô ˜>Ó*ð
,
ó 
 Ðð $×*Ñ*Ó,Ð,øôk  ò GÜ$Ð%EÓFÐFðGús   Ê+Q+ Ñ+R c                 óÚ	  — t        «       j                  | d¬«      }t        «       j                  |d   «      }t        «       j                  |d   «      j                  }t	        «       j                  |d   «      j
                  }|t        k7  rt        d«      ‚t        «       j                  |d   d¬«      }t        «       j                  |d   d¬«      }t	        «       j                  |d   «      j
                  }d}	|t        k(  r¿t        «       j                  |d   d¬«      }
t        «       j                  |
d   «      j                  }|
d   }t        |
«      dz
  }d}|dkD  r	 |
|   dz
  }	|dz  }|dz  }t        }|dkD  rÉt        «       j                  |
|   «      }t	        «       j                  |d   «      j
                  }n†|t        k(  rrt        «       j                  |d   d¬«      }t        «       j                  |d   «      j                  }d	D �cg c]  }||   ‘Œ	 c}\  }}}t        |«      d
kD  r|d
   }	nd}	nt        d«      ‚t        «       j                  |d   «      }t	        «       j                  |d   «      j
                  }d}|t        k(  rddlm} |}|j                   }d}d}nì|t"        k(  rt$        }t$        j                   }d}d}nÈ|t&        k(  rt$        }t$        j                   }d}d}n¤|t(        k(  rt$        }t$        j                   }d}d}n€|t*        k(  rt$        }t$        j,                  }d}d}d}nZ|t.        k(  rt$        }t$        j,                  }d}d}d}n4|t0        k(  rt$        }t$        j,                  }d}d}d}nt        d|z   «      ‚|	r|	|k7  rt        d«      ‚t        «       j                  |d   «      j                  }|t        k(  rD	 t2        j4                  j6                     }t3        j:                  |«      }t=        |||||¬«      } nt?        ||||«      }  |j:                  | |fi ||i¤Ž}!t        |«      |!j@                  k  rtC        d«      ‚|r(|!j@                  }"|!jE                  |d|"  ||" d «      }#|#S |!jG                  |«      }$tI        |$|!j@                  «      }#|#S # t        $ r Y �ŒSw xY wc c}w # t8        $ r t        dz  «      ‚w xY w)ax  Decrypt a piece of data using a passphrase and *PBES2*.

        The algorithm to use is automatically detected.

        :Parameters:
          data : byte string
            The piece of data to decrypt.
          passphrase : byte string
            The passphrase to use for decrypting the data.
        :Returns:
          The decrypted data, as a binary string.
        r!   r"   r   r   zNot a PBES2 objectN)r!   rK   é   )rŒ   é   )r   r!   rK   rŒ   zUnsupported PBES2 KDFFrL   rN   rA   r$   rO   rP   TzUnsupported PBES2 cipher z9Mismatch between PBES2 KDF parameters and selected cipherzUnsupported HMAC %srT   zToo little data to decrypt)%r   r&   r   r'   r   r(   rr   r   rn   ÚlenÚ	TypeErrorÚ_OID_HMAC_SHA1ro   r_   r+   rM   r0   r`   r	   ra   rb   rd   rc   re   rf   r   rj   Ú_hmac2hash_oidrl   r/   r   r   r2   r\   Údecrypt_and_verifyr1   r   )%r3   r4   r5   r{   r7   r8   Úpbes2_paramsr…   Úkdf_oidÚkdf_key_lengthrƒ   r=   rS   ÚleftÚidxÚpbkdf2_prf_oidÚpbkdf2_prf_algo_idÚscrypt_paramsÚxr†   r‡   rŠ   r   r|   rM   r;   r~   r}   Úcipher_paramr�   Úhmac_hash_module_oidrU   r@   rB   Útag_lenrC   Ú	pt_paddeds%                                        r   r1   zPBES2.decryptŠ  s   € ô  +›}×3Ñ3°DÀaÐ3ÓHÐÜ“=×'Ñ'Ð(<¸QÑ(?Ó@ˆÜ'Ó)×0Ñ0Ð1EÀaÑ1HÓI×QÑQˆä“-×&Ñ& x°¡{Ó3×9Ñ9ˆØ”jÒ ÜÐ0Ó1Ð1ä"“}×+Ñ+¨H°Q©KÀQÐ+ÓGˆô “=×'Ñ'¨°Q©ÀQÐ'ÓGˆÜ“-×&Ñ& x°¡{Ó3×9Ñ9ˆàˆð ”kÒ!ä'›M×0Ñ0°¸!±È)Ð0ÓTˆMÜ!Ó#×*Ñ*¨=¸Ñ+;Ó<×DÑDˆDØ+¨AÑ.ˆOä�}Ó%¨Ñ)ˆDØˆCà�aŠxðà%2°3Ñ%7¸!Ñ%;�NØ˜A‘I�DØ˜1‘H�Cô ,ˆNØ�aŠxÜ%0£]×%9Ñ%9¸-ÈÑ:LÓ%MÐ"Ü!,£×!5Ñ!5Ð6HÈÑ6KÓ!L×!RÑ!R‘àœÒ#ä'›M×0Ñ0°¸!±È&Ð0ÓQˆMÜ!Ó#×*Ñ*¨=¸Ñ+;Ó<×DÑDˆDá<Eó3GÙ<E°qð 4AÀÓ3CØ<Eñ3GÑ/ˆO˜X xä�=Ó! AÒ%Ø!.¨qÑ!1‘à!%‘äÐ3Ó4Ð4ô “=×'Ñ'¨°Q©Ó8ˆÜ“-×&Ñ& x°¡{Ó3×9Ñ9ˆàˆØÔ'Ò'å*ØˆFØŸ-™-ˆKØˆHØ‰LØœÒ'ÜˆFÜŸ,™,ˆKØˆHØ‰LØœÒ'ÜˆFÜŸ,™,ˆKØˆHØ‰LØœÒ'ÜˆFÜŸ,™,ˆKØˆHØ‰LØœÒ'ÜˆFÜŸ,™,ˆKØˆHØ"ˆLØ‰DØœÒ'ÜˆFÜŸ,™,ˆKØˆHØ"ˆLØ‰DØœÒ'ÜˆFÜŸ,™,ˆKØˆHØ"ˆLØ‰DäÐ7¸(ÑBÓCÐCá˜n°Ò8Üð 3ó 4ð 4ô "Ó#×*Ñ*¨8°A©;Ó7×?Ñ?ˆð ”kÒ!ðHÜ'+§y¡y×'?Ñ'?ÀÑ'OÐ$ô  $Ÿx™xÐ(<Ó=Ðä˜ T¨8°_Ø*:ô<‰Cô ˜ T¨8°_Ø! 8ó-ˆCà�—‘˜C ÑH°¸hÐ0GÑHˆô ˆ~Ó ×!2Ñ!2Ò2ÜÐ9Ó:Ð:áØ×'Ñ'ˆGØ×*Ñ*¨>¸)¸G¸8Ð+DØ+9¸7¸(¸)Ð+DóFˆBð ˆ	ð Ÿ™ ~Ó6ˆIÜ�y &×"3Ñ"3Ó4ˆBàˆ	øôS !ò âðüò3GøôH ò HÜÐ 5¸Ñ FÓGÐGðHús$   Å$R= ÈSÏS Ò=	S
Ó	S
ÓS*)NN)r   r   r   rD   rE   rq   r1   r   r   r   rG   rG   Â   s4   „ ñ3ð
 ò-ó ð-ðB ñWó ñWr   rG   )&rY   ÚCryptor   r   ÚCrypto.Util.asn1r   r   r   r   r+   r	   ÚCrypto.Util.Paddingr
   r   ÚCrypto.Protocol.KDFr   r   r   r)   r,   r-   r.   rr   rn   ro   r�   r_   r`   ra   rb   rd   re   rf   r\   r   Úobjectr   rG   r   r   r   Ú<module>r¥      s£   ðóD 
å Ý ÷ó õ
 ß *ß 6Ñ 6à 6Ð Ø 6Ð Ø!8Ð Ø!8Ð à$€
à%€Ø&€à%€à(Ð Ø*€Ø+€Ø+€Ø*€Ø+€Ø+€ô	�
ô 	ôtB,ˆFô B,ôJ`ˆFõ `r   