Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
dentellaluca Included sha1 routines
Latest commit c44cce0 Jan 16, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/GetCode first commit Oct 8, 2015
src Included sha1 routines Jan 16, 2016 bugfixing Oct 9, 2015
keywords.txt first commit Oct 8, 2015 Included sha1 routines Jan 16, 2016

Arduino TOTP Library

Library to generate Time-based One-Time Passwords.

Implements the Time-based One-Time Password algorithm specified in RFC 6238. Supports different time steps and it's compatible with tokens that uses the same standard (including software ones, like the Google Authenticator app).

Installation & usage:

Install the library using the Library Manager or manually in the \libraries folder of your IDE. This library requires the Cryptosuite library by maniacbug.

First, store your private key into an array:

uint8_t hmacKey[] = {0x4d, 0x79, 0x4c, 0x65, 0x67, 0x6f, 0x44, 0x6f, 0x6f, 0x72};

Then create a new instance of the TOTP class using one of the two available constructors:

TOTP(uint8_t* hmacKey, int keyLength);
TOTP(uint8_t* hmacKey, int keyLength, int timeStep);

The first assumes a timeStep of 30 seconds, value used for example by the Google Authenticator app.

Two methods are available to get a TOTP passcode:

char* getCode(long timeStamp);
char* getCodeFromSteps(long steps);

The first accept a unix timestamp (number of seconds since Epoch), the second the number of "steps" since Epoch (that is seconds / timeStep) and it's useful to get a pool of values.

A demo project:

Thanks to:

You can’t perform that action at this time.