
    (ph              	           S r SSKrSSKr\R                  \\4   rS\S\R                  \\4   4S jrS\S\S\S\R                  \   4S	 jr
S\S\S\4S
 jrS\S\S\4S jrg)z0Functions that load and write PEM-encoded files.    N
pem_markerreturnc                 n    [        U [        5      (       d  U R                  S5      n SU -   S-   SU -   S-   4$ )z2
Returns the start and end PEM markers, as bytes.
asciis   -----BEGIN s   -----s	   -----END )
isinstancebytesencode)r   s    :/var/www/html/venv/lib/python3.13/site-packages/rsa/pem.py_markersr      sG    
 j%((&&w/
 	#h.z!H,     contents	pem_startpem_endc              #   R  #    SnSnU R                  5        Ha  nUR                  5       nU(       d  M  XQ:X  a  U(       a  [        SU-  5      eSnSnM<  U(       d  ME  U(       a	  XR:X  a  Sn  OSU;   a  M]  Uv   Mc     U(       d  [        SU-  5      eU(       a  [        SU-  5      eg7f)z7Generator over PEM lines between pem_start and pem_end.FzSeen start marker "%r" twiceT   :zNo PEM start marker "%r" foundzNo PEM end marker "%r" foundN)
splitlinesstrip
ValueError)r   r   r   in_pem_partseen_pem_startlines         r
   
_pem_linesr   &   s      KN##%zz|   !?)!KLLK!N  4?K 4<
; &@ 9IEFF7'ABB s   B%B'c                     [        U [        5      (       d  U R                  S5      n [        U5      u  p#[	        XU5       Vs/ s H  oDPM     nnSR                  U5      n[        R                  " U5      $ s  snf )a  Loads a PEM file.

:param contents: the contents of the file to interpret
:param pem_marker: the marker of the PEM content, such as 'RSA PRIVATE KEY'
    when your file has '-----BEGIN RSA PRIVATE KEY-----' and
    '-----END RSA PRIVATE KEY-----' markers.

:return: the base64-decoded content between the start and end markers.

@raise ValueError: when the content is invalid, for example when the start
    marker cannot be found.

r   r   )r   r   r	   r   r   joinbase64standard_b64decode)r   r   r   r   r   	pem_linespems          r
   load_pemr   S   sp      h&&??7+#J/Y",X'"JK"J$"JIK ((9
C$$S))	 Ls   A6c                 >   [        U5      u  p#[        R                  " U 5      R                  SS5      nU/n[	        S[        U5      S5       H  nXFUS-    nUR                  U5        M     UR                  U5        UR                  S5        SR                  U5      $ )aR  Saves a PEM file.

:param contents: the contents to encode in PEM format
:param pem_marker: the marker of the PEM content, such as 'RSA PRIVATE KEY'
    when your file has '-----BEGIN RSA PRIVATE KEY-----' and
    '-----END RSA PRIVATE KEY-----' markers.

:return: the base64-encoded content between the start and end markers, as bytes.

   
r   r   @   )r   r   standard_b64encodereplacerangelenappendr   )r   r   r   r   b64r   block_startblocks           r
   save_pemr+   n   s     $J/Y

#
#H
-
5
5eS
ACIQC"-+"23 . WS::i  r   )__doc__r   typingUnionstrr   	FlexiTextTupler   Iteratorr   r   r+    r   r
   <module>r4      s    7   LLe$	 v||E5L'A *C *C5 *C5 *CV__UZE[ *CZ*y *i *E *6!u !) ! !r   