TotpAuthSharp 1.0.3
dotnet add package TotpAuthSharp --version 1.0.3
NuGet\Install-Package TotpAuthSharp -Version 1.0.3
<PackageReference Include="TotpAuthSharp" Version="1.0.3" />
paket add TotpAuthSharp --version 1.0.3
#r "nuget: TotpAuthSharp, 1.0.3"
// Install TotpAuthSharp as a Cake Addin #addin nuget:?package=TotpAuthSharp&version=1.0.3 // Install TotpAuthSharp as a Cake Tool #tool nuget:?package=TotpAuthSharp&version=1.0.3
TotpAuthSharp
.net8.0 library for generating and validating timed based one time password authentication.
Based On Library
https://github.com/damirkusar/AspNetCore.Totp AspNetCore.Totp
Getting Started
Installing the package
Open up an existing project, or create a new one. Add a reference to the TotpAuthSharp library.
.NET Core CLI
dotnet add package TotpAuthSharp
PowerShell (Nuget Package Manager)
Install-Package TotpAuthSharp
Manual entry (.csproj)
<Project Sdk="Microsoft.NET.Sdk.Web">
...
<ItemGroup>
<PackageReference Include="TotpAuthSharp" Version="x.x.x" />
</ItemGroup>
</Project>
Public Namespace Structure
TotpAuthSharp
CLASS
TotpGeneratorCLASS
TotpValidatorCLASS
TotpSetupGeneratorTotpAuthSharp.Helper
CLASS
Base32CLASS
GuardCLASS
QrCodeGeneratorCLASS
TotpHasherCLASS
UrlEncoder
TotpAuthSharp.Models
CLASS
TotpSetupCLASS
QrCodeImage
TotpAuthSharp.Interface
INTERFACE
IQrCodeImageINTERFACE
ITotpGeneratorINTERFACE
ITotpSetupINTERFACE
ITotpSetupGeneratorINTERFACE
ITotpValidator
Using the package
Class: TotpGenerator
Constructor Parameters: None
Description: Used for generating the TOTP code, using a super secret code for your app.
Example
var generator = new TotpGenerator();
var code = generator.Generate(_userIdentity.AccountSecretKey);
TotpValidator
Constructor Parameters: TotpGenerator
Description: Generates a new token and compares against a given TOTP code to check validity.
Example
var generator = new TotpGenerator();
var validator = new TotpValidator(generator);
var code = validator.Validate(_userIdentity.AccountSecretKey, code);
TotpSetupGenerator
Constructor Parameters: None
Description: Used to fetch a QR code image with SkiaSharp and return it as a TotpSetup class containing the image.
Example
var qrGenerator = new TotpSetupGenerator();
var qrCode = qrGenerator.Generate(
issuer: "TestCo",
accountIdentity: _userIdentity.Id.ToString(),
accountSecretKey: _userIdentity.AccountSecretKey
);
Example Implementation
using System;
using TotpAuthSharp;
using TotpAuthSharp.Interface;
using Microsoft.AspNetCore.Mvc;
namespace AuthApi.Controllers
{
internal struct UserIdentity
{
public int Id { get; set; }
public string AccountSecretKey { get; set; }
}
internal static class AuthProvider
{
public static UserIdentity GetUserIdentity()
{
return new UserIdentity()
{
Id = new Random().Next(0, 999),
AccountSecretKey = Guid.NewGuid().ToString()
};
}
}
[ApiController]
[Route("[controller]")]
public class TotpController : ControllerBase
{
private readonly ITotpGenerator _totpGenerator;
private readonly ITotpSetupGenerator _totpQrGenerator;
private readonly ITotpValidator _totpValidator;
private readonly UserIdentity _userIdentity;
public TotpController()
{
_totpGenerator = new TotpGenerator();
_totpValidator = new TotpValidator(_totpGenerator);
_totpQrGenerator = new TotpSetupGenerator();
_userIdentity = AuthProvider.GetUserIdentity();
}
[HttpGet("code")]
public int GetCode()
{
return _totpGenerator.Generate(_userIdentity.AccountSecretKey);
}
[HttpGet("qr-code")]
public IActionResult GetQr()
{
var qrCode = _totpQrGenerator.Generate(
"TestCo",
_userIdentity.Id.ToString(),
_userIdentity.AccountSecretKey
);
return File(qrCode.QrCodeImageBytes, "image/png");
}
[HttpPost("validate")]
public bool Validate([FromBody] int code)
{
return _totpValidator.Validate(_userIdentity.AccountSecretKey, code);
}
}
}
License
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- SkiaSharp.QrCode (>= 0.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.