RemoveSignature( XpsDigitalSignature signature ) { CheckDisposed(); if (null == signature) { throw new ArgumentNullException("signature"); } if (null == signature.PackageSignature) { throw new NullReferenceException("signature.PackageSignature"); } if (null == signature.PackageSignature.SignaturePart) { throw new NullReferenceException("signature.PackageSignature.SignaturePart"); } if (CurrentXpsManager == null) { throw new InvalidOperationException(SR.Get(SRID.ReachPackaging_DocumentWasClosed)); } PackageDigitalSignatureManager packageSignatures = new PackageDigitalSignatureManager(CurrentXpsManager.MetroPackage); packageSignatures.RemoveSignature(signature.PackageSignature.SignaturePart.Uri); _reachSignatures = null; _reachSignatureList = null; EnsureSignatures(); }
/// <summary> /// Method that remove a signer of the file /// </summary> /// <param name="signer">Name of the signer</param> public void RemoveUniqueSignatureFromFile(Uri siguri, string serialNumber = null) { if (DocumentType.Equals(Types.XpsDocument)) { //To remove the signature we opened XPS like System.IO.Package, //Because the URI is necessary to remove the correct signature xpsDocument.Close(); package = Package.Open(signers.Path, FileMode.Open, FileAccess.ReadWrite); PackageDigitalSignatureManager _signatures = null; _signatures = new PackageDigitalSignatureManager(package); _signatures.CertificateOption = CertificateEmbeddingOption.InSignaturePart; PackageDigitalSignatureManager _assinaturas = null; _assinaturas = new PackageDigitalSignatureManager(base.package); _assinaturas.CertificateOption = CertificateEmbeddingOption.InSignaturePart; _assinaturas.RemoveSignature(siguri); package.Flush(); package.Close(); } else if (DocumentType.Equals(Types.PdfDocument)) { CertificadoDigital.Remove.removeSignature(pdfDocumentPath, serialNumber); } else { PackageDigitalSignatureManager _assinaturas = null; _assinaturas = new PackageDigitalSignatureManager(base.package); _assinaturas.CertificateOption = CertificateEmbeddingOption.InSignaturePart; _assinaturas.RemoveSignature(siguri); package.Flush(); package.Close(); } }
public void RemoveSignaturesFromFilesBySigner(string signerSerialNumber) { string signuri = ""; string serialNumber = ""; if (DocumentType.Equals(Types.XpsDocument)) { //Search the serial in a Xps signatures. foreach (XpsDigitalSignature signature in xpsDocument.Signatures) { serialNumber = signature.SignerCertificate.GetSerialNumberString(); if (serialNumber == signerSerialNumber) { xpsDocument.RemoveSignature(signature); } } serialNumber = null; xpsDocument.Close(); } else if (DocumentType.Equals(Types.PdfDocument)) { CertificadoDigital.Remove.removeSignature(pdfDocumentPath, serialNumber); } else { PackageDigitalSignatureManager _assinaturas = null; _assinaturas = new PackageDigitalSignatureManager(base.package); _assinaturas.CertificateOption = CertificateEmbeddingOption.InSignaturePart; int signaturesCount = _assinaturas.Signatures.Count; for (int index = 0; index < _assinaturas.Signatures.Count; index++) { PackageDigitalSignature signature = _assinaturas.Signatures[index]; serialNumber = signature.Signer.GetSerialNumberString(); if (serialNumber == signerSerialNumber) { signuri = signature.SignaturePart.Uri.ToString(); Uri uri = new Uri(signuri, UriKind.Relative); _assinaturas.RemoveSignature(uri); index--; } } package.Flush(); package.Close(); } }