扩展库 / totp

totp

基于 HMAC-SHA1 的一次性验证码。

支持 Base32 密钥、HOTP/TOTP、可配置位数和有界时钟窗口;Windows/Linux 包级 C、XLang 与 AOT 门禁已通过。

2026-10-28 修掉三条接管后的返回复制。C/XLang 各六组预算确认三个生成入口均只需一次最终结果分配,完整 cgen 没有后续正文副本;前导零、实时调用及 Linux 时钟故障回归通过。长度扫描、错误作用域和原生计算仍存在,不宣称整个操作零开销。

API

函数用途
hotp(secret, counter, digits = 6)按计数器生成验证码
generate / generateAt按当前时间或指定 Unix 秒数生成
verify / verifyAt按窗口验证,返回布尔值

xlang

import totp
string secret = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"
string code = totp.generateAt(secret, 59, 30, 8)
assert code == "94287082"
assert totp.verifyAt(secret, code, 59, 30, 8, 0)
string liveCode = totp.generate(secret)
assert totp.verify(secret, liveCode)

C/XLang 对照范例也展示实时生成与验证,只打印布尔结果,不输出动态验证码;固定 RFC 向量继续用于确定性对照。

限流、重放防护和密钥存储由应用负责。合法输入的输出分配失败报内存错误,失败后可重试。实时 C 入口先验证步长、位数和窗口,再读系统时钟;非法参数不会被时钟故障遮蔽。系统时钟故障不会被解释成有效的零时间戳。当前 Windows/Linux 默认门禁均通过严格 C、Linux ASan/UBSan、RFC 向量、线程、语言中央/边界/分配/公开范例独立 EXE 和 C 单文件范例 AOT;固定输出跨 GCC、TCC、XLang 一致。完整参数约束与 C 接口见包内 README。