X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=lib%2Fmudpy%2Fpassword.py;fp=lib%2Fmudpy%2Fpassword.py;h=b6b4be5044b8a0e9c764137794c7b50567574038;hp=bad5579e3557640b73a0e728c4b3e87b5e800409;hb=2a1119763de7805f617d8b62b8f0822969f3d7df;hpb=86ca67c3421f3ea64f60f67f4fd43acb662b2cf7 diff --git a/lib/mudpy/password.py b/lib/mudpy/password.py index bad5579..b6b4be5 100644 --- a/lib/mudpy/password.py +++ b/lib/mudpy/password.py @@ -5,6 +5,13 @@ # to use, copy, modify, and distribute this software is granted under # terms provided in the LICENSE file distributed with this software. +import base64 +import hashlib +import math +import random +import re +import struct + # convenience constants for indexing the supported hashing algorithms, # guaranteed a stable part of the interface MD5 = 0 # hashlib.md5 @@ -20,7 +27,6 @@ def _pack_bytes(numbers): This is a wrapper around struct.pack, used to turn a list of integers between 0 and 255 into a packed sequence akin to a C-style string. """ - import struct packed = b"" for number in numbers: number = int(number) @@ -34,7 +40,6 @@ def _bytes_to_text(byte_sequence): This is a wrapper around base64.b64encode with preferences appropriate for encoding Unix-style passwd hash strings. """ - import base64 return base64.b64encode( byte_sequence, b"./" @@ -50,8 +55,6 @@ def _generate_salt(salt_len=2): need and discard any excess characters over the specified length. This ensures full distribution over each character of the salt. """ - import math - import random salt = [] for i in range(int(math.ceil(salt_len * 0.75))): salt.append(random.randint(0, 255)) @@ -66,7 +69,6 @@ def upgrade_legacy_hash(legacy_hash, salt, sep="$"): facets to this function, a conforming new-style password hash will be returned. """ - import re assert re.match("^[0-9a-f]{32}$", legacy_hash), "Not a valid MD5 hexdigest" collapsed = b"" @@ -126,7 +128,6 @@ def create( create(password, algorithm=SHA256, rounds=12, salt_len=16) """ - import hashlib # if a specific salt wasn't specified, we need to generate one if not salt: @@ -183,7 +184,6 @@ def verify(password, encoded_hash): comes out the same as the encoded_hash. """ sep = encoded_hash[0] - import mudpy.misc algorithm, rounds, salt, hashed = encoded_hash.split(sep)[1:] if encoded_hash == create( password=password,