python-inema/inema/utils.py

26 lines
901 B
Python

# SPDX-Identifier: LGPL-3.0-or-later
import hashlib
from datetime import datetime
from pytz import timezone
def compute_1c4a_hash(partner_id, req_ts, key_phase, key):
"""Compute 1C4A request hash according to Section 4 of service description."""
# trim leading and trailing spaces of each argument
partner_id = partner_id.strip()
req_ts = req_ts.strip()
key_phase = key_phase.strip()
key = key.strip()
# concatenate with "::" separator
inp = "%s::%s::%s::%s" % (partner_id, req_ts, key_phase, key)
# compute MD5 hash as 32 hex nibbles
md5_hex = hashlib.md5(inp.encode('utf8')).hexdigest()
# return the first 8 characters
return md5_hex[:8]
def gen_timestamp():
"""Compute a timestamp as used in the 1C4A and WaPoInt APIs."""
de_zone = timezone("Europe/Berlin")
de_time = datetime.now(de_zone)
return de_time.strftime("%d%m%Y-%H%M%S")