Esempio n. 1
0
 protected override void ExecuteTask()
 {
     foreach (string file in Items.FileNames)
     {
         if (SigningFunctions.IsSigned(file))
         {
             UnsignFile(new FileInfo(file));
         }
     }
 }
Esempio n. 2
0
        protected override void ExecuteTask()
        {
            // Validate the parameters
            if (string.IsNullOrEmpty(FileName) && (Items == null || Items.FileNames.Count == 0))
            {
                throw new BuildException("Must specify @filename or <items>.", Location);
            }
            if (!string.IsNullOrEmpty(FileName) && Items != null && Items.FileNames.Count > 0)
            {
                throw new BuildException("Cannot specify @filename and <items>.", Location);
            }

            if (Verbose)
            {
                Log(Level.Info, "Description: {0}", Description);
                Log(Level.Info, "Page Hashes: {0}", PageHashes);
                Log(Level.Info, "Retries: {0}", Retries);
                Log(Level.Info, "SignTool Path: {0}", SignToolPath);
                Log(Level.Info, "Additional Certificate: {0}", AdditionalCertificate);
                Log(Level.Info, "Subject Name: {0}", SubjectName);
                Log(Level.Info, "Timestamp URL: {0}", TimestampURL);
                Log(Level.Info, "URL: {0}", URL);
                Log(Level.Info, "FileName: {0}", FileName);
            }

            StringBuilder filenames = new StringBuilder();

            filenames.Capacity = 1000;
            if (Items != null)
            {
                // Construct the file list
                int count = 0;
                foreach (string file in Items.FileNames)
                {
                    if (!SigningFunctions.IsSigned(file))
                    {
                        filenames.Append(@"""");
                        filenames.Append(file);
                        filenames.Append(@""" ");
                        count++;
                    }
                    // Limit the number of files being signed in any single call to SignTool
                    if (filenames.Length > 1000)
                    {
                        SignFiles(filenames.ToString());
                        filenames.Remove(0, filenames.Length);
                    }
                }
                // Sign any remaining files
                if (filenames.Length > 0)
                {
                    SignFiles(filenames.ToString());
                }
                Log(Level.Info, "Signed {0} files", count);
            }
            else
            {
                if (!SigningFunctions.IsSigned(FileName))
                {
                    // A single file is to be signed
                    filenames.Append(@"""");
                    filenames.Append(FileName);
                    filenames.Append(@""" ");
                    SignFiles(filenames.ToString());
                }
                else
                {
                    Log(Level.Info, "Skipping {0}. It is already signed", FileName);
                }
            }
        }