using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Security.Cryptography; namespace EnvelopeGenerator.Application.Contracts { public interface IJWTService { public static SymmetricSecurityKey GenerateSecurityKey(int byteSize = 32) { using var rng = RandomNumberGenerator.Create(); var randomBytes = new byte[byteSize]; rng.GetBytes(randomBytes); var securityKey = new SymmetricSecurityKey(randomBytes); return securityKey; } string GenerateToken(TClaimValue claimValue); JwtSecurityToken? ReadSecurityToken(string token); } }