+ Add a two new libraries

+ QR-Code is now readable and decryptable
This commit is contained in:
2019-10-25 16:02:37 +02:00
parent 36b3fd6d3c
commit 48c40a5d93
8 changed files with 169 additions and 31 deletions

6
dist/main.js vendored
View File

@@ -7,8 +7,7 @@ electron_1.app.on('ready', function () {
height: 600,
width: 1000,
frame: false,
resizable: false,
alwaysOnTop: true,
resizable: true,
title: "OffPass",
webPreferences: {
nodeIntegration: true,
@@ -17,7 +16,8 @@ electron_1.app.on('ready', function () {
});
//win.loadURL("https://google.de")
win.loadFile('../src/index.html');
win.setTitle("OffPass");
});
electron_1.app.on('window-all-closed', function () {
win = null;
process.exit(0);
});

87
package-lock.json generated
View File

@@ -33,12 +33,45 @@
"defer-to-connect": "^1.0.1"
}
},
"@types/bn.js": {
"version": "4.11.5",
"resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.5.tgz",
"integrity": "sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/node": {
"version": "12.11.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.6.tgz",
"integrity": "sha512-4uPUyY1Aofo1YzoypalYHNd2SnKYxH2b6LzXwpryZCJKA2XlagZSynXx5C8sfPH0r1cSltUpaVHV2q5sYXschQ==",
"dev": true
},
"@types/openpgp": {
"version": "4.4.7",
"resolved": "https://registry.npmjs.org/@types/openpgp/-/openpgp-4.4.7.tgz",
"integrity": "sha512-NzmBQDTpvPvbq24oZnLGk+/vfsmofkSbYXxdJCAX314q3EBaj/ve2rig0GYnwnXLxMXekUKJe9LhQSDynRgNQQ==",
"dev": true,
"requires": {
"@types/bn.js": "*"
}
},
"asn1.js": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.2.0.tgz",
"integrity": "sha512-Q7hnYGGNYbcmGrCPulXfkEw7oW7qjWeM4ZTALmgpuIcZLxyqqKYWxCZg2UBm8bklrnB4m2mGyJPWfoktdORD8A==",
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
}
},
"bn.js": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -240,8 +273,7 @@
"graceful-fs": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
"dev": true
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
},
"http-cache-semantics": {
"version": "4.0.3",
@@ -249,11 +281,15 @@
"integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==",
"dev": true
},
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"isarray": {
"version": "1.0.0",
@@ -297,6 +333,11 @@
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
"dev": true
},
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
@@ -318,6 +359,19 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node-fetch": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
},
"node-localstorage": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-1.3.1.tgz",
"integrity": "sha512-NMWCSWWc6JbHT5PyWlNT2i8r7PgGYXVntmKawY83k/M0UJScZ5jirb61TLnqKwd815DfBQu+lR3sRw08SPzIaQ==",
"requires": {
"write-file-atomic": "^1.1.4"
}
},
"normalize-url": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
@@ -333,6 +387,16 @@
"wrappy": "1"
}
},
"openpgp": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/openpgp/-/openpgp-4.6.2.tgz",
"integrity": "sha512-zgQmTZjKxjI2vs++5Ejs8wQbs9+YekOAulfq8YxKV7uUxcNxDE2IIh88I/RmjPOvpxCrV7kNqSBwVQMzZxTtDQ==",
"requires": {
"asn1.js": "^5.0.0",
"node-fetch": "^2.1.2",
"node-localstorage": "~1.3.0"
}
},
"p-cancelable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
@@ -406,6 +470,11 @@
"truncate-utf8-bytes": "^1.0.0"
}
},
"slide": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
"integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -478,6 +547,16 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"write-file-atomic": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
"integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
"requires": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"slide": "^1.1.5"
}
},
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",

View File

@@ -3,8 +3,11 @@
"version": "1.0.0",
"description": "OffPass, a special password manager. All your passwords are not stored in an encrypted container but offline.",
"main": "index.js",
"dependencies": {},
"dependencies": {
"openpgp": "^4.6.2"
},
"devDependencies": {
"@types/openpgp": "^4.4.7",
"electron": "^7.0.0"
},
"scripts": {

1
src/assets/instascan.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +1,22 @@
html {
background: linear-gradient(0deg, rgba(60,60,60,1) 0%, rgba(42,44,43,1) 100%) no-repeat;
height: 100%;
width: 100%;
}
body {
margin: 0;
padding: 0;
background-color: #2A2C2B;
/*background-color: #2A2C2B;*/
overflow: hidden;
}
h1 {
font-family: 'Oxygen', sans-serif;
color: #BDC3C7;
color: #fff;
}
p, span {
font-family: 'Source Sans Pro', sans-serif;
color: #BDC3C7;
color: #fff;
}
#taskbar {
@@ -18,12 +24,23 @@ p, span {
position: absolute;
top: 0;
width: 100%;
height: 64px;
height: 15px;
z-index: 1;
-webkit-app-region: drag;
}
#taskbar i {
transition: .1s ease-in-out;
padding: 10px;
color: #BDC3C7;
z-index: 5;
}
#content {
width: 100%;
height: 100%;
vertical-align: middle;
text-align: cover;
object-fit: fill;
}
.fill {

View File

@@ -7,26 +7,55 @@
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Oxygen:700&display=swap" rel="stylesheet">
<link href="assets/fontawesome-5.11.2/css/all.css" rel="stylesheet">
<script type="text/javascript" src="assets/instascan.min.js"></script>
<link href="global.css" rel="stylesheet">
<link href="scanner.css" rel="stylesheet">
</head>
<body>
<div id="taskbar">
<div class="fill"></div>
<i id="mini" class="fas fa-window-minimize" onclick="remote.BrowserWindow.getFocusedWindow().minimize()"></i>
<i id="close" class="fas fa-times" onclick="remote.BrowserWindow.getFocusedWindow().close()"></i>
</div>
<div id="content">
<!--<h1>Welcome to OffPass</h1>
<p>In this short tutorial you'll learn how to use this software.</p>
<a href="#">Let's start</a>-->
<video id="preview"></video>
</div>
<script>
const { remote } = require('electron');
document.getElementById("close").onclick = () => remote.BrowserWindow.getFocusedWindow().close();
function close() {
console.log("ghere")
var window = remote.BrowserWindow.getFocusedWindow().close();
}
function minimize() {
console.log("hhrer")
var window = remote.BrowserWindow.getFocusedWindow().minimize();
}
const pgp = require('openpgp');
navigator.mediaDevices.getUserMedia({video: true});
const preview = document.getElementById('preview');
let scanner = new Instascan.Scanner({ video: preview, mirror: false });
scanner.addListener('scan', async (content) => {
content = "-----BEGIN PGP MESSAGE-----\n\n" + content + "\n-----END PGP MESSAGE-----";
console.log(content)
pgp.decrypt({
message: await pgp.message.readArmored(content),
passwords: [ '123' ],
format: 'string'
}).then((plaintext) => {
console.log(plaintext.data);
});
});
Instascan.Camera.getCameras().then(function (cameras) {
if (cameras.length > 0) {
scanner.start(cameras[0]);
navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {
preview.srcObject = stream;
})
} else {
console.error('No cameras found.');
}
}).catch(function (e) {
console.error(e);
});
</script>
<div id="taskbar" onclick="minimize()">
<div class="fill"></div>
<i id="mini" class="fas fa-window-minimize" onclick="minimize()"></i>
<i id="close" class="fas fa-times" onclick="console.log('Hallo Welt')"></i>
</div>
<h1 onclick="remote.BrowserWindow.getFocusedWindow().close()">Hello World!</h1>
</body>
</html>

View File

@@ -6,8 +6,7 @@ app.on('ready', () => {
height: 600,
width: 1000,
frame: false,
resizable: false,
alwaysOnTop: true,
resizable: true,
title: "OffPass",
webPreferences: {
nodeIntegration: true,
@@ -16,8 +15,9 @@ app.on('ready', () => {
});
//win.loadURL("https://google.de")
win.loadFile('../src/index.html');
win.setTitle("OffPass")
});
app.on('window-all-closed', () => {
win = null;
})
process.exit(0);
});

9
src/scanner.css Normal file
View File

@@ -0,0 +1,9 @@
#preview {
position: absolute;
z-index: -1;
top: 0;
left: 0;
height: 100%;
width: 100%;
object-fit: cover;
}