You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

37 lines
1.0 KiB

/**
* @file otp.h
*
* @brief One-time-password-related functions.
*
* @copyright The contents of this file have been placed into the public domain;
* see the file COPYING for more details.
*/
#ifndef __CPPTOTP_OTP_H__
#define __CPPTOTP_OTP_H__
#include "bytes.h"
#include "sha1.h"
#include <cstdint>
namespace CppTotp
{
/** The 64-bit-blocksize variant of HMAC-SHA1. */
Bytes::ByteString hmacSha1_64(const Bytes::ByteString & key, const Bytes::ByteString & msg);
/**
* Calculate the HOTP value of the given key, message and digit count.
*/
//uint32_t hotp(const Bytes::ByteString & key, const Bytes::ByteString & msg, size_t digitCount = 6, HmacFunc hmac = hmacSha1_64);
uint32_t hotp(const Bytes::ByteString & key, uint64_t counter, size_t digitCount = 6, HmacFunc hmac = hmacSha1_64);
/**
* Calculate the TOTP value from the given parameters.
*/
uint32_t totp(const Bytes::ByteString & key, uint64_t timeNow, uint64_t timeStart, uint64_t timeStep, size_t digitCount = 6, HmacFunc hmac = hmacSha1_64);
}
#endif