linotp.tokens.totptoken module¶
This file containes the dynamic time based hmac token implementation
- class linotp.tokens.totptoken.TimeHmacTokenClass(aToken)¶
Bases:
HmacTokenClass- autosync(hmac2Otp, anOtpVal)¶
auto - sync the token based on two otp values - internal method to realize the autosync within the checkOtp method
- Parameters:
hmac2Otp (hmac object) – the hmac object (with reference to the token secret)
anOtpVal (string) – the actual otp value
- Returns:
counter or -1 if otp does not exist
- Return type:
int
- checkOtp(anOtpVal, counter, window, options=None)¶
checkOtp - validate the token otp against a given otpvalue
- Parameters:
anOtpVal – the to be verified otpvalue
@type anOtpVal: string
- Parameters:
counter (int) – the counter state, that should be verified
window (int) – the counter +window, which should be checked
options (dict) – the dict, which could contain token specific info
- Returns:
the counter state or -1
- Return type:
int
- check_otp_exist(otp, window=10, user=None, autoassign=False)¶
checks if the given OTP value is/are values of this very token. This is used to autoassign and to determine the serial number of a token.
- Parameters:
otp (string) – the to be verified otp value
window (int) – the lookahead window for the counter
- Returns:
counter or -1 if otp does not exist
- Return type:
int
- classmethod getClassInfo(key=None, ret='all')¶
getClassInfo - returns a subtree of the token definition
- Parameters:
key (string) – subsection identifier
ret (user defined) – default return value, if nothing is found
- Returns:
subsection if key exists or user defined
- Return type:
s.o.
- classmethod getClassPrefix()¶
- classmethod getClassType()¶
getClassType - return the token type shortname
- Returns:
‘totp’
- Return type:
string
- getOtp(curTime=None)¶
get the next OTP value
- Returns:
next otp value
- Return type:
string
- getSyncTimeOut()¶
get the token sync timeout value
- Returns:
timeout value in seconds
- Return type:
int
- get_multi_otp(count=0, epoch_start=0, epoch_end=0, curTime=None)¶
return a dictionary of multiple future OTP values of the HOTP/HMAC token
- Parameters:
count (int) – how many otp values should be returned
- Returns:
tuple of status: boolean, error: text and the OTP dictionary
- get_otp_detail(otp, window='24h')¶
provide information belonging to one otp
- Parameters:
otp – the otp for which the timestamp is searched
window – string, in human readable ‘2h’ or iso8601 format ‘PT2H’
- resync(otp1, otp2, options=None)¶
resync the token based on two otp values - external method to do the resync of the token
- Parameters:
otp1 (string) – the first otp value
otp2 (string) – the second otp value
options (dict or None) – optional token specific parameters
- Returns:
counter or -1 if otp does not exist
- Return type:
int
- resyncDiffLimit = 3¶
- set_new_timeshift(otp_match_counter)¶
calculate and set the new timeshift
- Parameters:
otp_match_counter – the counter that matches the given otp
- time2float(curTime)¶
time2float - convert a datetime object or an datetime string into a float s. http://bugs.python.org/issue12750
- Parameters:
curTime (datetime object) – time in datetime format
- Returns:
time as float
- Return type:
float
- property timeStep¶
- update(param)¶
update - process the initialization parameters
- Parameters:
param (dict) – dict of initialization parameters
- Returns:
nothing
- linotp.tokens.totptoken.counter2time(counter, timeStepping)¶
- linotp.tokens.totptoken.log = <Logger linotp.tokens.totptoken (WARNING)>¶
TOTP Algorithm
This variant of the HOTP algorithm specifies the calculation of a one-time password value, based on a representation of the counter as a time factor.
4.1. Notations
X represents the time step in seconds (default value X = 30
seconds) and is a system parameter;
T0 is the Unix time to start counting time steps (default value is
0, Unix epoch) and is also a system parameter.
4.2. Description
Basically, we define TOTP as TOTP = HOTP(K, T) where T is an integer and represents the number of time steps between the initial counter time T0 and the current Unix time (i.e. the number of seconds elapsed since midnight UTC of January 1, 1970).
More specifically T = (Current Unix time - T0) / X where:
X represents the time step in seconds (default value X = 30
seconds) and is a system parameter;
T0 is the Unix time to start counting time steps (default value is
0, Unix epoch) and is also a system parameter;
The default floor function is used in the computation. For
example, with T0 = 0 and time step X = 30, T = 1 if the current Unix time is 59 seconds and T = 2 if the current Unix time is 60 seconds.
M’Raihi, et al. Expires March 12, 2011 [Page 5]
Internet-Draft HOTPTimeBased September 2010
- linotp.tokens.totptoken.time2counter(T0: Union[float, int], timeStepping: int) int¶