Exemple #1
0
        public virtual void OnCreateCache(IPdfSigningSession pdfPostSigningSession, ISigningDocument document, CacheItemPolicy cacheItemPolicy, out bool removerCache)
        {
            removerCache = true;

            if (!Cache.Add(pdfPostSigningSession.FileId, pdfPostSigningSession, cacheItemPolicy))
            {
                throw new FileBeingSignedException();
            }
        }
Exemple #2
0
        protected virtual ISigningResult GetDocumentAuthenticatedAttributesInternal
        (
            ISigningDocument document,
            string ownerIdentification,
            string location,
            string reason,
            string hashAlgorithm,
            string signatureAlgorithm,
            X509Certificate2 userCertificate,
            IDictionary <string, object> parameters = default(IDictionary <string, object>),
            int timeoutInSeconds = default(int)
        )
        {
            var removeCache = false;
            var result      = default(ISigningResult);

            try
            {
                var pdfSigningSession = new PdfSigningSession
                {
                    FileId              = document.FileId,
                    UserId              = document.UserId,
                    FilePath            = document.FilePath,
                    HashAlgorithm       = hashAlgorithm,
                    OwnerIdentification = ownerIdentification,
                    SignatureAlgorithm  = signatureAlgorithm,
                    SignatureVisible    = true,
                    UserCertificate     = userCertificate,
                    Location            = location,
                    Reason              = reason,
                    Parameters          = parameters
                };

                if (timeoutInSeconds == default(int))
                {
                    timeoutInSeconds = CacheTimeoutInSeconds;
                }

                var cachePolicy = GetCacheItemPolicy(timeoutInSeconds);
                OnCreateCache(pdfSigningSession, pdfSigningSession, cachePolicy, out removeCache);

                //necessário criar o documento somente depois que o cache foi criado
                //para evitar exceção por utilização simultânea do documento temporário
                CopyFileToTemporaryFilePath(pdfSigningSession);
                UpdateDocument(pdfSigningSession, document);

                pdfSigningSession.AuthenticatedAttributes = PdfSignerService
                                                            .CreateAuthenticatedAttribute(pdfSigningSession);

                result = new SigningResult
                {
                    FileId = document.FileId,
                    AuthenticatedAttributeBase64 = pdfSigningSession.AuthenticatedAttributes.ValueBase64,
                    Exception = default(Exception)
                };
            }
            catch (Exception ex)
            {
                result = new SigningResult
                {
                    FileId = document.FileId,
                    AuthenticatedAttributeBase64 = default(string),
                    Exception = ex
                };

                if (removeCache)
                {
                    Cache
                    .Remove(document.FileId);
                }

                OnDocumentError(document, parameters, ex);
            }

            return(result);
        }
Exemple #3
0
 public virtual void UpdateDocument(IPdfSigningSession pdfPostSigningSession, ISigningDocument document)
 {
 }
Exemple #4
0
 public virtual void OnDocumentError(ISigningDocument document, IDictionary <string, object> parameters, Exception exception)
 {
 }
Exemple #5
0
 public abstract void CopyFileToTemporaryFilePath(ISigningDocument document);