[](https://travis-ci.org/naim94a/otp)
**libotp** implements RFC4226 and RFC6238.
These RFCs are implemented by Google's Google Authenticator.
OTP can increases the security for various things, such as web services, servers and even private computers.
## How OTP works
A secret is shared between the client and a device.
Passwords are generated based on the shared secret.
It is possible to work in two modes:
1. Counter based - The OTP is generated with a counter that is increased on each successful attempt.
2. Time based - The OTP is generated based on time. Codes are valid for a pre-configured amount of time.
## Features
* HTOP - HMAC One-Time-Password generation ([RFC4226](https://tools.ietf.org/html/rfc4226)).
* Configurable HMAC - SHA1, SHA256 or SHA512.
* TOTP - Time based One-Time-Password generation ([RFC6238](https://tools.ietf.org/html/rfc6238)).
* Configurable time step, RFC recommended is 30 seconds.
* Configurable T0 (start time).