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