private ProcessArgumentBuilder GetSignArguments(SignSettings settings)
        {
            if (!string.IsNullOrWhiteSpace(settings.Password) && settings.CertFile == null)
            {
                throw new ArgumentException("Password requires CertFile to be set", nameof(settings.CertFile));
            }

            if (settings.FileToSign == null)
            {
                throw new ArgumentNullException(nameof(settings.FileToSign), "File to sign is required");
            }

            var builder = new ProcessArgumentBuilder();

            builder.Append("-sign");
            builder.AppendQuoted(settings.FileToSign.MakeAbsolute(Environment).ToString());
            builder.AppendNonEmptySecretSwitch("-pwd", settings.Password);
            builder.AppendNonNullFilePathSwitch("-certFile", settings.CertFile, Environment);
            builder.AppendNonNullFilePathSwitch("-toFile", settings.ToFile, Environment);
            builder.AppendNonEmptyQuotedSwitch("-certHash", settings.CertHash);

            return(builder);
        }