OwlCyberSecurity - MANAGER
Edit File: hashers.cpython-39.pyc
a ���e�q � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl m Z d dlmZ d dl mZ d dlmZmZmZmZmZ d dlmZmZ d dlmZ d d lmZ d ZdZdd � Zd;dd�Z d<dd�Z!ej"dd� �Z#ej"dd� �Z$ee�dd� �Z%d=dd�Z&dd� Z'd>dd �Z(d!d"� Z)G d#d$� d$�Z*G d%d&� d&e*�Z+G d'd(� d(e+�Z,G d)d*� d*e*�Z-G d+d,� d,e*�Z.G d-d.� d.e.�Z/G d/d0� d0e*�Z0G d1d2� d2e*�Z1G d3d4� d4e*�Z2G d5d6� d6e*�Z3G d7d8� d8e*�Z4G d9d:� d:e*�Z5dS )?� N)�settings)�ImproperlyConfigured)�setting_changed)�receiver)�RANDOM_STRING_CHARS�constant_time_compare�get_random_string�md5�pbkdf2)�RemovedInDjango50Warning�RemovedInDjango51Warning)� import_string)�gettext_noop�!�( c C s | du p| � t� S )zv Return True if this password wasn't generated by User.set_unusable_password(), i.e. make_password(None). N)� startswith�UNUSABLE_PASSWORD_PREFIX)�encoded� r �\/home/gouroczh/virtualenv/pat/3.9/lib/python3.9/site-packages/django/contrib/auth/hashers.py�is_password_usable s r �defaultc C s� | du st |�sdS t|�}zt|�}W n ty< Y dS 0 |j|jk}|pV|�|�}|�| |�}|s||s||r||�| |� |r�|r�|r�|| � |S )z� Return a boolean of whether the raw password matches the three part encoded digest. If setter is specified, it'll be called when you need to regenerate the password. NF)r � get_hasher�identify_hasher� ValueError� algorithm�must_update�verify�harden_runtime)�passwordr �setter� preferred�hasherZhasher_changedr Z is_correctr r r �check_password&