documentation, exported from Codeplex and updated
18
docs/Advanced usage of the Keepass2Android keyboard.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Installing dictionaries
|
||||
Keepass2Android will load dictionaries for your current language both from AnySoftKeyboard and from Hacker's keyboard.
|
||||
* For AnySoftKeyboard dictionaries visit: [https://play.google.com/store/search?q=anysoftkeyboard+dictionary&c=apps](https://play.google.com/store/search?q=anysoftkeyboard+dictionary&c=apps)
|
||||
* For Hacker's Keyboard dictionaries visit: [https://play.google.com/store/search?q=hacker%27s%20keyboard%20dictionary&c=apps](https://play.google.com/store/search?q=hacker%27s%20keyboard%20dictionary&c=apps)
|
||||
|
||||
# Automatic keyboard switching (requires ADB)
|
||||
Starting with Keepass2Android 1.02-pre1, you can use the [KeyboardSwap Plugin](https://play.google.com/store/apps/details?id=keepass2android.plugin.keyboardswap2) to switch to the KP2A keyboard automatically instead of bringing up the Input method selection dialog (e.g. after using the Share URL feature). To setup the plugin please follow the instructions on [the PlayStore website](https://play.google.com/store/apps/details?id=keepass2android.plugin.keyboardswap2)
|
||||
|
||||
# Deprecated: Automatic keyboard switching on rooted devices
|
||||
|
||||
In order to automatically switch to the KP2A keyboard and back, you need to
|
||||
* have a rooted device (per Android security policies)
|
||||
* have at least KP2A version 0.9.3-pre2
|
||||
* install the Secure Settings app with the "System+" module available in Secure Settings v. 1.3.4 and above. **Note:** This is no longer available for recent Android versions.
|
||||
* Go to the KP2A keyboard settings. Enable auto-switch on rooted devices.
|
||||
|
||||
If you go to a website, select "Share URL" -> Keepass2Android, the keyboard should be switched as soon as you locate the entry or when it's found automatically.
|
||||
|
||||
11
docs/Available Plug-ins.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# QR Plug-in
|
||||
Displays password entries as QR code; can be used to scan QR codes which can then be added to Keepass2Android.
|
||||
[https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https://play.google.com/store/apps/details?id=keepass2android.plugin.qr)
|
||||
|
||||
# InputStick Plug-in
|
||||
Allows to send text from KP2A via InputStick to your PC.
|
||||
[https://play.google.com/store/apps/details?id=com.inputstick.apps.kp2aplugin](https://play.google.com/store/apps/details?id=com.inputstick.apps.kp2aplugin)
|
||||
|
||||
# USB Keyboard Plug-in
|
||||
Allows to send text from KP2A to your PC. Requires special kernel on the Android device.
|
||||
[https://play.google.com/store/apps/details?id=th.in.whs.k2ausbkbd](https://play.google.com/store/apps/details?id=th.in.whs.k2ausbkbd)
|
||||
118
docs/Comparison of Keepass apps for Android.html
Normal file
@@ -0,0 +1,118 @@
|
||||
<div class="wikidoc">
|
||||
<h1>Comparison of Keepass apps for Android</h1>
|
||||
<p>This page was created to give you a short overview of the features of Keepass2Android vs. Keepass2Android Offline. As Keepass2Android is based on Keepassdroid (by Brian Pellin), there are quite a few similarities here, as well, so we added Keepass2Android
|
||||
vs. Keepassdroid comparison as well. "Better" properties are highlighted in bold. The page was created in 12/2013. If any information is out of date, please leave a note in the comments section.</p>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>
|
||||
<h3>Keepass2Android</h3>
|
||||
</th>
|
||||
<th>
|
||||
<h3>Keepass2Android Offline</h3>
|
||||
</th>
|
||||
<th>
|
||||
<h3>Keepassdroid</h3>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Play Store link</strong></td>
|
||||
<td><a href="https://play.google.com/store/apps/details?id=keepass2android.keepass2android">https://play.google.com/store/apps/details?id=keepass2android.keepass2android</a></td>
|
||||
<td><a href="https://play.google.com/store/apps/details?id=keepass2android.keepass2android_nonet">https://play.google.com/store/apps/details?id=keepass2android.keepass2android_nonet</a></td>
|
||||
<td><a href="https://play.google.com/store/apps/details?id=com.android.keepass">https://play.google.com/store/apps/details?id=com.android.keepass</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Technology</strong></td>
|
||||
<td>Mono for Android, Java</td>
|
||||
<td>Mono for Android, Java</td>
|
||||
<td>Java</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass 2.x (kdbx) support</strong></td>
|
||||
<td><strong>write and read</strong></td>
|
||||
<td><strong>write and read</strong></td>
|
||||
<td>read (write in beta)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass 2.x feature support</strong></td>
|
||||
<td><strong>Viewing and editing of tags, attachments, additional fields, TAN support</strong></td>
|
||||
<td><strong>Viewing and editing of tags, attachments, additional fields, TAN support</strong></td>
|
||||
<td>Edit standard fields only, no display/edit of attachments</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass 1.x (kdb) support</strong></td>
|
||||
<td>currently read-only</td>
|
||||
<td>currently read-only</td>
|
||||
<td><strong>yes</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Storage locations</strong></td>
|
||||
<td>SD Card,<strong> Cloud (Dropbox, Google Drive, OneDrive), Web (FTP/HTTP/HTTPS/WebDav), SFTP</strong></td>
|
||||
<td>SD Card</td>
|
||||
<td>SD Card</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>File choosers</strong></td>
|
||||
<td><strong>Internal or third party</strong></td>
|
||||
<td><strong>Internal or third party</strong></td>
|
||||
<td>Third party</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Required permissions</strong></td>
|
||||
<td>Internet, SD card, Manage accounts</td>
|
||||
<td><strong>SD card</strong></td>
|
||||
<td><strong>SD card</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Android 4.x style</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Database locking</strong></td>
|
||||
<td><strong>QuickUnlock</strong> or full lock</td>
|
||||
<td><strong>QuickUnlock</strong> or full lock</td>
|
||||
<td>Full lock only</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Browser integration</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Secure keyboard</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Database unlocking</strong></td>
|
||||
<td><strong>password, keyfile, One-Time-Passwords (supports Yubikey NEO with NFC), KeeChallenge</strong></td>
|
||||
<td><strong>password, keyfile, One-Time-Passwords (supports Yubikey NEO with NFC), KeeChallenge</strong></td>
|
||||
<td>password, keyfile</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Keepass plugin compatibility</strong></td>
|
||||
<td><strong>Twofish Cipher, KeeChallenge, TrayTOTP, KeeOTP</strong></td>
|
||||
<td><strong>Twofish Cipher, KeeChallenge, TrayTOTP, KeeOTP</strong></td>
|
||||
<td>Twofish Cipher</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Extensible with plugins</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Database export</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td><strong>yes</strong></td>
|
||||
<td>no</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p> </p>
|
||||
</div><div class="ClearBoth"></div>
|
||||
80
docs/Documentation.md
Normal file
@@ -0,0 +1,80 @@
|
||||
**Note:** This is an incomplete and preliminary documentation. More documentation will be added as requests come in or when the app is more feature stable.
|
||||
If you want, I'd be happy if you contribute texts for this place!
|
||||
|
||||
If you think something is missing in the documentation, please create an issue at https://github.com/PhilippC/keepass2android/issues
|
||||
|
||||
# What you should know and think about
|
||||
If you store important information using Keepass2Android, you should know a little bit about what's going on:
|
||||
* Keepass2Android stores your password in an encrypted file. It is *your responsibility* to backup this file regularly and safely.
|
||||
* There is no way for anyone, including the app's author, to access the information stored in your password database without
|
||||
** having the database file
|
||||
** knowing the master password (and additional second factor if you chose one)
|
||||
This means that **if you forget the master password, your database is lost**! So make sure you remember the password. You might also want to think about:
|
||||
** What happens if I have an accident? Should any trusted person be able to access my database?
|
||||
** What happens if my phone gets lost or stolen? Do I know how to recover my database from a backup or the cloud?
|
||||
|
||||
|
||||
# Getting started
|
||||
|
||||
## Opening an existing database
|
||||
Many users are already using Keepass 2 on Windows and thus have their passwords stored in a Keepass database, typically a file with ending .kdbx. For opening such an existing database, there are two main options:
|
||||
* You can open the file directly if it is located on a webserver or in the cloud. Use "Open Database" on the startscreen. By default, files from the cloud or servers are cached in the application's cache directory after loading them once. This allows to access your files even when you're offline.
|
||||
* If you don't have your database stored on a webserver or in the cloud (or if you're using KP2A Offline) you need to copy your kdbx-Database to your phone. I suggest to use a sync tool like FolderSync. Such a tool copies your database to your local storage, so you always have it accessible. FolderSync can access your database if you have it on a network share or use any other common storage.
|
||||
|
||||
## Creating a new database
|
||||
Select "Create new database" from the start screen. Tap the integrated help icons for more information. Note that by default, the database is created as a local file. Please consider making backups regularly or select a location in the cloud.
|
||||
|
||||
## Getting passwords into password fields
|
||||
There are many ways how to enter the passwords from your database in the corresponding fields. By default, the clipboard as well as the KP2A keyboard are activated in the settings:
|
||||
* The KP2A keyboard is the recommended way because it's safe against clipboard loggers: Whenever you select an entry, the KP2A keyboard notification will appear in the notification bar. Click it to activate the keyboard. (The first time you do this, you are required to enable the keyboard in the system settings. This must be done by the user for Android security reasons.) As soon as it's activated, you can tap a field where you want to enter data from the selected entry. The KP2A keyboard will come up. Click the KP2A key (on the bottom left) to select whether you want to enter Username/password etc. When you're done, click the Keyboard key (next to the KP2A key) to switch back to your favorite keyboard.
|
||||
* You can enable the Keepass2Android Autofill service in the system's accessibility settings which allows to fill data using Android's accessibility system. This works with many apps including Chrome browser but is not supported for Firefox on Android.
|
||||
* The clipboard based approach can be used as well: Pull the notification bar down and select "Copy username/password to clipboard". Then long-tap the field where you want to paste the data. A small "paste" button should come up. Note, however, that information in the clipboard can be monitored by all apps on your device.
|
||||
|
||||
These options can be used in different workflows:
|
||||
# Browser-based workflow: If you are browsing the web and need to enter crendentials for a webpage, a simple and powerful workflow is to use the "Share URL" option from the browser's menu. Then select Keepass2Android (or KP2A Offline). Open your database (if it's not already opened) and select the entry you want to enter (if KP2A did not already select the appropriate entry). Use the built-in keyboard or the clipboard to enter the password.
|
||||
# Autofill service based workflow: If you have enabled the autofill service and open a (supported) app with a password field, a notification appears in the notification bar. Select this notification to select the appropriate entry. When you return to the app, the password and user field should be filled already.
|
||||
# KP2A based workflow for websites: Open KP2A, open your database, select your entry (in this step, the notification bar items should show up already). Now click the URL link of the entry to open a browser window with the website. Use one of the methods described above to enter the credentials.
|
||||
# KP2A Keyboard based workflow: When you are in a text field, you can use the Android icon in the notification bar to switch to the KP2A keyboard. Hit the KP2A key to select an icon. After it's selected, hit the KP2A key again to enter the desired field.
|
||||
|
||||
## Creating a new account
|
||||
Assume you want to create an account on a website. If you do not have a database yet, see above. As soon as you have a database, you may proceed as follows:
|
||||
* Go to the website you want to create the account for
|
||||
* Select Share/Share URL from the browser's menu and tap "Keepass2Android"
|
||||
* Log in to your database (if it's not already unlocked)
|
||||
* You will see the search result screen with "No search results"
|
||||
* Tap "Create entry for URL"
|
||||
* Choose the desired group, then tap the "+"-button to add an entry.
|
||||
* Tap the "..." button next to the password field to launch the password generator, create your password and then select "Accept"
|
||||
* Enter a name for the entry
|
||||
* Enter the username you want to use for the entry
|
||||
* Tap "Save" on the top
|
||||
* You should see notifications like "Entry is available through KP2A keyboard" and/or "Copy username/password to clipboard". If not, view the new entry by clicking it.
|
||||
* Return back to the browser.
|
||||
* Use the notifications to enter your new credentials. See "Getting passwords into the password fields" for more details.
|
||||
* If the user name you entered is not available or valid, choose a different one but copy it to clipboard. After creating the account, don't forget to update the new entry.
|
||||
|
||||
# Keepass2Android vs Keepass2Android Offline vs Keepassdroid
|
||||
What's the difference between these apps? There is a short comparison on [Comparison of Keepass apps for Android](Comparison-of-Keepass-apps-for-Android) to help you pick the best for you!
|
||||
|
||||
# Advanced topics
|
||||
## YubiKey NEO support for One-Time-Passwords
|
||||
Please see the [How to use Keepass2Android with YubiKey NEO](How-to-use-Keepass2Android-with-YubiKey-NEO) page.
|
||||
|
||||
## Advanced usage of the Keepass2Android keyboard
|
||||
Please see the [Advanced usage of the Keepass2Android keyboard](Advanced-usage-of-the-Keepass2Android-keyboard) page.
|
||||
|
||||
# FAQ
|
||||
|
||||
* Should I use the KP2A keyboard for entering passwords?
|
||||
The KP2A keyboard is meant to quickly "paste" or "type" values from your database to any text fields by using the KP2A icon. The QUERTY keyboard is just for convenience (if you just have the KP2A keyboard activated and need to enter a few letters). However, every other (trustworthy) keyboard is ok as well to enter sensitive information: Keyboard's aren't unsafe in Android. Only the clipboard is. Thus, the KP2A keyboard allows to get information out of the database without using the clipboard.
|
||||
**You can use any keyboard when you enter the main database password**
|
||||
|
||||
* Is it safe to store my kdbx file in the cloud?
|
||||
While it may happen that someone gets access to your kdbx file in the cloud, there is still no need to worry: the purpose of encryption is to protect the data even in case someone gets the kdbx file! As long as you are using a safe master key, you're safe!
|
||||
|
||||
* Why is Keepass2Android so big?
|
||||
Please see [Keepass2Android Apk](Keepass2Android-Apk) for more information.
|
||||
|
||||
# For developers
|
||||
If you are interested in adding new features, you have two options:
|
||||
Either your features can be implemented as a plug-in. Please see [How to create a plug-in?](How-to-create-a-plug-in_) for more information. Or you add the features directly in the source code of the projects and create a pull request.
|
||||
155
docs/How to create a plug-in_.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# How to create a plug-in or connect from your app
|
||||
|
||||
Creating a plug-in for Keepass2Android or enabling your app to query credentials from Keepass2Android is pretty simple. Please follow the steps below to get started. In case you have any questions, please contact me.
|
||||
|
||||
## Preparations
|
||||
First check out the source code and import the Keepass2AndroidPluginSDK from [https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/](https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/) into your workspace. You should be able to build this library project.
|
||||
|
||||
Now add a reference to the PluginSDK library from your existing app or add a new plug-in app and then add the reference.
|
||||
|
||||
## Authorization
|
||||
|
||||
Keepass2Android stores very sensitive user data and therefore implements a plug-in authorization scheme based on broadcasts sent between the plug-in and the host app (=Keepass2Android or Keepass2Android Offline). Before your app/plug-in gets any information from KP2A, the user will have to grant your app/plug-in access to KP2A. As not every app/plug-in requires access to all information, you must specify which scopes are required by your app. The implemented scopes can be found in [https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Strings.java](https://keepass2android.codeplex.com/SourceControl/latest#src/java/Keepass2AndroidPluginSDK/src/keepass2android/pluginsdk/Strings.java).
|
||||
|
||||
To tell Kp2a that you're a plug-in, you need to add a simple BroadcastReceiver like this:
|
||||
|
||||
{{
|
||||
|
||||
public class PluginAAccessReceiver
|
||||
extends keepass2android.pluginsdk.PluginAccessBroadcastReceiver
|
||||
{
|
||||
|
||||
@Override
|
||||
public ArrayList<String> getScopes() {
|
||||
ArrayList<String> scopes = new ArrayList<String>();
|
||||
scopes.add(Strings.SCOPE_DATABASE_ACTIONS);
|
||||
scopes.add(Strings.SCOPE_CURRENT_ENTRY);
|
||||
return scopes;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}}
|
||||
|
||||
Here, you define the method getScopes where the list of scopes is created which must be granted by the user. The actual logic of the authorization process is implemented by the base class in the sdk.
|
||||
|
||||
In order to make this broadcast receiver visible to KP2A, add the following lines (probably with the name adapted to your class name) in the AndroidManifest.xml:
|
||||
|
||||
{{
|
||||
<receiver android:name="PluginAAccessReceiver" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="keepass2android.ACTION_TRIGGER_REQUEST_ACCESS" />
|
||||
<action android:name="keepass2android.ACTION_RECEIVE_ACCESS" />
|
||||
<action android:name="keepass2android.ACTION_REVOKE_ACCESS" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
}}
|
||||
|
||||
Please also add a few strings in your resource files (e.g. strings.xml) with the following keys:
|
||||
|
||||
{{
|
||||
<string name="kp2aplugin_title">The Great PluginA</string>
|
||||
<string name="kp2aplugin_shortdesc">Test plugin to demonstrate how plugins work</string>
|
||||
<string name="kp2aplugin_author">[your name here](your-name-here)</string>
|
||||
}}
|
||||
These strings will be displayed to the user when KP2A asks if access should be granted.
|
||||
|
||||
## Modifying the entry view
|
||||
You can add menu options for the full entry or for individual fields of the entry when displayed to the user. This is done, for example, by the QR plugin ([https://play.google.com/store/apps/details?id=keepass2android.plugin.qr](https___play.google.com_store_apps_details_id=keepass2android.plugin.qr)).
|
||||
In addition, it is even possible to add new fields or modify existing fields. Please see the sample plugin "PluginA" in the KP2A repository for a simple example on how to do this:
|
||||
[https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/src/keepass2android/plugina/PluginAActionReceiver.java](https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/src/keepass2android/plugina/PluginAActionReceiver.java)
|
||||
|
||||
## Querying credentials
|
||||
KP2A 0.9.4 adds a great opportunity for third party apps: Instead of prompting the user to enter credentials or a passphrase, the app should try to get the data from KP2A if it is installed: If the user grants (or previously granted) access for the app, KP2A will automatically retrieve the matching entry. User action is only required if the KP2A database is locked (user will usually unlock it with the short QuickUnlock code) or if no matching entry is found (user can then create a new entry or select an existing one. in the latter case KP2A will offer to add entry information so that the entry will be found automatically next time).
|
||||
|
||||
To implement this, simply follow the steps descrIbed above in the sections Preparation and Authorization. Then, wherever appropriate in your app, do something like this:
|
||||
|
||||
{{
|
||||
try
|
||||
{
|
||||
PlaceholderFragment.this.startActivityForResult(
|
||||
Kp2aControl.getQueryEntryIntentForOwnPackage(),
|
||||
1);
|
||||
}
|
||||
catch (ActivityNotFoundException e)
|
||||
{
|
||||
Toast.makeText(PlaceholderFragment.this.getActivity(), "no KP2A host app found", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
(of course you can use PacketManager to check if the intent can be started instead of catching the Exception).
|
||||
|
||||
Instead of querying credentials associated with your own app, you might want to query other credentials as well. instead of Kp2aControl.getQueryEntryIntentForOwnPackage() use
|
||||
{{
|
||||
Kp2aControl.getQueryEntryIntent("google.com")
|
||||
}}
|
||||
This requires {"SCOPE_QUERY_CREDENTIALS (whereas getQueryEntryIntentForOwnPackage() requires SCOPE_QUERY_CREDENTIALS_FOR_OWN_PACKAGE)"}.
|
||||
|
||||
The credential data can be retrieved in onActivityResult():
|
||||
|
||||
{{
|
||||
if ((requestCode == 1) //queryEntry for own package
|
||||
&& (resultCode == RESULT_OK)) // ensure user granted access and selected something
|
||||
{
|
||||
HashMap<String, String> credentials = Kp2aControl.getEntryFieldsFromIntent(data);
|
||||
if (!credentials.isEmpty())
|
||||
{
|
||||
//here we go!
|
||||
Toast.makeText(getActivity(), "retrieved credenitals! Username="+credentials.get(KeepassDefs.UserNameField), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
}}
|
||||
|
||||
Note that you get access to all strings (Title, Username, Password, URL, Notes + any user defined strings) in the entry. This may be in intersting in combination with the following section:
|
||||
|
||||
## Storing data in KP2A
|
||||
If you allow the user to set up an account in your app or create a password, e.g. for encryption, please add an option to store this data in the Keepass2Android database, as this will lead to great workflows for the user. It's as simple as
|
||||
|
||||
{{
|
||||
try {
|
||||
HashMap<String, String> fields = new HashMap<String, String>();
|
||||
//standard fields
|
||||
fields.put(KeepassDefs.TitleField, "plugin A");
|
||||
fields.put(KeepassDefs.UserNameField, "John Doe");
|
||||
fields.put(KeepassDefs.PasswordField, "top secret");
|
||||
//associate entry with our app. If we would require the URL field for a web URL,
|
||||
//this string could be added in any other (e.g. a custom) field
|
||||
fields.put(KeepassDefs.UrlField, "androidapp://"+getActivity().getPackageName());
|
||||
//custom field:
|
||||
fields.put(PLUGIN_A_PASSPHRASE, "some long text");
|
||||
//mark custom field as protected (i.e. display masked, enable memory protection in Keepass2)
|
||||
ArrayList<String> protectedFields = new ArrayList<String>();
|
||||
protectedFields.add(PLUGIN_A_PASSPHRASE);
|
||||
|
||||
//add to KP2A
|
||||
PlaceholderFragment.this.startActivityForResult(
|
||||
Kp2aControl
|
||||
.getAddEntryIntent(fields, protectedFields),
|
||||
2);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(
|
||||
PlaceholderFragment.this.getActivity(),
|
||||
"no KP2A host app found",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}}
|
||||
|
||||
Note that this does not even require access authorization because the user will actively save the entry anyways (after selecting the group where to create it.)
|
||||
|
||||
## Get information about database actions
|
||||
With {"SCOPE_DATABASE_ACTIONS"}, you will be informed when the user opens, closes, locks or unlocks the database including the file name information.
|
||||
|
||||
PluginA uses this to simply display a toast message in its ActionReceiver:
|
||||
|
||||
{{
|
||||
@Override
|
||||
protected void dbAction(DatabaseAction db) {
|
||||
|
||||
Log.d("PluginA", db.getAction() + " in file " + db.getFileDisplayName() + " ("+db.getFilePath()+")");
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
## Sample plugin
|
||||
Most example code from above is taken from the simple sample plugin "PluginA" as can be found on [https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/](https://keepass2android.codeplex.com/SourceControl/latest#src/java/PluginA/)
|
||||
31
docs/How to use Keepass2Android with YubiKey NEO.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<div class="wikidoc">
|
||||
<h1>How to use Keepass2Android with YubiKey NEO</h1>
|
||||
<p>Please refer to the documentation on the Keepass website (<a href="http://keepass.info/help/kb/yubikey.html">http://keepass.info/help/kb/yubikey.html</a>) or the Yubico website (<a href="http://www.yubico.com/applications/password-management/consumer/keepass/">http://www.yubico.com/applications/password-management/consumer/keepass/</a>)
|
||||
on how to set up a Keepass 2 database with Yubikey/OTP protection.<br>
|
||||
<br>
|
||||
After successful setup you should have the database file, e.g. yubi.kdbx, and the OTP auxiliary file, e.g. yubi.otp.xml, both in the same folder.<br>
|
||||
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767825"><img title="OTPAuxFile" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767826" alt="OTPAuxFile" width="513" height="40" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<p>Make sure you make <strong>both files</strong> available to Keepass2Android, e.g. by placing them both in your Dropbox.</p>
|
||||
<p>Now you should check your NDEF setup of the Yubikey NEO. Therefore, go to the Tools menu in the Yubico Personalization Utility. Select the same slot as used for OTPs with Keepass 2. The default setting for NDEF type and payload should work. If you experience
|
||||
problems, you may use the configuration as shown in this screenshot or simply press the “Reset” button:</p>
|
||||
<p><a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767911"><img title="image" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767912" alt="image" width="760" height="622" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<p><br>
|
||||
<br>
|
||||
In Keepass2Android, select "Open file" and locate your database file, e.g. yubi.kdbx.<br>
|
||||
<br>
|
||||
In the password screen under "Select master key type" select "Password + OTP".</p>
|
||||
<p><a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767913"><img title="Screenshot_2013-12-13-06-38-50" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767914" alt="Screenshot_2013-12-13-06-38-50" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<p>Click "Load auxiliary OTP file". This is required to load the information how many OTPs must be entered. As loading the file might require user action in some cases, this is not performed automatically.<br>
|
||||
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767915"><img title="Screenshot_2013-12-13-06-38-12" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767916" alt="Screenshot_2013-12-13-06-38-12" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
|
||||
After loading the OTP auxiliary file, you should see a few text fields for entering the OTPs. Now swipe your YubiKey NEO at the back of your Android device. If you have multiple apps which can handle NFC actions, you might be prompted to select which app to
|
||||
use. Select Keepass2Android in this case. Swipe your YubiKey again until all OTP fields are filled. Note: You don't need to select the next text field, this is done automatically!<br>
|
||||
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767917"><img title="Screenshot_2013-12-13-06-38-36" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767918" alt="Screenshot_2013-12-13-06-38-36" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a><br>
|
||||
Don't forget to also enter your password and click OK. You will see the “Saving auxiliary OTP file…” dialog. Note that there is some encryption envolved which is probably fast on your PC but might take some time on your mobile device. You
|
||||
can reduce the look-ahead window length to speed this up.<br>
|
||||
<a href="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767919"><img title="Screenshot_2013-12-13-06-39-47" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=keepass2android&DownloadId=767920" alt="Screenshot_2013-12-13-06-39-47" width="204" height="360" border="0" style="padding-top:0px; padding-left:0px; display:inline; padding-right:0px; border:0px"></a></p>
|
||||
<h2> </h2>
|
||||
<h2>A note about offline access</h2>
|
||||
<p>If your database is stored in the cloud or on the web, you can still access it if you have enabled file caching (which is on by default). With OTPs, this becomes a little bit more complicated: If you repeatedly open your datbase while being offline, the
|
||||
OTP counter stored on the Yubikey will be increased. Don’t forget to synchronize the database (which will also synchronize the OTP auxiliary file) as soon as possible to avoid problems with accessing your database on other devices! If you often need
|
||||
to open the database while you’re offline, consider increasing the look-ahead window length!</p>
|
||||
</div><div class="ClearBoth"></div>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 26 KiB |
BIN
docs/How to use Keepass2Android with YubiKey NEO_image_2.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/How to use Keepass2Android with YubiKey NEO_image_thumb.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
25
docs/Keepass2Android Apk.md
Normal file
@@ -0,0 +1,25 @@
|
||||
Keepass2Android's apk is pretty big, e.g. when comparing to Keepassdroid. The main difference is that Keepass2Android is built on Mono for Android. Mono is an open-source implementation of the Microsoft .Net Framework (installed on pretty much every Windows PC). On Windows, the .net framework requires several hundred MB (but only once, not for every application). On Android devices, Mono is not installed globally. Instead, it is packaged into every app. The more features from Mono are required, the bigger the package becomes.
|
||||
|
||||
Here's a list of what is contained in the Keepass2Android 0.9.1 application package:
|
||||
|
||||
{{
|
||||
Mono for Android
|
||||
.net dlls 5.0 MB
|
||||
Runtime 2.5 MB
|
||||
Google libraries 0.8 MB
|
||||
(for Drive support)
|
||||
|
||||
Resources Strings, Icons.. 2.1 MB
|
||||
Password Font 0.2 MB
|
||||
Java Code including Dropbox 1.1 MB
|
||||
GDrive, SkyDrive
|
||||
libraries
|
||||
|
||||
Keepass library 0.2 MB
|
||||
Keepass2Android Code 0.3 MB
|
||||
Java/Mono bindings 0.5 MB
|
||||
|
||||
rest 0.3 MB
|
||||
|
||||
TOTAL 13 MB
|
||||
}}
|
||||
26
docs/Privacy Policy.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Who we are
|
||||
|
||||
Philipp Crocoll
|
||||
Wallonenstr. 4
|
||||
76297 Stutensee
|
||||
Germany
|
||||
|
||||
is the author of Keepass2Android and Keepass2Android Offline.
|
||||
|
||||
# What data is collected?
|
||||
|
||||
The contents of your password database is yours and is never collected by us. Keepass2Android stores this data on a location chosen by the user and encrypted in the Keepass database format. The app author does not have any access, neither to the files nor the contents. Depending on the user's choice of the storage location, the files may be stored on third-party servers like Dropbox or Google Drive.
|
||||
|
||||
Keepass2Android does not collect personal identifiable information. After unexpected errors or crashes of the app, the user may be asked if he/she whants to send an error report (Keepass2Android regular only). Error reports do not contain database contents, except (depending on the error message) UUIDs of entries. They may contain file paths if the error was related to a failed file operation. Error reports sent from inside the app are sent using Xamarin Insights.
|
||||
|
||||
The app author does not pass any of this data to third parties.
|
||||
|
||||
# What Android permissions are required?
|
||||
|
||||
* **Internet** (Keepass2Android regular only): Required to allow the user to read/store password databases or key files on remote locations, e.g. Dropbox or via WebDav.
|
||||
* **Contacts/Accounts** (Keepass2Android regular only): Required by the Google Drive SDK. If you want to access files on Google Drive, you are prompted to select one of the Google Accounts on your phone to use. The permission is required to query the list of Google accounts on the device. Keepass2Android does not access your personal contacts.
|
||||
* **Storage**: Required to allow the user to read/store password databases or key files on the device locally.
|
||||
* **Fingerprint**: Required if you want to use fingerprint unlock.
|
||||
* **Vibrate**: Required by the built-in keyboard (vibrate on key press)
|
||||
* **Bind Accessibility service**: Required to provide the Auto-Fill accessibility service.
|
||||
|
||||
17
docs/README.md
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
# What is Keepass2Android?
|
||||
Keepass2Android is a password manager app. It allows to store and retrieve passwords and other sensitive information in a file called "database". This database is secured with a so-called master password. The master password typically is a strong password and can be complemented with a second factor for additional security.
|
||||
The password database file can be synchronized across different devices. This works best using one of the built-in cloud storage options, but can also be performed with third-party apps. Keepass2Android is compatible with Keepass 1 and Keepass 2 on Windows and KepassX on Linux.
|
||||
|
||||
# Where to get it?
|
||||
Regular stable releases of Keepass2Android are available on [Google Play](https://play.google.com/store/apps/details?id=keepass2android.keepass2android).
|
||||
|
||||
Beta-releases can be obtained by opting in to the [Beta testing channel](https://play.google.com/apps/testing/keepass2android.keepass2android). Please join the [Beta tester group](https://plus.google.com/communities/107293657110547776032) for news and discussions about the latest beta releases.
|
||||
|
||||
# How can I contribute?
|
||||
* Help to translate Keepass2Android into your language or improve translations at [our Crowdin page](http://crowdin.net/project/keepass2android)
|
||||
* Add features by [creating a plugin](How-to-create-a-plug-in_) or creating a pull request. You might want to contact me before you start working so I can coordinate efforts.
|
||||
* [Make a donation](http://philipp.crocoll.net/donate.php)
|
||||
|
||||
# How do I learn more?
|
||||
Please see the [documentation](Documentation).
|
||||