Ejemplo n.º 1
0
        public void Digital_signature_can_be_verified()
        {
            File.Delete("a.txt");
            using (var file = File.CreateText("a.txt"))
            {
                file.WriteLine("Test");
                file.Flush();
            }
            PackageSigner.Sign("PackManTest", "a.txt");
            var result = PackageSigner.VerifySignature("PackManTest", "a.txt", StoreLocation.CurrentUser);

            Assert.IsTrue(result);
        }
Ejemplo n.º 2
0
        // POST /api/sign
        public async Task <HttpResponseMessage> Post([FromBody] WebHookEvent payload)
        {
            if (payload.Payload.PackageIdentifier.EndsWith(ConfigurationManager.AppSettings["Signature:PackageIdSuffix"]))
            {
                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    ReasonPhrase = "Package is already signed. "
                });
            }

            string tempPath = Path.GetTempFileName();

            try
            {
                // Download the package
                var httpClient    = new HttpClient();
                var packageStream = await httpClient.GetStreamAsync(payload.Payload.PackageDownloadUrl);

                using (var stream = new FileStream(tempPath, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    packageStream.CopyTo(stream);
                }

                // Sign the package
                PackageSigner signer = new PackageSigner();
                if (signer.SignPackage(tempPath, tempPath,
                                       System.Web.Hosting.HostingEnvironment.MapPath("~/" + ConfigurationManager.AppSettings["Signature:KeyFile"]),
                                       ConfigurationManager.AppSettings["Signature:KeyFilePassword"],
                                       payload.Payload.PackageIdentifier + ConfigurationManager.AppSettings["Signature:PackageIdSuffix"]))
                {
                    var server = new PackageServer(ConfigurationManager.AppSettings["Signature:NuGetFeedUrl"], "Signature/1.0");
                    server.PushPackage(ConfigurationManager.AppSettings["Signature:NuGetFeedApiKey"], new OptimizedZipPackage(tempPath), new FileInfo(tempPath).Length, 60 * 1000, true);
                    OptimizedZipPackage.PurgeCache();

                    return(new HttpResponseMessage(HttpStatusCode.Created)
                    {
                        ReasonPhrase = "Package has been signed."
                    });
                }
            }
            finally
            {
                File.Delete(tempPath);
            }

            return(new HttpResponseMessage(HttpStatusCode.OK)
            {
                ReasonPhrase = "Package is already signed."
            });
        }
Ejemplo n.º 3
0
 public void Digital_signature_is_created_in_same_forlder_as_package()
 {
     if (!Directory.Exists("Subfolder"))
     {
         Directory.CreateDirectory("Subfolder");
     }
     File.Delete(@"Subfolder\a.txt");
     File.Delete(@"Subfolder\a.signature");
     using (var file = File.CreateText(@"Subfolder\a.txt"))
     {
         file.WriteLine("Test");
         file.Flush();
     }
     PackageSigner.Sign("PackManTest", @"Subfolder\a.txt");
     Assert.IsTrue(File.Exists(@"Subfolder\a.signature"));
 }
Ejemplo n.º 4
0
 static void Main(string[] args)
 {
     try
     {
         var keyFileName = Directory.EnumerateFiles(".", "*.snk").Concat(Directory.EnumerateFiles(".", "*.pfx")).FirstOrDefault();
         if (keyFileName == null)
         {
             throw new Exception("Could not find snk or pfx file in current directory.");
         }
         var signer = new PackageSigner();
         foreach (var packageName in Directory.EnumerateFiles(".", "*.nupkg"))
         {
             var info = new PackageInfo(packageName);
             signer.SignPackage(packageName, info.SignedPackageName(), keyFileName, "", info.SignedIdentifier());
             Console.WriteLine("Signed " + packageName + " as " + info.SignedPackageName());
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }
     Console.ReadKey();
 }