관리-도구
편집 파일: hotp.cpython-39.pyc
a �a( � @ s� d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl m Z mZmZ d dl mZ eje eef Zdeeeje ejejeef ed�dd �ZG d d� de�ZdS )� N)�quote� urlencode)� constant_time�hmac)�SHA1�SHA256�SHA512)�InvalidToken�HOTP)�hotp� type_name�account_name�issuer�extra_parameters�returnc C s� d| j fdt�| j�fd| jj�� fg}|d ur>|�d|f� |�|� ||rbdt |�t |�f nt |�t |�d�}djf i |��S )N�digitsZsecret� algorithmr z%s:%s)�typeZlabel� parametersz%otpauth://{type}/{label}?{parameters})�_length�base64Z b32encode�_key� _algorithm�name�upper�append�extendr r �format)r r r r r r Zuriparts� r �S/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py� _generate_uri s � �� r c @ st e Zd Zdeeeejedd�dd�Z eed�dd�Z eedd �d d�Zeed�dd �Ze eeje e d�dd�ZdS )r NT)�key�lengthr �backend�enforce_key_lengthr c C st t |�dk r|du rtd��t|t�s.td��|dk s>|dkrFtd��t|tttf�s^td��|| _|| _ || _ d S ) N� Tz'Key length has to be at least 128 bits.z)Length parameter must be an integer type.� � z(Length of HOTP has to be between 6 to 8.z)Algorithm must be SHA1, SHA256 or SHA512.)�len� ValueError� isinstance�int� TypeErrorr r r r r r )�selfr! r"