using System;

namespace StellaOps.Cryptography;

/// <summary>
/// Well-known identifiers for password hashing algorithms supported by StellaOps.
/// </summary>
public static class PasswordHashAlgorithms
{
    public const string Argon2id = "argon2id";
    public const string Pbkdf2Sha256 = "pbkdf2-sha256";

    /// <summary>
    /// Converts the enum value into the canonical algorithm identifier string.
    /// </summary>
    public static string ToAlgorithmId(this PasswordHashAlgorithm algorithm) =>
        algorithm switch
        {
            PasswordHashAlgorithm.Argon2id => Argon2id,
            PasswordHashAlgorithm.Pbkdf2 => Pbkdf2Sha256,
            _ => throw new ArgumentOutOfRangeException(nameof(algorithm), algorithm, "Unsupported password hash algorithm.")
        };
}
