Beispiel #1
0
        void SubmitInternal(HashMode hashMode, string name, string description, string descriptionUrl, IList <string> files)
        {
            logger.LogInformation("Signing SignTool job {0} with {1} files", name, files.Count());

            var descArgsList = new List <string>();

            if (!string.IsNullOrWhiteSpace(description))
            {
                if (description.Contains("\""))
                {
                    throw new ArgumentException(nameof(description));
                }

                descArgsList.Add($@"-d ""{description}""");
            }
            if (!string.IsNullOrWhiteSpace(descriptionUrl))
            {
                if (descriptionUrl.Contains("\""))
                {
                    throw new ArgumentException(nameof(descriptionUrl));
                }

                descArgsList.Add($@"-du ""{descriptionUrl}""");
            }

            var    descArgs            = string.Join(" ", descArgsList);
            string keyVaultAccessToken = null;

            keyVaultAccessToken = keyVaultService.GetAccessTokenAsync().Result;

            // loop through all of the files here, looking for appx/eappx
            // mark each as being signed and strip appx
            Parallel.ForEach(files, (file, state) =>
            {
                telemetryLogger.OnSignFile(file, signToolName);

                // check to see if it's an appx and strip it first
                var ext = Path.GetExtension(file).ToLowerInvariant();
                if (".appx".Equals(ext, StringComparison.OrdinalIgnoreCase) || ".eappx".Equals(ext, StringComparison.OrdinalIgnoreCase))
                {
                    StripAppx(file);
                }
            });

            // generate a file list for sining
            using (var fileList = new TemporaryFile())
            {
                // generate a file of files
                File.WriteAllLines(fileList.FileName, files);

                var args = $@"sign -ifl ""{fileList.FileName}"" -v -tr {keyVaultService.CertificateInfo.TimestampUrl} -fd sha256 -td sha256 {descArgs} -kvu {keyVaultService.CertificateInfo.KeyVaultUrl} -kvc {keyVaultService.CertificateInfo.CertificateName} -kva {keyVaultAccessToken}";

                if (!Sign(args))
                {
                    throw new Exception($"Could not append sign one of \n{string.Join("\n", files)}");
                }
            }
        }
Beispiel #2
0
        void SubmitInternal(HashMode hashMode, string name, string description, string descriptionUrl, IList <string> files)
        {
            logger.LogInformation("Signing NuGetKeyVaultSignTool job {0} with {1} files", name, files.Count());

            var keyVaultAccessToken = keyVaultService.GetAccessTokenAsync().Result;

            var args = $@"-f -tr {keyVaultService.CertificateInfo.TimestampUrl} -kvu {keyVaultService.CertificateInfo.KeyVaultUrl} -kvc {keyVaultService.CertificateInfo.CertificateName} -kva {keyVaultAccessToken}";

            Parallel.ForEach(files, options, (file, state) =>
            {
                telemetryLogger.OnSignFile(file, signToolName);
                var fileArgs = $@"sign ""{file}"" {args}";

                if (!Sign(fileArgs))
                {
                    throw new Exception($"Could not sign {file}");
                }
            });
        }
Beispiel #3
0
        void SubmitInternal(HashMode hashMode, string name, string description, string descriptionUrl, IList <string> files)
        {
            logger.LogInformation("Signing OpenVsixSignTool job {0} with {1} files", name, files.Count());

            // Dual isn't supported, use sha256
            var alg = hashMode == HashMode.Sha1 ? "sha1" : "sha256";

            var keyVaultAccessToken = keyVaultService.GetAccessTokenAsync().Result;

            var args = $@"sign --timestamp {keyVaultService.CertificateInfo.TimestampUrl} -ta {alg} -fd {alg} -kvu {keyVaultService.CertificateInfo.KeyVaultUrl} -kvc {keyVaultService.CertificateInfo.CertificateName} -kva {keyVaultAccessToken}";


            Parallel.ForEach(files, options, (file, state) =>
            {
                telemetryLogger.OnSignFile(file, signToolName);
                var fileArgs = $@"{args} ""{file}""";

                if (!Sign(fileArgs))
                {
                    throw new Exception($"Could not sign {file}");
                }
            });
        }