totp

totp(time-based one-time password)とは、unix時間からotp(one-time password)を作成するalgorithmです。



Uint8Array.toTOTP.js

1. 鍵をデコードしたsecret keyからimportします。
2. counterをunix時間を時間ステップで割って作成します。
3. デジタル署名を鍵とcounterから作成します。
4. デジタル署名から最下位4ビットをindexとした4バイトの値を取得します。
5. 4から符号を外した最下位6桁を取得します。

3-5はhotp(hmac-based one-time password)と同じalgorithmです。

crypto.subtle.importKey
鍵のimport
crypto.subtle.sign
デジタル署名の作成