/// <summary> /// /// </summary> /// <param name="algorithm"></param> /// <returns></returns> private static HashAlgorithm GetHash(SigninAlgorithm algorithm) { switch (algorithm) { case SigninAlgorithm.RSASha1: return(new SHA1Managed()); case SigninAlgorithm.RSASha256: return(new SHA256Managed()); default: throw new ArgumentException("Invalid SigningAlgorithm value", "algorithm"); } }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="algorithm"></param> /// <returns></returns> public static Byte[] Hash(Byte[] data, SigninAlgorithm algorithm) { if (data == null) { throw new ArgumentNullException("Hash data."); } using (var hash = GetHash(algorithm)) { return(hash.ComputeHash(data)); } }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="algorithm"></param> /// <returns></returns> public Byte[] Sign(Byte[] data, SigninAlgorithm algorithm) { if (data == null) { throw new ArgumentNullException("Sign data."); } using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(this.Certificate.PrivateKey.ToXmlString(true)); byte[] signature = rsa.SignData(data, GetHashName(this.SigninAlgorithm)); return(signature); } }
/// <summary> /// /// </summary> /// <param name="algorithm"></param> /// <returns></returns> private String GetHashName(SigninAlgorithm algorithm) { switch (algorithm) { case SigninAlgorithm.RSASha1: { return("SHA1"); } case SigninAlgorithm.RSASha256: { return("SHA256"); } default: { throw new ArgumentException("Invalid SigningAlgorithm value", "algorithm"); } } }
/// <summary> /// /// </summary> /// <param name="algorithm"></param> /// <returns></returns> private String GetHashName(SigninAlgorithm algorithm) { switch (algorithm) { case SigninAlgorithm.RSASha1: { return "SHA1"; } case SigninAlgorithm.RSASha256: { return "SHA256"; } default: { throw new ArgumentException("Invalid SigningAlgorithm value", "algorithm"); } } }
/// <summary> /// /// </summary> /// <param name="algorithm"></param> /// <returns></returns> private static HashAlgorithm GetHash(SigninAlgorithm algorithm) { switch (algorithm) { case SigninAlgorithm.RSASha1: return new SHA1Managed(); case SigninAlgorithm.RSASha256: return new SHA256Managed(); default: throw new ArgumentException("Invalid SigningAlgorithm value", "algorithm"); } }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="algorithm"></param> /// <returns></returns> public Byte[] Sign(Byte[] data, SigninAlgorithm algorithm) { if (data == null) { throw new ArgumentNullException("Sign data."); } using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(this.Certificate.PrivateKey.ToXmlString(true)); byte[] signature = rsa.SignData(data, GetHashName(this.SigninAlgorithm)); return signature; } }
/// <summary> /// /// </summary> /// <param name="data"></param> /// <param name="algorithm"></param> /// <returns></returns> public static Byte[] Hash(Byte[] data, SigninAlgorithm algorithm) { if (data == null) { throw new ArgumentNullException("Hash data."); } using (var hash = GetHash(algorithm)) { return hash.ComputeHash(data); } }