#otp #authorisation #lib

no-std bin+lib miniotp

Minimal customisable HOTP and TOTP implementations

5 releases (stable)

2.0.0 Mar 13, 2021
1.2.0 Jul 28, 2020
1.1.0 Mar 28, 2020
1.0.0 Mar 27, 2020
0.1.0 Mar 27, 2020

#20 in #otp

MIT license



A minimal, customisable HOTP and TOTP implementation.

MVP works in #![no_std] mode with default-features = false.



An otp crate that aims for correctness of implementation, while giving the same speed that one would expect.


  • std - on by default; enables use of system time and/or allocations.
  • alloc - off by default; enables use of the alloc crate where allocations are required.
  • only-gauth - you only use google authenticator-valid codes. This disables some features, like setting the length, algorithm, period, or epoch. This is enabled by default.
  • cstr - enables support for creating a code from a AsRef<CStr>; for easier compatibility with noria::DataType::Text(_), or other data bases.
  • base32 - on by default; enables a set of functions related to taking an OTP secret as or into a string.
  • serde - off by default; adds (de)serialisation ability to TOTP and HOTP structs.
  • abomonation_impl - off by default; adds faster, array bytewise (de)serialisation ability to TOTP and HOTP structs.


~183K SLoC