Source code for bbarchivist.escreens
#!/usr/bin/env python3
import hmac
import hashlib
try:
from . import bbconstants # @UnusedImport
except SystemError:
import bbconstants # @UnresolvedImport @Reimport
[docs]def calculate_escreens(pin, app, uptime, duration=30):
"""
Calculate key for the Engineering Screens based on input.
:param pin: PIN to check. 8 character hexadecimal, lowercase.
:type pin: str
:param app: App version. 10.x.y.zzzz.
:type app: str
:param uptime: Uptime in ms.
:type uptime: str
:param duration: 1, 3, 6, 15, 30 (days).
:type duration: str
"""
duration = int(duration)
data = pin.lower() + app + uptime + bbconstants._lifetimes[duration]
newhmac = hmac.new(bbconstants._secret.encode(),
data.encode(),
digestmod=hashlib.sha1)
key = newhmac.hexdigest()[:8]
return key.upper()