Android compatible library for reading/writing databases compatible with the renowned KeePass password safe for Windows.
Forked from @jorabin's KeePassJava2 repo
- BouncyCastle -> SpongyCastle
- XML's
javax.xml.bind.DatatypeConverterreferences toutils/DatatypeConverter.java - Sample app which parses database
- Android instrumentation unit test
- Utilities to check database integrity and/or password correctness
Features to date:
- Read and write KeePass 2.x format
- Keepass 2.x Password and Keyfile Credentials
- Read KeePass 1.x format (Rijndael/AES only)
- No requirement for JCE Policy Files
- Interfaces for Database, Group and Entry allow compatible addition of other formats
The class Javadoc on Interface classes Database, Group and Entry describe how to use the methods of those classes to create and modifty entries.
// get an input stream
InputStream inputStream = new FileInputStream("test123.kdbx");
// password credentials
Credentials credentials = new KdbxCredentials.Password("123".getBytes());
// check credentials for KDBX database
boolean isCorrect = DomDatabaseWrapper.checkCredentials(credentials, inputStream);
//in case of KDB database you should call
KdbDatabase.checkCredentials(credentials, inputStream);
Before further usage InputStream need to be reset() or if stream doesn't support resetting
it has to be opened again
Database database = DomDatabaseWrapper.load(credentials, inputStream);
Database database = KdbDatabase.load(credentials, inputStream);
// create an empty database
DomDatabaseWrapper database = new DomDatabaseWrapper();
// add some groups and entries
for (Integer g = 0; g < 5; g++){
Group group = database.getRootGroup().addGroup(database.newGroup(g.toString()));
for (int e = 0; e <= g; e++) {
// entry factory is a local helper to populate an entry
group.addEntry(entryFactory(database, g.toString(), e));
}
}
// save to a file with password "123"
FileOutputStream outputStream = new FileOutputStream("test.kdbx");
database.save(new KdbxCredentials.Password("123".getBytes()), outputStream);
- reading and handling of binary data
- Bouncy Castle's fork for Android SpongyCastle
- Google Guava license
Copyright (c) 2015, 2016 Jo Rabin, Pavel Ivanov (ivanovpv@gmail.com)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.