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); }