public PDFWriter CreateWriter(Document forDoc, System.IO.Stream outputStream, int generation, PDFTraceLog log)
        {
            if (null == this.WriterFactory)
            {
                IDocumentPasswordSettings settings = null;
                if (forDoc.PasswordProvider != null && forDoc.PasswordProvider.IsSecure(forDoc.LoadedSource, out settings))
                {
                    this.WriterFactory = GetSecureWriter(forDoc, settings);
                }

                else if (forDoc.Permissions.HasRestrictions)
                {
                    if (forDoc.ConformanceMode == ParserConformanceMode.Lax)
                    {
                        forDoc.TraceLog.Add(TraceLevel.Error, "Writer", "No Password provider has been set on the document, so using a random password for this generation. As a minimum an owner password should be set.");
                        Guid pass  = Guid.NewGuid();
                        var  passS = pass.ToString().Substring(14);

                        forDoc.PasswordProvider = new Secure.DocumentPasswordProvider(passS);
                        forDoc.PasswordProvider.IsSecure(forDoc.LoadedSource, out settings);

                        this.WriterFactory = GetSecureWriter(forDoc, settings);
                    }
                    else
                    {
                        throw new System.Security.SecurityException("No Password provider has been set on the document, so restrictions cannot be applied. As a minimum an owner password should be set.");
                    }
                }
                else
                {
                    this.WriterFactory = GetStandardWriter(forDoc);
                }
            }
            return(this.WriterFactory.GetInstance(forDoc, outputStream, generation, this, log));
        }
        public static bool TryGetPasswordSettings(string path, out IDocumentPasswordSettings settings)
        {
            var opts = Scryber.ServiceProvider.GetService <IScryberConfigurationService>();

            settings = null;
            return(false);
        }
        protected virtual PDFWriterFactory GetSecureWriter(Document forDoc, IDocumentPasswordSettings settings)
        {
            if (null == forDoc)
            {
                throw new ArgumentNullException("forDoc");
            }

            SecureString owner = null;
            SecureString user  = null;

            PDFDocumentID id          = forDoc.DocumentID;
            var           permissions = forDoc.Permissions;


            if (null != settings)
            {
                owner = settings.OwnerPassword;
                user  = settings.UserPassword;
            }

            if (null == id)
            {
                id = PDFDocumentID.Create();
                forDoc.DocumentID = id;
            }

            if (null == permissions)
            {
                permissions = new DocumentPermissions();
            }

            var encFactory = permissions.GetFactory();
            var enc        = encFactory.InitEncrypter(owner, user, id, permissions.GetRestrictions(), forDoc.PerformanceMonitor);

            return(new PDFSecureWrite14Factory(enc));
        }
 public bool IsSecure(string documentpath, out IDocumentPasswordSettings settings)
 {
     settings = new PDFDocumentPasswordSettings(documentpath, configowner, configuser, restrictions, allowoverride);
     return(true);
 }
 /// <summary>
 /// IPDFSecurePasswordProvider interface implementation for the IsSecure method.
 /// </summary>
 /// <param name="documentpath">The path to the document</param>
 /// <param name="settings">Set to the passwords for the document if IsSecure returns true</param>
 /// <returns>True if the document should be secured</returns>
 public virtual bool IsSecure(string documentpath, out IDocumentPasswordSettings settings)
 {
     settings = new SecureDocumentPasswordSettings(this.OwnerPassword, this.UserPassword);
     return(true);
 }
 public bool IsSecure(string documentpath, out IDocumentPasswordSettings settings)
 {
     settings = new SecureDocumentPasswordSettings(documentpath, configowner, configuser, restrictions, allowoverride, SecurityType.Standard128Bit);
     return(true);
 }