TOTP – Libreria per Arduino

Descrizione

La libreria TOTP (Time-based One Time Password) per Arduino implementa l’algoritmo descritto nella RFC 6238 per la generazione di codici OTP basati sull’orario.

In particolare viene generato un nuovo codice ogni 30 secondi partendo da una password (shared secret) e dal valore attuale di timestamp (= numero di secondi trascorsi dal giorno 01/01/1970, definito Epoch).

Questi codici OTP sono comunemente utilizzati per accedere a siti web, applicazioni bancarie… e vengono generati utilizzando dei token, che possono essere hardware oppure software

Installazione

La libreria può essere facilmente installata utilizzando il Library Manager dell’IDE (menu Sketch – Include Library – Manage Libraries…):

totp-library2

In alternativa è possibile scaricare l’ultima release da Github e installarla manualmente.

Utilizzo

Definire la password e istanziare l’oggetto TOTP passando al suo costruttore il puntatore alla password e la sua lunghezza:

uint8_t hmacKey[] = {0x4d, 0x79, 0x4c, 0x65, 0x67, 0x6f, 0x44, 0x6f, 0x6f, 0x72};
TOTP totp = TOTP(hmacKey, 10);

Per convertire la password in un byte array è possibile utilizzare la seguente pagina web:

http://www.lucadentella.it/OTP

che visualizza anche la password in formato base32 e come QRCode per la configurazione dell’applicazione Google Authenticator:

Per ottenere un codice, invocare il metodo getCode() passando il valore di timestamp attuale:

char* newCode = totp.getCode(timeStamp);

Il valore di timestamp può essere ottenuto da un RTC (real-time clock) quale l’integrato DS1307 di Maxim.

Un mio progetto che utilizza questa libreria è Serratura OTP

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi