Basic TOTP implementation in C for Arduino
C++ Arduino
Latest commit 39e02fa Feb 23, 2016 @damico Merge pull request #3 from vlee489/patch-1
Fix for compile error by vlee489

README

ARDUINO-OATH-TOKEN
==================

This is a basic Open-Source implementation of a TOTP (compliant with OATH*) code in Arduino.
Basicaly it generates 6 digits OTP based in a EPOCH time stored in a variable called birthTime
There is no time drift. The OTP is updated each 30 seconds.

For HMAC-SHA1 hash this implementation uses the code from Cathedrow / Cryptosuite (https://github.com/Cathedrow/Cryptosuite). 
However a small change was added to sha1.h and sha1.c: The method size_t Sha1Class::writebytes(const uint8_t* data, int length)

For debug purposes the main important functions are printed to serial output.

A picture of a working prototype can be found at: 
https://github.com/damico/ARDUINO-OATH-TOKEN/blob/master/arduino-oath-token-prototype.png

*http://www.openauthentication.org/

For compilation purposes, make sure that you have the following directory structure:

---> ARDUINO-OATH-TOKEN/
---> ---> arduino_oath_token/
---> ---> ---> arduino_oath_token.ino
---> ---> Sha/
---> ---> ---> sha1.cpp  
---> ---> ---> sha1.h 

Also, check you libraries directory inside arduino installation folder. It must contain the Sha folder inside it (the arduino installation folder may have different locations and versions, depending of OS).

---> arduino-1.0.1/
---> ---> libraries/
---> ---> ---> Sha
---> ---> ---> ---> sha1.cpp  
---> ---> ---> ---> sha1.h 

The Sha library folder can be found at https://github.com/Cathedrow/Cryptosuite as mentioned before but change the sha1.cpp and sha1.h by the ones found at https://github.com/damico/ARDUINO-OATH-TOKEN/tree/master/Sha repository.

author: Jose (Ricardo de Oliveira) Damico (jd dot comment at gmail dot com)