Hello,
I am trying to generate TOTP tokens using OATHLIB, with the following test
program:
#include <stdio.h>#include <string.h>#include <time.h>#include <liboath/oath.h>
int main(int argc, char *argv[]){ int rc=1; const char*
secret="12345678901234567890123456789011"; size_t secretlen=32; size_t
window=0; unsigned digits=6; char mytoken[10]; time_t now;
rc=oath_init();
if (rc == 0) printf("liboath: %i\n",OATH_OK);
now=time(NULL); rc=oath_totp_generate(secret,
secretlen, now,
OATH_TOTP_DEFAULT_TIME_STEP_SIZE,
OATH_TOTP_DEFAULT_START_TIME, digits,
mytoken); if (rc == 0) printf("Time: %i Token:
%s\n",now,&mytoken);
rc=oath_done();
return 0;}
I compile the program with:cc oath.c -o test1 -loath
However the token generated does not match with the same token using oathtool,
when i use a real token (values above are dummy ones) oathtool returns the
correct value, but the test c program does not. the results:
oathtool -v --totp 12345678901234567890123456789011 ;./test1 Hex secret:
12345678901234567890123456789011Base32 secret:
CI2FM6EQCI2FM6EQCI2FM6EQCE======Digits: 6Window size: 0Step size (seconds):
30Start time: 1970-01-01 00:00:00 UTC (0)Current time: 2016-03-29 08:19:44 UTC
(1459239584)Counter: 0x2E63527 (48641319)
012625liboath: 0Time: 1459239584 Token: 815393
As you can see oathtool time (seconds) 1459239584 matches ok, but the tokens
are different? 012625 verses 815393
Any pointers or help would be most welcome.
Thanks
Derek