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)}"); } } }
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}"); } }); }
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}"); } }); }