using System; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using Android.App; using System.IO; using Android.Content; using Android.OS; using KeePassLib; using KeePassLib.Keys; using KeePassLib.Serialization; using keepass2android.Io; using Keepass2android.Javafilestorage; namespace keepass2android { public interface ICertificateValidationHandler { /// /// Handles a failed certificate validation. Returns true if the users wants to continue, false otherwise. /// see http://msdn.microsoft.com/en-us/library/system.net.icertificatepolicy(v=vs.110).aspx /// //bool OnServerCertificateError(int certificateProblem); RemoteCertificateValidationCallback CertificateValidationCallback { get; } } /// /// Interface through which Activities and the logic layer can access some app specific functionalities and Application static data /// /// This also contains methods which are UI specific and should be replacable for testing. public interface IKp2aApp : ICertificateValidationHandler { /// /// Locks the currently open database, quicklocking if available (unless false is passed for allowQuickUnlock) /// void LockDatabase(bool allowQuickUnlock = true); /// /// Loads the specified data as the currently open database, as unlocked. /// void LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, CompositeKey compKey, ProgressDialogStatusLogger statusLogger, IDatabaseFormat databaseFormat); /// /// Returns the current database /// Database GetDb(); /// /// Tell the app that the file from ioc was opened with keyfile. /// void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile); /// /// Creates a new database and returns it /// Database CreateNewDatabase(); /// /// Returns the user-displayable string identified by stringKey /// string GetResourceString(UiStringKey stringKey); /// /// Returns the value from the preferences corresponding to key /// bool GetBooleanPreference(PreferenceKey key); /// /// Asks the user the question "messageKey" with the options Yes/No/Cancel, calls the handler corresponding to the answer. /// void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey, EventHandler yesHandler, EventHandler noHandler, EventHandler cancelHandler, Context ctx); /// /// Asks the user the question "messageKey" with the options Yes/No/Cancel, but the yes/no strings can be selected freely, calls the handler corresponding to the answer. /// void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey, UiStringKey yesString, UiStringKey noString, EventHandler yesHandler, EventHandler noHandler, EventHandler cancelHandler, Context ctx); /// /// Returns a Handler object which can run tasks on the UI thread /// Handler UiThreadHandler { get; } IProgressDialog CreateProgressDialog(Context ctx); /// /// returns the file storage for the given ioc. might be a caching file storage /// IFileStorage GetFileStorage(IOConnectionInfo iocInfo); /// /// returns the file storage for the given ioc. if allowCache=false, no cached file storage is returned /// IFileStorage GetFileStorage(IOConnectionInfo iocInfo, bool allowCache); void TriggerReload(Context context); bool CheckForDuplicateUuids { get; } ICertificateErrorHandler CertificateErrorHandler { get; } } }