Merge branch 'develop'
|
|
@ -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
|
||||
|
|
|
|||
16
README.md
|
|
@ -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`...
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
10
install.sh
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 838 B After Width: | Height: | Size: 838 B |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 880 B After Width: | Height: | Size: 880 B |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 481 B After Width: | Height: | Size: 481 B |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
|
@ -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]
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
Before Width: | Height: | Size: 673 B After Width: | Height: | Size: 673 B |