
    VeIi                         d dl Z d dlmZ d dlmZmZmZ d dlmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ d ed          fdedee         defdZd ed          fdedee         defdZdedefdZdS )    N)split)AnyDictSequence)	parse_qslunquoteurlparse   )contrib)random)HOTP)OTP)TOTP     ABCDEFGHIJKLMNOPQRSTUVWXYZ234567lengthcharsreturnc                     | dk     rt          d          d                    fdt          |           D                       S )Nr   #Secrets should be at least 160 bits c              3   @   K   | ]}t          j                  V  d S )N)r   choice).0_r   s     S/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/pyotp/__init__.py	<genexpr>z random_base32.<locals>.<genexpr>   s-      ??A6=''??????    )
ValueErrorjoinranger   r   s    `r   random_base32r#      sJ     {{>???77????v??????r   (   ABCDEF0123456789c                 N    | dk     rt          d          t          | |          S )Nr$   r   r"   )r   r#   r"   s     r   
random_hexr'      s-    {{>???e4444r   uric                    d}d}d}i }t          t          |                     }|j        dk    rt          d          t	          d|j        dd         d          }t          |          dk    r|d         |d<   n|d         |d	<   |d         |d<   t          |j                  D ]\  }}|d
k    r|}|d	k    r-d	|v r#|d	         |d	         |k    rt          d          ||d	<   B|dk    rQ|dk    rt          j
        |d<   ^|dk    rt          j        |d<   t|dk    rt          j        |d<   t          d          |dk    r|}|dk    rt          |          }||d<   |dk    rt          |          |d<   |dk    rt          |          |d<   |dk    r"t          d                    |                    |dk    r||dvrt          d          |st          d          |dk    rt          j        |fi |S |j        dk    rt%          |fi |S |j        dk    rt'          |fi |S t          d           )!z
    Parses the provisioning URI for the OTP; works for either TOTP or HOTP.

    See also:
        https://github.com/google/google-authenticator/wiki/Key-Uri-Format

    :param uri: the hotp/totp URI to parse
    :returns: OTP object
    NotpauthzNot an otpauth URIz:|%3Ar
   )maxsplitr   nameissuersecretzHIf issuer is specified in both label and parameters, it should be equal.	algorithmSHA1digestSHA256SHA512z;Invalid value for algorithm, must be SHA1, SHA256 or SHA512encoderdigitsperiodintervalcounterinitial_countimagez{} is not a valid parametersteam)         zDigits may only be 6, 7, or 8zNo secret found in URItotphotpzNot a supported OTP type)r	   r   schemer   r   pathlenr   queryhashlibsha1sha256sha512intformatr   Steamnetlocr   r   )	r(   r.   r4   r5   otp_data
parsed_uriaccountinfo_partskeyvalues	            r   	parse_urirR      s    F G F  "H '#,,''JI%%-... gzqrr':QGGG
"",Q/.q1,Q/  
 011 H H
U(??FFH__8##(:(F8T\K]afKfKf !klll!&HXK%,\""(""%,^""(""%,^"" !^___IGGH__ZZF!'HXH__#&u::HZ  I(+E

H_%%G^^:AA#FFGGG  '&	"9"9<=== 31222 '}V00x000F""F''h'''		f	$	$F''h'''
/
0
00r   )rE   rer   typingr   r   r   urllib.parser   r   r	   r   r   compatr   r@   r   otpr   r?   r   listrI   strr#   r'   rR    r   r   <module>r[      s|          & & & & & & & & & & 5 5 5 5 5 5 5 5 5 5                               !#44@b;c;c @ @# @8C= @hk @ @ @ @  =O8P8P 5 5s 5 5UX 5 5 5 5Q13 Q13 Q1 Q1 Q1 Q1 Q1 Q1r   