Welcome to OffPass
-Please enter your master password for decryption
+Please enter your master password
Or create a new QR-Code
Wait for camera...
-Password:
-Decryption faild. Maybe wrong password?
+ +diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index ab3e3d4..bbe1079 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -27,7 +27,7 @@ ProtonMail|mail_pw123|klier.nicolas@protonmail.com|| These characters are reserved and cannot be used for any fields: `|%ยง` ### Compression -It is possible to compress QR-Codes. Instead of writing all data to the QR-Code you can write random strings (key) to it. OffPass itself holds a database of those random string and the corresponding encrypted value. +It is possible to compress QR-Codes. Instead of writing all data to the QR-Code you can write random strings (= key) to it. OffPass itself holds a database of those random strings and the corresponding encrypted value. The program generates a `session key` (length of 10 characters) which is unique for each QR-Code. This session key is stored on the QR-Code and is used to encrypt the raw values in database. So not even If someone stells your database he wouldn't be able to read your compressed strings. @@ -41,7 +41,7 @@ For example: ``` This can has two advantages: -* An attacker can't read compressed values (he would need the database) +* An attacker can't read compressed values If he is able to decrypt one QR-Code (he would need the database) * You can get more data on one QR-Code But one disadvantage: diff --git a/src/css/choose.css b/src/css/choose.css new file mode 100644 index 0000000..9105ddb --- /dev/null +++ b/src/css/choose.css @@ -0,0 +1,40 @@ +.options { + display: grid; + grid-template-columns: .5fr 300px 300px .5fr; + grid-template-rows: .7fr; + column-gap: 50px; + position: absolute; + margin: 0 auto; + width: 100%; + height: 80%; +} + +.options div { + transition: .2s ease-in-out; + background-color: rgba(255, 255, 255, 0); + grid-row: 2; + width: 300px; + height: 300px; + padding-top: 90px; + border: 1px rgba(255, 255, 255, 0.3) solid; + cursor: pointer; +} + +.options div:hover { + background-color: rgba(255, 255, 255, .2); + border: 1px rgba(255, 255, 255, 0.8) solid; +} + +.options div i { + font-size: 64pt; +} + +#create { + grid-row: 1; + grid-column: 2; + float: right; +} +#scan { + grid-row: 1; + grid-column: 3; +} \ No newline at end of file diff --git a/src/css/create.css b/src/css/create.css new file mode 100644 index 0000000..12a0128 --- /dev/null +++ b/src/css/create.css @@ -0,0 +1,45 @@ +#create_setup { + position: absolute !important; + height: 100%; +} +#create_setup * { + text-align: center; +} +#create_setup .options { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: .25fr .25fr .25fr; + row-gap: 50px; + column-gap: 50px; + margin-left: 50px; + width: calc(100% - 100px); +} + +#name { + grid-column: 1; + grid-row: 1; +} + +#url { + grid-column: 2 / 4; + grid-row: 1; +} + +#email { + grid-column: 1; + grid-row: 2; +} + +#password { + grid-column: 1 / 4; + grid-row: 3; + display: inline-block; + border: 1px solid white; +} +#password input { + border: none; +} +#password i { + + border-left: none; +} \ No newline at end of file diff --git a/src/css/global.css b/src/css/global.css index 1f2be90..a325026 100644 --- a/src/css/global.css +++ b/src/css/global.css @@ -9,7 +9,7 @@ body { /*background-color: #2A2C2B;*/ overflow: hidden; } -h1 { +h1, h3 { font-family: 'Oxygen', sans-serif; color: #fff; } @@ -24,6 +24,35 @@ a { text-decoration: none; font-weight: bold; font-family: 'Source Sans Pro', sans-serif; + user-select: none; +} + +i { + color: white; +} + +input { + background-color: transparent; + border: 1px rgb(200, 200, 200, .5) solid; + background-color: rgba(29, 29, 29, 0.2); + color: rgb(200, 200, 200, .6); + padding: 10px; + transition: .1s ease-in-out; +} + +input:disabled { + border: 1px rgba(200, 200, 200, 0.7) solid; + background-color: rgba(78, 78, 78, 0.4) ; +} + +input::placeholder { + color: rgb(207, 207, 207, .8); +} +input:focus { + border: 1px rgb(200, 200, 200, 1) solid; + background-color: rgba(29, 29, 29, 0.3); + color: rgb(200, 200, 200, 1); + outline: none; } #taskbar { @@ -52,6 +81,42 @@ a { position: absolute; } +/* Error */ +#error { + position: absolute; + display: flex; + bottom: -350px; + width: auto; + height: 55px; + padding-left: 10px; + padding-right: 20px; + backdrop-filter: blur(30px); + background-color: rgba(100, 0, 0, 0.6); + border-radius: 15px; +} +#error i { + font-size: 20pt; + padding: 14px; + color: rgb(255, 139, 139); +} +#error p { + padding-bottom: 20px; +} + .fill { width: 100%; +} + +/* Containers that are in the main view */ +.main { + height: 100%; + width: 100%; + margin-top: 50px; +} +.main * { + text-align: center; +} + +.options { + width: calc(100% - 100px); } \ No newline at end of file diff --git a/src/css/scanner.css b/src/css/scanner.css index 936d230..6dcdbe1 100644 --- a/src/css/scanner.css +++ b/src/css/scanner.css @@ -38,28 +38,6 @@ font-weight: 200; } -/* Error */ -#error { - position: absolute; - display: flex; - bottom: -350px; - width: auto; - height: 55px; - padding-left: 10px; - padding-right: 20px; - backdrop-filter: blur(30px); - background-color: rgba(100, 0, 0, 0.6); - border-radius: 15px; -} -#error i { - font-size: 20pt; - padding: 14px; - color: rgb(255, 139, 139); -} -#error p { - padding-bottom: 20px; -} - .show { animation: showpass 1s; opacity: 1 !important; diff --git a/src/css/start.css b/src/css/start.css index 091f5ba..f1f3059 100644 --- a/src/css/start.css +++ b/src/css/start.css @@ -2,27 +2,8 @@ text-align: center; vertical-align: middle; padding-top: calc(10% + 50px); - width: 100%; - height: 100%; -} -#master_prompt input { - margin-top: 50px; - background-color: transparent; - border: none; - border-bottom: 1px solid white; - color: white; - padding: 10px; - transition: .2s ease-in-out; -} -#master_prompt input::placeholder { - color: rgb(207, 207, 207); -} -#master_prompt input:focus { - border-bottom-width: 3px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; } #master_prompt a { - line-height: 5; + line-height: 15; font-size: 13pt; } \ No newline at end of file diff --git a/src/html/choose.html b/src/html/choose.html new file mode 100644 index 0000000..b6b7efb --- /dev/null +++ b/src/html/choose.html @@ -0,0 +1,38 @@ +
Please enter your master password for decryption
+Please enter your master password
Decryption faild. Maybe wrong password?
+ +