mirror of
https://github.com/esphome/esphome.git
synced 2025-01-07 13:21:44 +01:00
32 lines
783 B
Python
32 lines
783 B
Python
import hashlib
|
|
import unicodedata
|
|
|
|
from esphome.const import ALLOWED_NAME_CHARS
|
|
|
|
|
|
def password_hash(password: str) -> bytes:
|
|
"""Create a hash of a password to transform it to a fixed-length digest.
|
|
|
|
Note this is not meant for secure storage, but for securely comparing passwords.
|
|
"""
|
|
return hashlib.sha256(password.encode()).digest()
|
|
|
|
|
|
def strip_accents(value):
|
|
return "".join(
|
|
c
|
|
for c in unicodedata.normalize("NFD", str(value))
|
|
if unicodedata.category(c) != "Mn"
|
|
)
|
|
|
|
|
|
def friendly_name_slugify(value):
|
|
value = (
|
|
strip_accents(value)
|
|
.lower()
|
|
.replace(" ", "-")
|
|
.replace("_", "-")
|
|
.replace("--", "-")
|
|
.strip("-")
|
|
)
|
|
return "".join(c for c in value if c in ALLOWED_NAME_CHARS)
|