示例#1
0
        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();
            }
        }