public static byte[] getBytes(ChecksumInputType checksumInputType, string input, Error error)
        {
            EncodingUtil eu = new EncodingUtil();

            byte[] aux = null;
            switch (checksumInputType)
            {
            case ChecksumInputType.BASE64:
                try
                {
                    aux = Base64.Decode(input);
                }
                catch (Exception e)
                {
                    error.setError("CI003", e.Message);
                }
                break;

            case ChecksumInputType.HEX:
                aux = SecurityUtils.GetHexa(input, "CI004", error);
                break;

            case ChecksumInputType.TXT:
                aux = eu.getBytes(input);
                if (eu.HasError())
                {
                    error = eu.GetError();
                }
                break;

            case ChecksumInputType.ASCII:
                try
                {
                    aux = new ASCIIEncoding().GetBytes(input);
                }
                catch (Exception e)
                {
                    error.setError("CI004", e.Message);
                }
                break;

            case ChecksumInputType.LOCAL_FILE:
                aux = SecurityUtils.getFileBytes(input, error);
                break;

            default:
                error.setError("CI006", "Unrecognized checksum input type");
                break;
            }
            return(aux);
        }
        public string GenerateChecksum(string input, string inputType, string checksumAlgorithm)
        {
            ChecksumInputType chksumInputType = ChecksumInputTypeUtils.getChecksumInputType(inputType, this.error);

            byte[] inputBytes = ChecksumInputTypeUtils.getBytes(chksumInputType, input, this.error);
            if (this.HasError())
            {
                return("");
            }
            ChecksumAlgorithm algorithm = ChecksumAlgorithmUtils.getChecksumAlgorithm(checksumAlgorithm, this.error);

            if (this.HasError())
            {
                return("");
            }
            return((ChecksumAlgorithmUtils.isHash(algorithm)) ? CalculateHash(inputBytes, algorithm)
                                        : CalculateCRC(inputBytes, algorithm));
        }
        public static string valueOf(ChecksumInputType checksumInputType, Error error)
        {
            switch (checksumInputType)
            {
            case ChecksumInputType.BASE64:
                return("BASE64");

            case ChecksumInputType.HEX:
                return("HEX");

            case ChecksumInputType.TXT:
                return("TXT");

            case ChecksumInputType.ASCII:
                return("ASCII");

            case ChecksumInputType.LOCAL_FILE:
                return("LOCAL_FILE");

            default:
                error.setError("CI002", "Unrecognized checksum input type");
                return("");
            }
        }