RFC 6238にはTOTPの桁数は規定されていないし参考の実装は8桁を生成しているように見える
TOTP: Time-Based One-Time Password Algorithm
https://datatracker.ietf.org/doc/html/rfc6238
RFC 4226ではHOTPを6桁以上と規定して数字のみが望ましいとしてる
https://datatracker.ietf.org/doc/html/rfc4226#section-4
この例からいろいろQRコードを作ってIIJ SmartKeyに登録してみました。世の中のTOTPはだいたい6桁か8桁ぽい。
https://github.com/google/google-authenticator/wiki/Key-Uri-Format#examples
左から、桁数指定なし(6桁になった)
$ echo -n 'otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example' | qrencode -o qr.png
digits=8を指定(8桁になった。こんな狭いの初めてみた!!)
$ echo -n 'otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&digits=8' | qrencode -o qr.png
digits=10を指定(QR code scan errorと表示して登録しない)
$ echo -n 'otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&digits=10' | qrencode -o qr.png
この他、digits=6だと6桁として登録でき、digits=7も登録しないようです。