Skip to content
Snippets Groups Projects
ProjectSpecification.cs 1.03 KiB
Newer Older
using System.Security.Cryptography;
using System.Text;
using FitConnect.Encryption;

namespace FitConnect;

/// <summary>
///     This class contains all security related methods that can be changed due to future
///     security issues or decisions from the BSI.
Klaus Fischer's avatar
Klaus Fischer committed
internal static class ProjectSpecification {
    public const int MaxCallbackAge = 5;
Klaus Fischer's avatar
Klaus Fischer committed
    public const char TokenSeparator = '.';
Klaus Fischer's avatar
Klaus Fischer committed
    public const string CallbackTimestamp = "callback-timestamp";
    public const string CallbackAuthentication = "callback-authentication";
Klaus Fischer's avatar
Klaus Fischer committed
    public const string PackageVersion = "0.9.3-beta.2";
    public static string CommitId => GetCommitId() ?? "development";
    private static string? GetCommitId() {
        return JsonHelper.LoadContentOfResource("commitId.tmp").Trim();
    public static byte[] CalculateCallbackHmac(string callbackSecret, long timestamp, string body) {
        return new HMACSHA512(Encoding.UTF8.GetBytes(callbackSecret))
            .ComputeHash(Encoding.UTF8.GetBytes($"{timestamp}.{body}"));
    }
}