internal static HashAlgorithm ObjToHashAlgorithm(object hashAlg) { if (hashAlg == null) { throw new ArgumentNullException("hashAlg"); } HashAlgorithm hashAlgorithm = (HashAlgorithm)null; if (hashAlg is string) { hashAlgorithm = (HashAlgorithm)CryptoConfig.CreateFromName((string)hashAlg); if (hashAlgorithm == null) { string friendlyNameFromOid = X509Utils.GetFriendlyNameFromOid((string)hashAlg, OidGroup.HashAlgorithm); if (friendlyNameFromOid != null) { hashAlgorithm = (HashAlgorithm)CryptoConfig.CreateFromName(friendlyNameFromOid); } } } else if (hashAlg is HashAlgorithm) { hashAlgorithm = (HashAlgorithm)hashAlg; } else if (hashAlg is Type) { hashAlgorithm = (HashAlgorithm)CryptoConfig.CreateFromName(hashAlg.ToString()); } if (hashAlgorithm == null) { throw new ArgumentException(Environment.GetResourceString("Argument_InvalidValue")); } return(hashAlgorithm); }