CollectDependents( Dictionary <Uri, Uri> dependents, List <PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions ) { UpdatePageCache(); // // Add all pages // foreach (IXpsFixedPageReader reader in _pageCache) { (reader as XpsFixedPageReaderWriter). CollectSelfAndDependents( dependents, selectorList, restrictions ); } // // Add DocumentStructure // EnsureDoucmentStructure(); if (_documentStructure != null) { dependents[_documentStructure.Uri] = _documentStructure.Uri; } }
/// <summary> /// See IDigitalSignatureProvider /// </summary> void IDigitalSignatureProvider.SignDocument(DigitalSignature digitalSignature) { AssertIsSignable(); XpsDigSigPartAlteringRestrictions reachRestrictions = XpsDigSigPartAlteringRestrictions.None; if (digitalSignature.IsDocumentPropertiesRestricted) { reachRestrictions |= XpsDigSigPartAlteringRestrictions.CoreMetadata; } // If additional signatures should invalidate this signature, we // need to sign the signature origin part if (digitalSignature.IsAddingSignaturesRestricted) { reachRestrictions |= XpsDigSigPartAlteringRestrictions.SignatureOrigin; } // a null guid means there was no associated spot, so create a guid if (digitalSignature.GuidID == null) { digitalSignature.GuidID = Guid.NewGuid(); } XpsDigitalSignature xpsDigitalSignature = XpsDocument.SignDigitally( digitalSignature.Certificate, true, reachRestrictions, (Guid)digitalSignature.GuidID, false /* don't re-verify IsSignable, we've already done it */ ); if (xpsDigitalSignature != null) { // Fill in relevant fields from the XPS signature digitalSignature.XpsDigitalSignature = xpsDigitalSignature; digitalSignature.SignatureState = SignatureStatus.Valid; digitalSignature.SignedOn = xpsDigitalSignature.SigningTime; // Save the simple name from the certificate as the subject name // in the signature digitalSignature.SubjectName = digitalSignature.Certificate.GetNameInfo( X509NameType.SimpleName, false /* don't include issuer name */); // Add the new signature to the list (if it isn't already there). // That is a possibility since the first signature in a document // is always added as a signature definition and a signature. if (!DigitalSignatureList.Contains(digitalSignature)) { DigitalSignatureList.Add(digitalSignature); } } }
CollectSelfAndDependents( Dictionary <Uri, Uri> dependentList, List <PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions ) { // // Add this document // dependentList[Uri] = Uri; // // Add Signature Definition if it exists // PackagePart signatureDefinitionPart = CurrentXpsManager.GetSignatureDefinitionPart(Uri); // // Add Signature Definitions // selectorList.Add(new PackageRelationshipSelector( Uri, PackageRelationshipSelectorType.Type, XpsS0Markup.SignatureDefinitionRelationshipName ) ); if (signatureDefinitionPart != null) { dependentList[signatureDefinitionPart.Uri] = signatureDefinitionPart.Uri; } // // Add Restricted Font relationship // selectorList.Add(new PackageRelationshipSelector( Uri, PackageRelationshipSelectorType.Type, XpsS0Markup.RestrictedFontRelationshipType ) ); // // Add Document Structure relationship // selectorList.Add(new PackageRelationshipSelector( Uri, PackageRelationshipSelectorType.Type, XpsS0Markup.StructureRelationshipName ) ); // // Add this documents dependants // CollectDependents(dependentList, selectorList, restrictions); }
SignDigitally( X509Certificate certificate, bool embedCertificate, XpsDigSigPartAlteringRestrictions restrictions ) { CheckDisposed(); return(SignDigitally( certificate, embedCertificate, restrictions, null, true )); }
CollectSelfAndDependents( Dictionary <Uri, Uri> dependentList, List <PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions ) { // // Add my self // dependentList[Uri] = Uri; // // Add my dependents // CollectDependents(dependentList, selectorList, restrictions); }
SignDigitally( X509Certificate certificate, bool embedCertificate, XpsDigSigPartAlteringRestrictions restrictions, Guid id ) { CheckDisposed(); return(SignDigitally( certificate, embedCertificate, restrictions, XmlConvert.EncodeName(id.ToString()), true )); }
CollectDependents( Dictionary <Uri, Uri> dependents, List <PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions ) { UpdateDocumentCache(); // Add all documents foreach (IXpsFixedDocumentReader reader in _documentCache) { (reader as XpsFixedDocumentReaderWriter). CollectSelfAndDependents( dependents, selectorList, restrictions); } }
SignDigitally( X509Certificate certificate, bool embedCertificate, XpsDigSigPartAlteringRestrictions restrictions, String signatureId, bool testIsSignable ) { if (null == certificate) { throw new ArgumentNullException("certificate"); } if (CurrentXpsManager == null) { throw new InvalidOperationException(SR.Get(SRID.ReachPackaging_DocumentWasClosed)); } if (testIsSignable && !IsSignable) { throw new InvalidOperationException(SR.Get(SRID.ReachPackaging_SigningDoesNotMeetPolicy)); } EnsureSignatures(); // // List of RelationshipSelectors that need to be signed // List <PackageRelationshipSelector> selectorList = new List <PackageRelationshipSelector>(); // // This is being used as a Set class so the second Uri Value is irrelevent // Dictionary <Uri, Uri> dependentList = new Dictionary <Uri, Uri> (); CollectSelfAndDependents(dependentList, selectorList, restrictions); PackageDigitalSignature packSignature = CurrentXpsManager.Sign(dependentList.Keys, certificate, embedCertificate, selectorList, signatureId ); return(AddSignature(packSignature)); }
CollectSelfAndDependents( Dictionary <Uri, Uri> dependentList, List <PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions ) { (FixedDocumentSequenceReader as XpsFixedDocumentSequenceReaderWriter).CollectSelfAndDependents( dependentList, selectorList, restrictions); // // Add thumbnail // EnsureThumbnail(); if (_thumbnail != null) { dependentList[_thumbnail.Uri] = _thumbnail.Uri; } // // Sign Starting part relationship // selectorList.Add(new PackageRelationshipSelector( MS.Internal.IO.Packaging.PackUriHelper.PackageRootUri, PackageRelationshipSelectorType.Type, XpsS0Markup.ReachPackageStartingPartRelationshipType ) ); // // Add thumnail relationship // selectorList.Add(new PackageRelationshipSelector( MS.Internal.IO.Packaging.PackUriHelper.PackageRootUri, PackageRelationshipSelectorType.Type, XpsS0Markup.ThumbnailRelationshipName ) ); // // Sign CoreMetadata type if the restriction flag is set // if ((restrictions & XpsDigSigPartAlteringRestrictions.CoreMetadata) != 0) { //We need to flush the package because the core properties are not written out //until the package is flushed CurrentXpsManager.MetroPackage.Flush(); selectorList.Add(new PackageRelationshipSelector( MS.Internal.IO.Packaging.PackUriHelper.PackageRootUri, PackageRelationshipSelectorType.Type, XpsS0Markup.CorePropertiesRelationshipType ) ); } // // Add the Signiture Origin based on the restrictions // CurrentXpsManager.CollectSignitureOriginForSigning(selectorList, restrictions); // // Add the properties based on the restrictions // CurrentXpsManager.CollectPropertiesForSigning(dependentList, restrictions); }
public void CollectSignitureOriginForSigning(List<PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions) { if ((restrictions & XpsDigSigPartAlteringRestrictions.SignatureOrigin) != XpsDigSigPartAlteringRestrictions.None) { Uri signatureOriginUri = this.GetSignatureOriginUri(); selectorList.Add(new PackageRelationshipSelector(signatureOriginUri, PackageRelationshipSelectorType.Type, XpsS0Markup.DitialSignatureRelationshipType)); } }
public void CollectPropertiesForSigning(Dictionary<Uri, Uri> dependents, XpsDigSigPartAlteringRestrictions restrictions) { PackagePart documentPropertiesPart = this.GetDocumentPropertiesPart(); if (((restrictions & XpsDigSigPartAlteringRestrictions.CoreMetadata) != XpsDigSigPartAlteringRestrictions.None) && (documentPropertiesPart != null)) { dependents[documentPropertiesPart.Uri] = documentPropertiesPart.Uri; } }
private XpsDigitalSignature SignDigitally(X509Certificate certificate, bool embedCertificate, XpsDigSigPartAlteringRestrictions restrictions, string signatureId, bool testIsSignable) { if (certificate == null) { throw new ArgumentNullException("certificate"); } if (base.CurrentXpsManager == null) { throw new InvalidOperationException(SR.Get("ReachPackaging_DocumentWasClosed")); } if (testIsSignable && !this.IsSignable) { throw new InvalidOperationException(SR.Get("ReachPackaging_SigningDoesNotMeetPolicy")); } this.EnsureSignatures(); List<PackageRelationshipSelector> selectorList = new List<PackageRelationshipSelector>(); Dictionary<Uri, Uri> dependentList = new Dictionary<Uri, Uri>(); this.CollectSelfAndDependents(dependentList, selectorList, restrictions); PackageDigitalSignature packSignature = base.CurrentXpsManager.Sign(dependentList.Keys, certificate, embedCertificate, selectorList, signatureId); return this.AddSignature(packSignature); }
public XpsDigitalSignature SignDigitally(X509Certificate certificate, bool embedCertificate, XpsDigSigPartAlteringRestrictions restrictions, Guid id, bool testIsSignable) { this.CheckDisposed(); return this.SignDigitally(certificate, embedCertificate, restrictions, XmlConvert.EncodeName(id.ToString()), testIsSignable); }
public XpsDigitalSignature SignDigitally(X509Certificate certificate, bool embedCertificate, XpsDigSigPartAlteringRestrictions restrictions) { this.CheckDisposed(); return this.SignDigitally(certificate, embedCertificate, restrictions, (string) null, true); }
internal void CollectSelfAndDependents(Dictionary<Uri, Uri> dependentList, List<PackageRelationshipSelector> selectorList, XpsDigSigPartAlteringRestrictions restrictions) { (this.FixedDocumentSequenceReader as XpsFixedDocumentSequenceReaderWriter).CollectSelfAndDependents(dependentList, selectorList, restrictions); this.EnsureThumbnail(); if (this._thumbnail != null) { dependentList[this._thumbnail.Uri] = this._thumbnail.Uri; } selectorList.Add(new PackageRelationshipSelector(PackUriHelper.PackageRootUri, PackageRelationshipSelectorType.Type, XpsS0Markup.ReachPackageStartingPartRelationshipType)); selectorList.Add(new PackageRelationshipSelector(PackUriHelper.PackageRootUri, PackageRelationshipSelectorType.Type, XpsS0Markup.ThumbnailRelationshipName)); if ((restrictions & XpsDigSigPartAlteringRestrictions.CoreMetadata) != XpsDigSigPartAlteringRestrictions.None) { base.CurrentXpsManager.MetroPackage.Flush(); selectorList.Add(new PackageRelationshipSelector(PackUriHelper.PackageRootUri, PackageRelationshipSelectorType.Type, XpsS0Markup.CorePropertiesRelationshipType)); } base.CurrentXpsManager.CollectSignitureOriginForSigning(selectorList, restrictions); base.CurrentXpsManager.CollectPropertiesForSigning(dependentList, restrictions); }