Example #1
0
 public static OpenXmlPowerToolsDocument Insert(OpenXmlPowerToolsDocument doc, IEnumerable <string> certificateList)
 {
     using (OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(doc))
     {
         using (Package package = streamDoc.GetPackage())
         {
             foreach (string digitalCertificate in certificateList)
             {
                 X509Certificate x509Certificate = X509Certificate2.CreateFromCertFile(digitalCertificate);
                 PackageDigitalSignatureManager digitalSigntaureManager = new PackageDigitalSignatureManager(package);
                 digitalSigntaureManager.CertificateOption = CertificateEmbeddingOption.InSignaturePart;
                 System.Collections.Generic.List <Uri> partsToSign = new System.Collections.Generic.List <Uri>();
                 //Adds each part to the list, except relationships parts.
                 foreach (PackagePart openPackagePart in package.GetParts())
                 {
                     if (!PackUriHelper.IsRelationshipPartUri(openPackagePart.Uri))
                     {
                         partsToSign.Add(openPackagePart.Uri);
                     }
                 }
                 List <PackageRelationshipSelector> relationshipSelectors = new List <PackageRelationshipSelector>();
                 //Creates one selector for each package-level relationship, based on id
                 foreach (PackageRelationship relationship in package.GetRelationships())
                 {
                     PackageRelationshipSelector relationshipSelector =
                         new PackageRelationshipSelector(relationship.SourceUri, PackageRelationshipSelectorType.Id, relationship.Id);
                     relationshipSelectors.Add(relationshipSelector);
                 }
                 digitalSigntaureManager.Sign(partsToSign, x509Certificate, relationshipSelectors);
             }
         }
         return(streamDoc.GetModifiedDocument());
     }
 }
        public static void Sign(Package package, X509Certificate2 certificate)
        {
            var dsm = new PackageDigitalSignatureManager(package)
            {
                CertificateOption = CertificateEmbeddingOption.InSignaturePart
            };

            List <Uri> parts = package.GetParts()
                               .Select(part => part.Uri)
                               .Where(uri => !PackUriHelper.IsRelationshipPartUri(uri))
                               .ToList();

            dsm.Sign(parts, certificate);
        }
Example #3
0
        public void IsRelationshipPartUriTest2()
        {
            Uri uri = new Uri("/test/uri", UriKind.Relative);

            PackUriHelper.IsRelationshipPartUri(uri);
        }
Example #4
0
 public void IsRelationshipPartUriTest()
 {
     Assert.IsFalse(PackUriHelper.IsRelationshipPartUri(new Uri("/_rels/Whatever", UriKind.Relative)));
     Assert.IsTrue(PackUriHelper.IsRelationshipPartUri(new Uri("/_rels/Whatever.rels", UriKind.Relative)));
 }