Merge branch 'develop'

This commit is contained in:
varjolintu 2017-06-14 16:40:45 +03:00
commit bc3d9b9606
62 changed files with 54 additions and 49 deletions

View file

@ -1,3 +1,7 @@
0.1.9 (2017-xx-xx)
=========================
- Renamed the project to keepassxc-browser
0.1.8 (2017-06-13)
=========================
- Fixed showing wrong status messages

View file

@ -1,22 +1,22 @@
# chromeKeePassXC
# keepassxc-browser
Chrome extension for [KeePassXC](https://keepassxc.org/) with Native Messaging.
This is a heavily forked version of [pfn](https://github.com/pfn)'s [chromeIPass](https://github.com/pfn/passifox).
For testing purposes, please use following unofficial KeePassXC [release's](https://github.com/varjolintu/keepassxc/releases).
Get the extension for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/chromekeepassxc/) or [Chrome/Chromium](https://chrome.google.com/webstore/detail/chromekeepassxc/iopaggbpplllidnfmcghoonnokmjoicf).
Get the extension for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) or [Chrome/Chromium](https://chrome.google.com/webstore/detail/keepassxc-browser/iopaggbpplllidnfmcghoonnokmjoicf).
## Protocol
Transmitting messages between KeePassXC and chromeKeePassXC is totally rewritten. This is still under development.
Transmitting messages between KeePassXC and keepassxc-browser is totally rewritten. This is still under development.
Now the requests are encrypted by [TweetNaCl.js](https://github.com/dchest/tweetnacl-js) box method and does the following:
1. chromeKeePassXC generates a key pair (with public and secret key) and transfers the public key to KeePassXC
2. When KeePassXC receives the public key it generates its own key pair and transfers the public key to chromeKeePassXC
1. keepassxc-browser generates a key pair (with public and secret key) and transfers the public key to KeePassXC
2. When KeePassXC receives the public key it generates its own key pair and transfers the public key to keepassxc-browser
3. All messages (excluding get-databasehash) are now encrypted.
4. When chromeKeePassXC sends a message it is encrypted with KeePassXC's public key, a random generated nonce and chromeKeePassXC's secret key.
5. When KeePassXC sends a message it is encrypted with chromeKeePassXC's public key etc.
6. Databases are stored based on the current public key used with `associate`. A new key pair for data transfer is generated each time chromeKeePassXC is launched.
4. When keepassxc-browser sends a message it is encrypted with KeePassXC's public key, a random generated nonce and keepassxc-browser's secret key.
5. When KeePassXC sends a message it is encrypted with keepassxc-browser's public key etc.
6. Databases are stored based on the current public key used with `associate`. A new key pair for data transfer is generated each time keepassxc-browser is launched.
Encrypted messages are built with these JSON parameters:
- action - `test-associate`, `associate`, `get-logins`, `get-logins-count`, `set-login`...

View file

@ -1,5 +1,5 @@
{
"name": "com.varjolintu.chromekeepassxc",
"name": "com.varjolintu.keepassxc-browser",
"description": "KeepassXC integration with Chrome with Native Messaging support",
"path" : "%%replace%%",
"type": "stdio",

View file

@ -1,9 +1,9 @@
{
"name": "com.varjolintu.chromekeepassxc",
"name": "com.varjolintu.keepassxc-browser",
"description": "KeepassXC integration with Firefox with Native Messaging support",
"path" : "%%replace%%",
"type": "stdio",
"allowed_extensions": [
"chromeKeePassXC@sami.vanttinen"
"keepassxc-browser@sami.vanttinen"
]
}

View file

@ -19,7 +19,7 @@
set -e
DIR="$( cd "$( dirname "$0" )" && pwd )"
APP_NAME="com.varjolintu.chromekeepassxc"
APP_NAME="com.varjolintu.keepassxc-browser"
HOST_FILE="$DIR"
KEEPASSXC_PATH=""
@ -52,9 +52,9 @@ else
fi
fi
if [ -e "$DIR/chromeKeePassXC" ]; then
if [ -e "$DIR/keepassxc-browser" ]; then
echo "Detected development binary"
HOST_FILE="$DIR/chromeKeePassXC"
HOST_FILE="$DIR/keepassxc-browser"
fi
echo ""
@ -123,9 +123,9 @@ mkdir -p "$TARGET_DIR"
# Copy manifest host config file
if [ "$BROWSER" == "1" ] || [ "$BROWSER" == "2" ] || [ "$BROWSER" == "4" ]; then
cp "$DIR/com.varjolintu.chromekeepassxc-chrome.json" "$TARGET_DIR/$APP_NAME.json"
cp "$DIR/com.varjolintu.keepassxc-browser-chrome.json" "$TARGET_DIR/$APP_NAME.json"
else
cp "$DIR/com.varjolintu.chromekeepassxc-firefox.json" "$TARGET_DIR//$APP_NAME.json"
cp "$DIR/com.varjolintu.keepassxc-browser-firefox.json" "$TARGET_DIR//$APP_NAME.json"
fi
# Replace path to host

View file

@ -10,15 +10,15 @@ keepass.isEncryptionKeyUnrecognized = false;
keepass.currentKeePassXC = {"version": 0, "versionParsed": 0};
keepass.latestKeePassXC = (typeof(localStorage.latestKeePassXC) == 'undefined') ? {"version": 0, "versionParsed": 0, "lastChecked": null} : JSON.parse(localStorage.latestKeePassXC);
keepass.requiredKeePassXC = 214;
keepass.nativeHostName = "com.varjolintu.chromekeepassxc";
keepass.nativeHostName = "com.varjolintu.keepassxc-browser";
keepass.nativePort = null;
keepass.keySize = 24;
keepass.latestVersionUrl = "https://raw.githubusercontent.com/keepassxreboot/keepassxc/develop/CHANGELOG";
keepass.cacheTimeout = 30 * 1000; // milliseconds
keepass.databaseHash = "no-hash"; //no-hash = KeePassXC is too old and does not return a hash value
keepass.keyRing = (typeof(localStorage.keyRing) == 'undefined') ? {} : JSON.parse(localStorage.keyRing);
keepass.keyId = "chromekeepassxc-cryptokey-name";
keepass.keyBody = "chromekeepassxc-key";
keepass.keyId = "keepassxc-browser-cryptokey-name";
keepass.keyBody = "keepassxc-browser-key";
window.browser = (function () {
return window.msBrowser ||
@ -72,6 +72,7 @@ keepass.updateCredentials = function(callback, tab, entryId, username, password,
message: keepass.encrypt(messageData, nonce),
nonce: keepass.b64e(nonce)
};
console.log(request);
keepass.callbackOnId(keepass.nativePort.onMessage, "set-login", function(response) {
if (response.message && response.nonce) {

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

Before

Width:  |  Height:  |  Size: 838 B

After

Width:  |  Height:  |  Size: 838 B

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

Before

Width:  |  Height:  |  Size: 880 B

After

Width:  |  Height:  |  Size: 880 B

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2 KiB

View file

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View file

Before

Width:  |  Height:  |  Size: 481 B

After

Width:  |  Height:  |  Size: 481 B

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1096,7 +1096,7 @@ cipFields.useDefinedCredentialFields = function() {
var cip = {};
// settings of chromeKeePassXC
// settings of keepassxc-browser
cip.settings = {};
// username field which will be set on focus
cip.u = null;
@ -1549,7 +1549,7 @@ cip.fillIn = function(combination, onlyPassword, suppressWarnings) {
if (countPasswords > 1) {
if (!suppressWarnings) {
var message = "Error #105\nMore than one login was found in KeePassXC!\n" +
"Press the chromeKeePassXC icon for more options.";
"Press the keepassxc-browser icon for more options.";
browser.runtime.sendMessage({
action: 'alert',
args: [message]
@ -1569,7 +1569,7 @@ cip.fillIn = function(combination, onlyPassword, suppressWarnings) {
else {
if (!suppressWarnings) {
var message = "Error #104\nMore than one login was found in KeePassXC!\n" +
"Press the chromeKeePassXC icon for more options.";
"Press the keepassxc-browser icon for more options.";
browser.runtime.sendMessage({
action: 'alert',
args: [message]

View file

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "chromeKeePassXC",
"version": "0.1.8",
"name": "keepassxc-browser",
"version": "0.1.9",
"description": "KeePassXC integration for modern web browsers",
"author": "Sami Vänttinen",
"icons": {
@ -37,8 +37,8 @@
"content_scripts": [
{
"matches": [ "http://*/*", "https://*/*" ],
"js": [ "jquery-3.2.1.min.js", "jquery-ui.min.js", "chromekeepassxc.js" ],
"css": [ "jquery-ui.min.css", "chromekeepassxc.css" ],
"js": [ "jquery-3.2.1.min.js", "jquery-ui.min.js", "keepassxc-browser.js" ],
"css": [ "jquery-ui.min.css", "keepassxc-browser.css" ],
"run_at": "document_idle",
"all_frames": true
}
@ -74,7 +74,7 @@
],
"applications": {
"gecko": {
"id": "chromeKeePassXC@sami.vanttinen",
"id": "keepassxc-browser@sami.vanttinen",
"strict_min_version": "53.0"
}
}

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Settings | chromeKeePassXC</title>
<title>Settings | keepassxc-browser</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="bootstrap.min.css" />
<link rel="stylesheet" href="options.css" />
@ -11,7 +11,7 @@
</head>
<body>
<div class="container">
<h3 class="muted"><img src="/icons/keepassxc_48x48.png" alt="logo" /> chromeKeePassXC</h3>
<h3 class="muted"><img src="/icons/keepassxc_48x48.png" alt="logo" /> keepassxc-browser</h3>
<nav class="navbar navbar-default">
<ul class="nav navbar-nav">
@ -97,7 +97,7 @@
<label class="checkbox">
<input type="checkbox" name="autoRetrieveCredentials" value="true" /> Automatically retrieve credentials.
</label>
<span class="help-block">chromeKeePassXC will immediately retrieve the credentials when the tab is activated.</span>
<span class="help-block">keepassxc-browser will immediately retrieve the credentials when the tab is activated.</span>
</div>
</p>
<hr />
@ -106,7 +106,7 @@
<label class="checkbox">
<input type="checkbox" name="autoFillSingleEntry" value="false" /> Automatically fill-in single credentials entry.
</label>
<span class="help-block">If chromeKeePassXC does only receive a single entry from KeePassXC it automatically fills this credentials into the found credential fields.</span>
<span class="help-block">If keepassxc-browser does only receive a single entry from KeePassXC it automatically fills this credentials into the found credential fields.</span>
<span class="bg-danger">Warning! Using auto-fill is not safe. Use at your own risk.</span>
</div>
</p>
@ -129,7 +129,7 @@
<label class="radio-inline"><input type="radio" name="checkUpdateKeePassXC" value="0" /> never</label>
</p>
<div class="help-block kphVersion">
chromeKeePassXC needs KeePassXC to retrieve credentials.
keepassxc-browser needs KeePassXC to retrieve credentials.
<br />
You can download the latest stable version from here: <a target="_blank" href="https://keepassxc.org/">https://keepassxc.org/</a>
<br />
@ -149,7 +149,7 @@
<input type="checkbox" name="autoFillAndSend" value="1" /> Auto fill HTTP Auth dialogs and send them.
</label>
<span class="help-block">
If credentials are found for a page and the login-type is an HTTP Auth request, chromeKeePassXC tries to login with the first given credentials.
If credentials are found for a page and the login-type is an HTTP Auth request, keepassxc-browser tries to login with the first given credentials.
<br />
An HTTP Auth dialog looks like this:
</span>
@ -163,7 +163,7 @@
<h2>Connected Databases</h2>
<hr />
<p>
The following KeePassXC databases are connected to chromeKeePassXC.
The following KeePassXC databases are connected to keepassxc-browser.
</p>
<table class="table table-striped table-bordered table-hover">
<thead>
@ -217,9 +217,9 @@
<h2>Specified credential fields</h2>
<hr />
<p>
If chromeKeePassXC detects the wrong credential fields, you are able to specify the correct fields by yourself.
If keepassxc-browser detects the wrong credential fields, you are able to specify the correct fields by yourself.
<br />
Just go to the page and click on the chromeKeePassXC-Icon, now select <em>Choose own credential fields for this page</em>.
Just go to the page and click on the keepassxc-browser-Icon, now select <em>Choose own credential fields for this page</em>.
<br />
On this page you can manage theses specified credential fields.
</p>
@ -249,7 +249,7 @@
</div>
<div class="modal-body">
<p>Do you really want to remove the specified credential fields on the page <strong></strong>?</p>
<p class="help-block">chromeKeePassXC will automatically detect the credential fields the next time you visit this page.</p>
<p class="help-block">keepassxc-browser will automatically detect the credential fields the next time you visit this page.</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
@ -269,14 +269,14 @@
<a target="_blank" href="https://github.com/varjolintu/">Sami Vänttinen</a>
</p>
<p>
<a target="_blank" href="https://chrome.google.com/webstore/detail/chromekeepassxc/iopaggbpplllidnfmcghoonnokmjoicf">Visit extension's page in Chrome Web store</a>
<a target="_blank" href="https://chrome.google.com/webstore/detail/keepassxc-browser/iopaggbpplllidnfmcghoonnokmjoicf">Visit extension's page in Chrome Web store</a>
</p>
<p>
<a target="_blank" href="https://github.com/varjolintu/chromeKeePassXC">Visit project's page in GitHub</a>.
<a target="_blank" href="https://github.com/varjolintu/keepassxc-browser">Visit project's page in GitHub</a>.
</p>
<hr />
<p>
chromeKeePassXC Version: <em class="versionCIP"></em>
keepassxc-browser Version: <em class="versionCIP"></em>
</p>
<p>
KeePassXC Version: <em class="versionKPH"></em>

View file

@ -26,7 +26,7 @@
<div id="not-configured" style="display: none">
<p>
chromeKeePassXC has not been configured.
keepassxc-browser has not been configured.
Press the connect button to register and pair with KeePassXC.
</p>
<div style="text-align: right">
@ -36,7 +36,7 @@
<div id="need-reconfigure" style="display: none">
<p>
chromeKeePassXC has been disconnected from KeePassXC.
keepassxc-browser has been disconnected from KeePassXC.
</p>
<code id="need-reconfigure-message"></code>
<p>
@ -49,7 +49,7 @@
<div id="configured-not-associated" style="display: none">
<p>
chromeKeePassXC has been configured using the identifier
keepassxc-browser has been configured using the identifier
<em id="unassociated-identifier"></em> and has not yet
connected to KeePassXC.
</p>
@ -57,7 +57,7 @@
<div id="configured-and-associated" style="display: none">
<p>
chromeKeePassXC has been configured using the identifier
keepassxc-browser has been configured using the identifier
"<em id="associated-identifier"></em>" and is successfully
connected to KeePassXC.
</p>
@ -68,7 +68,7 @@
<div id="error-encountered" style="display: none">
<p>
chromeKeePassXC has encountered an error:
keepassxc-browser has encountered an error:
</p>
<p style="margin-left: 1em">
<code id="error-message"></code>

View file

@ -1,6 +1,6 @@
<html>
<head>
<title>KeePassXC - Popup</title>
<title>keepassxc-browser - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.1.min.js"></script>

View file

@ -1,6 +1,6 @@
<html>
<head>
<title>KeePassXC - Popup</title>
<title>keepassxc-browser - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.1.min.js"></script>
@ -21,7 +21,7 @@
<div>
<p>
chromeKeePassXC found more than one password field on this page. To enter your
keepassxc-browser found more than one password field on this page. To enter your
logins, right-click on one of the password fields, and choose either the
"<code>Fill User + Pass</code>" or "<code>Fill Pass Only</code>" command.
</p>

View file

@ -1,6 +1,6 @@
<html>
<head>
<title>KeePassXC - Popup</title>
<title>keepassxc-browser - Popup</title>
<link rel="stylesheet" href="popup.css" />
<link rel="stylesheet" href="../options/bootstrap.min.css" />
<script type="text/javascript" src="../jquery-3.2.1.min.js"></script>

View file

Before

Width:  |  Height:  |  Size: 673 B

After

Width:  |  Height:  |  Size: 673 B