def _pack_bytes(numbers):
- """
+ """Make a packed byte sequence:
+
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.
"""
def _bytes_to_text(byte_sequence):
- """
+ """Generate printable representation of 8-bit data:
+
This is a wrapper around base64.b64encode with preferences
appropriate for encoding Unix-style passwd hash strings.
"""
def _generate_salt(salt_len=2):
- """
+ """Generate salt for a password hash:
+
This simply generates a sequence of pseudo-random characters (with
6-bits of effective entropy per character). Since it relies on base64
encoding (which operates on 6-bit chunks of data), we only generate
def upgrade_legacy_hash(legacy_hash, salt, sep="$"):
- """
+ """Upgrade an older password hash:
+
This utility function is meant to provide a migration path for users
of mudpy's legacy account-name-salted MD5 hexdigest password hashes.
By passing the old passhash (as legacy_hash) and name (as salt)
salt_len=2,
sep="$"
):
- """
+ """Generate a password hash:
+
The meat of the module, this function takes a provided password and
generates a Unix-like passwd hash suitable for storage in portable,
text-based data files. The password is prepended with a salt (which
def verify(password, encoded_hash):
- """
+ """Verify a password:
+
This simple function requires a text password and a mudpy-format
password hash (as generated by the create function). It returns True
if the password, hashed with the parameters from the encoded_hash,
def is_enabled(user, telopt, party, state=YES):
- """Returns True if the indicated Telnet option is enabled, False if
- not."""
+ """Indicates whether a specified Telnet option is enabled."""
if (telopt, party) in user.telopts and user.telopts[
(telopt, party)
] is state:
def disable(user, telopt, party):
- """Negotiates disabling a Telnet option for the indicated user's
- socket."""
+ """Negotiates disabling a Telnet option for the user's socket."""
if party is HIM:
txneg = DONT
else: