OTP Sharp

This is an implementation of HOTP and TOTP which are commonly used for multi factor authentication by using a shared key between the client and the server to generate and verify one time use codes.  This library is capable of generating and verifying both TOTP and HOTP authentication codes.  The calculations in this library are known to be compatible with Google 2-Step Verification and consequently the Google Authenticator smartphone app.  It is also known to be able to generate codes for Amazon Web Services Multi Factor Authentication and Dropbox 2 step authentication.  It should work with any other service or client that is RFC compliant.

This library is released under an MIT license. No warranty is provided as to the correctness of the library and the consumer of the library assumes all risk for the use thereof, as per the MIT license.

Every effort has gone into implementing this library in accordance with the RFCs mentioned above. However it is up to the users of this library to read through the RFCs and ensure that this implementation is in accordance with the security procedures outlined therein.

The implementation includes the code calculation as well as simple verification. Persistence of the keys, secure key storage, ensuring that a single code can't be validated multiple times and other things are not a part of this library. Thus far those functions (and any others mentioned in the RFCs) are up to the consumer of this library.

For documentation please visit the project website.

There is a newer version of this package available.
See the version list below for details.
Install-Package OtpSharp -Version
dotnet add package OtpSharp --version
paket add OtpSharp --version
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

1.0.4 Changed the Protected Key API to be more explicit (may break existing direct useage of the protected key)

The protected key no longer implicitly causes side effects (destroying the plaintext key provided must be done explicitly)

Added a time correction class with experimental NTP abilities.

Support for .net 3.5 as well as client profiles with some minor limitations.

1.0.3 Fixed unexpected behavior where the plaintext key provided to an HOTP or TOTP object will be scrambled.  Now it will remain intact.  Added constructor overloads to provide a protected key instead of a byte array if desired.


This package has no dependencies.

Version History

Version Downloads Last updated 139,897 11/16/2015 10,397 1/17/2015 3,505 7/13/2014 336 7/12/2014 1,763 10/25/2013 524 8/9/2013 420 7/29/2013 593 3/12/2013 423 3/12/2013 363 3/12/2013 364 3/11/2013 406 3/8/2013 452 3/2/2013
1.0.5 433 3/1/2013
Show less