Exemplo n.º 1
0
        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);
        }