26 lines
901 B
Python
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")
|