using System;
namespace SoundForce.ApiSigner
{
///
/// 签名算法类型
///
public enum SignatureAlgorithm
{
///
/// MD5算法(默认、最快)
///
Md5,
///
/// SHA1算法
///
Sha1,
///
/// SHA256算法
///
Sha256,
///
/// HMAC-SHA256算法(最安全)
///
HmacSha256
}
///
/// 签名算法扩展方法
///
public static class SignatureAlgorithmExtensions
{
///
/// 从字符串解析算法类型
///
/// 算法字符串
/// 签名算法枚举
/// 如果算法无效
public static SignatureAlgorithm FromString(string? algorithm)
{
if (string.IsNullOrEmpty(algorithm))
return SignatureAlgorithm.Md5;
return algorithm.ToUpperInvariant() switch
{
"MD5" => SignatureAlgorithm.Md5,
"SHA1" => SignatureAlgorithm.Sha1,
"SHA256" => SignatureAlgorithm.Sha256,
"HMAC_SHA256" => SignatureAlgorithm.HmacSha256,
"HMACSHA256" => SignatureAlgorithm.HmacSha256,
"HMAC-SHA256" => SignatureAlgorithm.HmacSha256,
_ => throw new ArgumentException($"无效的签名算法: {algorithm}", nameof(algorithm))
};
}
///
/// 获取算法的字符串表示
///
/// 签名算法
/// 算法的字符串表示
public static string ToString(this SignatureAlgorithm algorithm)
{
return algorithm switch
{
SignatureAlgorithm.Md5 => "MD5",
SignatureAlgorithm.Sha1 => "SHA1",
SignatureAlgorithm.Sha256 => "SHA256",
SignatureAlgorithm.HmacSha256 => "HMAC-SHA256",
_ => "UNKNOWN"
};
}
}
}