Esempio n. 1
0
        public XmlSignatureModel(XmlSignature signature, IXmlPolicyMapperBySignature policyMapper = null)
        {
            Type        = signature.SignedEntityType;
            SigningTime = signature.SigningTime;
            if (signature.SignedElement != null)
            {
                SignedElement = new XmlElementModel(signature.SignedElement);
            }
            if (signature.SignatureAlgorithm != null && signature.SignatureValue != null)
            {
                Signature = new SignatureAlgorithmAndValueModel(signature.SignatureAlgorithm, signature.SignatureValue);
            }
            if (signature.PolicyIdentifier != null)
            {
                SignaturePolicy = new SignaturePolicyIdentifierModel(signature.PolicyIdentifier);
            }
            if (signature.SigningCertificate != null)
            {
                Certificate = new CertificateModel(signature.SigningCertificate);
            }
            if (signature.SignatureTimestamps.Any())
            {
                CertifiedDateReference = signature.SignatureTimestamps.First().EncapsulatedTimestamp.GenTime;
                Timestamps             = signature.SignatureTimestamps.Select(ts => new CadesTimestampModel(ts.EncapsulatedTimestamp)).ToList();
            }

            // Validate signature according to the provided policy.
            if (policyMapper != null)
            {
                var vr = signature.Validate(policyMapper);
                ValidationResults = new ValidationResultsModel(vr);
            }
        }
        public PadesSignerModel(PadesSignerInfo padesSigner)
        {
            var signer = padesSigner.Signer;

            SigningTime = signer.SigningTime;
            if (signer.DigestAlgorithm != null && signer.MessageDigest != null)
            {
                MessageDigest = new DigestAlgorithmAndValueModel(signer.DigestAlgorithm, signer.MessageDigest);
            }
            if (signer.SignatureAlgorithm != null && signer.SignatureValue != null)
            {
                Signature = new SignatureAlgorithmAndValueModel(signer.SignatureAlgorithm, signer.SignatureValue);
            }
            if (signer.SignaturePolicy != null && !signer.SignaturePolicy.IsImplicit)
            {
                SignaturePolicy = new SignaturePolicyIdentifierModel(signer.SignaturePolicy);
            }
            if (signer.SigningCertificate != null)
            {
                Certificate = new CertificateModel(signer.SigningCertificate);
            }
            if (signer.SignatureTimeStamps.Any())
            {
                Timestamps = signer.SignatureTimeStamps.Select(s => new CadesTimestampModel(s)).ToList();
            }

            // Get date reference
            try {
                var dateReference = signer.GetDateReference(out bool isCertified);
                if (isCertified)
                {
                    CertifiedDateReference = dateReference;
                }
            } catch {
                // do nothing
            }
        }