TOTP Python для функции postgreSQL - PullRequest
0 голосов
/ 22 декабря 2019

У меня есть простой код Python TOTP:

import sys, time, math, hashlib, hmac, struct, base64

def totp_gen(secret, time_range=30, i=0):
  tm = int(time.time() / time_range)
  b = struct.pack(">q", tm + i)
  hm = hmac.HMAC(secret, b, hashlib.sha1).digest()
  offset = ord(hm[-1]) & 0x0F
  truncatedHash = hm[offset:offset + 4]
  code = struct.unpack(">L", truncatedHash)[0]
  code &= 0x7FFFFFFF
  code %= 1000000
  return "%06d" % code

if __name__ == '__main__':
  b32 = 'ABCDEFGHIJKLMNOPQRSTUVWX'
  secret = base64.b32decode(b32)
  print "select totp_verify('ABCDEFGHIJKLMNOPQRSTUVWX', '%s', 0);" \
    % totp_gen(secret)

Я хочу реализовать его как чистую функцию postgres plpgsql, это достижимо?

...