Added crypto file
This commit is contained in:
parent
4b6bb780d4
commit
a4ff706a28
46
CryptographyService.cs
Normal file
46
CryptographyService.cs
Normal file
@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using Sodium;
|
||||
|
||||
namespace TeleTok
|
||||
{
|
||||
public class CryptographyService
|
||||
{
|
||||
public string ToHexString(byte[] input)
|
||||
{
|
||||
var hexString = BitConverter.ToString(input);
|
||||
|
||||
string result = hexString.Replace("-", "");
|
||||
|
||||
return result.ToLower();
|
||||
}
|
||||
|
||||
public byte[] GenerateLoginDigest()
|
||||
{
|
||||
long now = DateTimeOffset.UtcNow.ToUnixTimeSeconds() * 1000;
|
||||
var message = $"login:{now / 1000 / (5 * 60)}";
|
||||
|
||||
return GenericHash.Hash(message, (byte[]?) null, 32);
|
||||
}
|
||||
|
||||
public KeyPair GenerateEd25519KeyPair(string seed)
|
||||
{
|
||||
byte[] hash = GenericHash.Hash(seed, (byte[]?) null, 32);
|
||||
|
||||
return PublicKeyAuth.GenerateKeyPair(hash);
|
||||
}
|
||||
|
||||
public string GenerateHexSignature(byte[] loginDigest, byte[] secretKey)
|
||||
{
|
||||
byte[] signature = PublicKeyAuth.SignDetached(loginDigest, secretKey);
|
||||
|
||||
return ToHexString(signature);
|
||||
}
|
||||
|
||||
public string GenerateHexId(byte[] publicKey)
|
||||
{
|
||||
byte[] hash = GenericHash.Hash(publicKey, null, publicKey.Length);
|
||||
|
||||
return ToHexString(hash);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user