mirror of
https://codeberg.org/keyoxide/keyoxide-web.git
synced 2024-12-22 23:09:29 -07:00
Convert views to pug
This commit is contained in:
parent
814d1e3c9a
commit
d653d762b3
21 changed files with 448 additions and 675 deletions
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>404</h1>
|
||||
<p>The requested page could not be found :(</p>
|
||||
</div>
|
6
views/404.pug
Normal file
6
views/404.pug
Normal file
|
@ -0,0 +1,6 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 404
|
||||
p The requested page could not be found :(
|
|
@ -1,68 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>Encrypt</h1>
|
||||
<form id="form-encrypt" method="post">
|
||||
<h3>Recipient</h3>
|
||||
<label for="modeSelect">Mode: </label>
|
||||
<select class="modeSelect" name="modeSelect" id="modeSelect">
|
||||
<option value="auto" <?php if ($mode=="auto"): ?>selected<?php endif ?>>Autodetect</option>
|
||||
<option value="wkd" <?php if ($mode=="wkd"): ?>selected<?php endif ?>>Web Key Directory</option>
|
||||
<option value="hkp" <?php if ($mode=="hkp"): ?>selected<?php endif ?>>Keyserver</option>
|
||||
<option value="plaintext" <?php if ($mode=="plaintext"): ?>selected<?php endif ?>>Plaintext</option>
|
||||
<option value="keybase" <?php if ($mode=="keybase"): ?>selected<?php endif ?>>Keybase</option>
|
||||
</select>
|
||||
<div class="modesContainer">
|
||||
<div class='modes modes--auto <?php if ($mode=="auto"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="auto_input" id="auto_input" placeholder="Email / key id / fingerprint" value="<?=$this->escape($auto_input)?>">
|
||||
</div>
|
||||
<div class='modes modes--wkd <?php if ($mode=="wkd"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="wkd_input" id="wkd_input" placeholder="name@domain.org" value="<?=$this->escape($wkd_input)?>">
|
||||
</div>
|
||||
<div class='modes modes--hkp <?php if ($mode=="hkp"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="hkp_input" id="hkp_input" placeholder="Email / key id / fingerprint" value="<?=$this->escape($hkp_input)?>">
|
||||
<input type="text" name="hkp_server" id="hkp_server" placeholder="https://keys.openpgp.org/ (default)">
|
||||
</div>
|
||||
<div class='modes modes--plaintext <?php if ($mode=="plaintext"): ?>modes--visible<?php endif ?>'>
|
||||
<textarea name="plaintext_input" id="plaintext_input"></textarea>
|
||||
</div>
|
||||
<div class='modes modes--keybase <?php if ($mode=="keybase"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="keybase_username" id="keybase_username" placeholder="username" value="<?=$this->escape($keybase_username)?>">
|
||||
<input type="text" name="keybase_fingerprint" id="keybase_fingerprint" placeholder="fingerprint" value="<?=$this->escape($keybase_fingerprint)?>">
|
||||
</div>
|
||||
</div>
|
||||
<h3>Message</h3>
|
||||
<textarea name="message" id="message"></textarea>
|
||||
<p id="result"></p>
|
||||
<input type="submit" class="bigBtn" name="submit" value="ENCRYPT MESSAGE">
|
||||
</form>
|
||||
</div>
|
14
views/encrypt.pug
Normal file
14
views/encrypt.pug
Normal file
|
@ -0,0 +1,14 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 Encrypt
|
||||
form#form-encrypt(method='post')
|
||||
h3 Recipient
|
||||
label(for='modeSelect') Mode:
|
||||
include partials/key_selector
|
||||
|
||||
h3 Message
|
||||
textarea#message(name='message')
|
||||
p#result
|
||||
input.bigBtn(type='submit' name='submit' value='ENCRYPT MESSAGE')
|
|
@ -1,92 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>FAQ</h1>
|
||||
<h3 id="what-is-keyoxide"><a href="#what-is-keyoxide">#</a> What is Keyoxide?</h3>
|
||||
<p><a href="/">Keyoxide</a> is a lightweight and FOSS solution to make basic cryptography operations accessible to regular humans. It is built to be privacy friendly and secure, it can even be self-hosted.</p>
|
||||
|
||||
<h3 id="why-does-keyoxide-exist"><a href="#why-does-keyoxide-exist">#</a> Why does Keyoxide exist?</h3>
|
||||
<p><a href="/">Keyoxide</a> provides a solution to a modern problem: we humans have developed advanced methods of encrypting data and signing it. Unfortunately, it requires complicated tools that demand a minimal level of understanding cryptography and how keypairs work to leverage these technologies.</p>
|
||||
<p>Sadly, this means that true privacy and secrecy in this modern age of surveillance capitalism is reserved to a subset of the world population.</p>
|
||||
<p>Luckily, there is one thing we can do. Some cryptographic operations are more accessible than others and less prone to leaking private data. By building a service around only those operations, we hope a wider general audience can benefit from modern cryptography.</p>
|
||||
|
||||
<h3 id="what-cryptographic-operations-can-keyoxide-handle"><a href="#what-cryptographic-operations-can-keyoxide-handle">#</a> What cryptographic operations can Keyoxide handle?</h3>
|
||||
<p><a href="/">Keyoxide</a> can: <a href="/verify">verify signatures</a> and <a href="/encrypt">encrypt messages</a>.<br><a href="/">Keyoxide</a> can't: sign messages or decrypt messages.</p>
|
||||
|
||||
<h3 id="why-so-few-cryptographic-operations"><a href="#why-so-few-cryptographic-operations">#</a> Why so few cryptographic operations?</h3>
|
||||
<p>Good question. First, what cryptographic operations are generally available? There's <strong>encryption</strong> and its counterpart, <strong>decryption</strong>, but also <strong>signing</strong> and its counterpart, <strong>signature verification</strong>.</p>
|
||||
<p><strong>Decryption</strong> and <strong>signing</strong> require private keys. <strong>Encryption</strong> and <strong>signature verification</strong> only require public keys.</p>
|
||||
<p>If you happen to be in possession of a private key, there is one thing you should know: that key is private! It shouldn't leave your computer and most certainly should never be uploaded to any website!</p>
|
||||
<p>So yes, alternative services may offer more cryptographic operations but at the highest cost of surrendering your private keys to servers you generally shouldn't trust and companies that may be under geopolitical influence.</p>
|
||||
<p><a href="/">Keyoxide</a> offers a simple solution to the trust issue: we don't want your keys, therefore you don't even need to trust us. Everything that this service offers is possible thanks to publicly available keys.</p>
|
||||
|
||||
<h3 id="how-does-keyoxide-work-without-keys"><a href="#how-does-keyoxide-work-without-keys">#</a> How does Keyoxide work without keys?</h3>
|
||||
<p>We still need keys, of course, but only the harmless public keys. And yes, we could have built a website where one can make an account and upload public keys, in a similar fashion as alternative services.</p>
|
||||
<p>But why would we? There's already an entire infrastructure out there in the form of websites that host their own keys (plaintext or web key directory) or dedicated "HTTP Key Protocol" or HKP servers, designed specifically for public key hosting. Why reinvent the wheel?</p>
|
||||
|
||||
<h3 id="how-is-this-privacy-friendly-and-secure"><a href="#how-is-this-privacy-friendly-and-secure">#</a> How is this privacy friendly and secure?</h3>
|
||||
<p>You can't make an account on <a href="/">Keyoxide</a> because for basic cryptographic operations, we don't need your data or your keys. By not knowing anything about you or using any trackers, this is as privacy-friendly as it gets.</p>
|
||||
<p>As for secure, <a href="/">Keyoxide</a> does all the cryptographic processing on your device and never sends data to the server. It also doesn't use private keys for any operation (so make sure to never upload those anywhere).</p>
|
||||
|
||||
<h3 id="how-can-i-make-an-account"><a href="#how-can-i-make-an-account">#</a> How can I make an account?</h3>
|
||||
<p>Well, you can't and that is the whole point of <a href="/">Keyoxide</a>. We don't want your data or your keys. Uploading your keys and/or data to our servers is never required for any of the operations provided by <a href="/">Keyoxide</a>.</p>
|
||||
|
||||
<h3 id="can-i-get-a-sweet-profile-page"><a href="#can-i-get-a-sweet-profile-page">#</a> Can I get a sweet profile page?</h3>
|
||||
<p>That, we can help you with! Just append your fingerprint to the domain (like so: <a href="https://keyoxide.org/9F0048AC0B23301E1F77E994909F6BD6F80F485D">https://keyoxide.org/9F0048AC0B23301E1F77E994909F6BD6F80F485D</a>) to generate a profile page.</p>
|
||||
|
||||
<h3 id="where-is-the-app"><a href="#where-is-the-app">#</a> Where is the app?</h3>
|
||||
<p>There's no app. Why would you want yet another app for what is essentially just a form with a big blue button?</p>
|
||||
|
||||
<h3 id="where-do-i-put-my-private-key"><a href="#where-do-i-put-my-private-key">#</a> Where do I put my private key?</h3>
|
||||
<p><strong>DON'T</strong>! We don't want it!</p>
|
||||
<p>Alternative services may ask you for your private keys so that they can offer additional functionality. Please understand that your private key is yours and ONLY yours. You should never upload it to any online service, in fact it should never leave your computer.</p>
|
||||
|
||||
<h3 id="what-is-the-use-if-i-can't-decrypt-or-sign-messages"><a href="#what-is-the-use-if-i-can't-decrypt-or-sign-messages">#</a> What is the use if I can't decrypt or sign messages?</h3>
|
||||
<p>If you want to be on the receiving end of securely encrypted messages, you should either learn the basics of modern cryptography and know your way around your computer's command line or switch to end-to-end encrypted instant messaging providers.</p>
|
||||
<p>Simply put, if you have private keys, you probably won't be using <a href="/">Keyoxide</a>. You will benefit from using command line tools or GUIs like <a href="https://www.openpgp.org/software/kleopatra/">Kleopatra</a>.</p>
|
||||
<p><a href="/">Keyoxide</a> is designed for those without extensive knowledge about cryptography and who wish to encrypt messages to, or verify the authenticity of messages coming from the people with that extensive knowledge.</p>
|
||||
|
||||
<h3 id="but-other-services-provide-a-social-network-function"><a href="#but-other-services-provide-a-social-network-function">#</a> But other services provide a social network function!</h3>
|
||||
<p>It doesn't need to be centralized to have a "social network" function. <a href="/">Keyoxide</a> simply uses the already existing "social network" of websites hosting their own keys and servers dedicated to hosting large amounts of keys.</p>
|
||||
|
||||
<h3 id="pgp-must-die"><a href="#pgp-must-die">#</a> PGP must die!</h3>
|
||||
<p>Not a question but we get your point. While there are <a href="https://restoreprivacy.com/let-pgp-die/">legitimate reasons PGP should cease to exist</a>, it is still widely used and without any clear sign of imminent extinction, it needs proper tooling.</p>
|
||||
<p>It should be noted that while PGP can indeed be harmful when applied to email encryption, there are other legitimate ways of leveraging PGP to encrypt and/or sign messages.</p>
|
||||
<p>That being said, <a href="/">Keyoxide</a> aims to integrate different cryptographic technologies and therefore ease the transition away from PGP.</p>
|
||||
|
||||
<h3 id="what-is-on-the-roadmap"><a href="#what-is-on-the-roadmap">#</a> What is on the roadmap?</h3>
|
||||
<ul>
|
||||
<li>Support more decentralized proofs</li>
|
||||
<li>Write more guides</li>
|
||||
<li>Integrate other encryption programs</li>
|
||||
</ul>
|
||||
</div>
|
151
views/faq.pug
Normal file
151
views/faq.pug
Normal file
|
@ -0,0 +1,151 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 FAQ
|
||||
h3#what-is-keyoxide
|
||||
a(href='#what-is-keyoxide') #
|
||||
| What is Keyoxide?
|
||||
p
|
||||
a(href='/') Keyoxide
|
||||
| is a lightweight and FOSS solution to make basic cryptography operations accessible to regular humans. It is built to be privacy friendly and secure, it can even be self-hosted.
|
||||
h3#why-does-keyoxide-exist
|
||||
a(href='#why-does-keyoxide-exist') #
|
||||
| Why does Keyoxide exist?
|
||||
p
|
||||
a(href='/') Keyoxide
|
||||
| provides a solution to a modern problem: we humans have developed advanced methods of encrypting data and signing it. Unfortunately, it requires complicated tools that demand a minimal level of understanding cryptography and how keypairs work to leverage these technologies.
|
||||
p
|
||||
| Sadly, this means that true privacy and secrecy in this modern age of surveillance capitalism is reserved to a subset of the world population.
|
||||
p
|
||||
| Luckily, there is one thing we can do. Some cryptographic operations are more accessible than others and less prone to leaking private data. By building a service around only those operations, we hope a wider general audience can benefit from modern cryptography.
|
||||
h3#what-cryptographic-operations-can-keyoxide-handle
|
||||
a(href='#what-cryptographic-operations-can-keyoxide-handle') #
|
||||
| What cryptographic operations can Keyoxide handle?
|
||||
p
|
||||
a(href='/') Keyoxide
|
||||
| can:
|
||||
a(href='/verify') verify signatures
|
||||
| and
|
||||
a(href='/encrypt') encrypt messages
|
||||
| .
|
||||
br
|
||||
a(href='/') Keyoxide
|
||||
| can't: sign messages or decrypt messages.
|
||||
h3#why-so-few-cryptographic-operations
|
||||
a(href='#why-so-few-cryptographic-operations') #
|
||||
| Why so few cryptographic operations?
|
||||
p
|
||||
| Good question. First, what cryptographic operations are generally available? There's
|
||||
strong encryption
|
||||
| and its counterpart,
|
||||
strong decryption
|
||||
| , but also
|
||||
strong signing
|
||||
| and its counterpart,
|
||||
strong signature verification
|
||||
| .
|
||||
p
|
||||
strong Decryption
|
||||
| and
|
||||
strong signing
|
||||
| require private keys.
|
||||
strong Encryption
|
||||
| and
|
||||
strong signature verification
|
||||
| only require public keys.
|
||||
p
|
||||
| If you happen to be in possession of a private key, there is one thing you should know: that key is private! It shouldn't leave your computer and most certainly should never be uploaded to any website!
|
||||
p
|
||||
| So yes, alternative services may offer more cryptographic operations but at the highest cost of surrendering your private keys to servers you generally shouldn't trust and companies that may be under geopolitical influence.
|
||||
p
|
||||
a(href='/') Keyoxide
|
||||
| offers a simple solution to the trust issue: we don't want your keys, therefore you don't even need to trust us. Everything that this service offers is possible thanks to publicly available keys.
|
||||
h3#how-does-keyoxide-work-without-keys
|
||||
a(href='#how-does-keyoxide-work-without-keys') #
|
||||
| How does Keyoxide work without keys?
|
||||
p
|
||||
| We still need keys, of course, but only the harmless public keys. And yes, we could have built a website where one can make an account and upload public keys, in a similar fashion as alternative services.
|
||||
p
|
||||
| But why would we? There's already an entire infrastructure out there in the form of websites that host their own keys (plaintext or web key directory) or dedicated "HTTP Key Protocol" or HKP servers, designed specifically for public key hosting. Why reinvent the wheel?
|
||||
h3#how-is-this-privacy-friendly-and-secure
|
||||
a(href='#how-is-this-privacy-friendly-and-secure') #
|
||||
| How is this privacy friendly and secure?
|
||||
p
|
||||
| You can't make an account on
|
||||
a(href='/') Keyoxide
|
||||
| because for basic cryptographic operations, we don't need your data or your keys. By not knowing anything about you or using any trackers, this is as privacy-friendly as it gets.
|
||||
p
|
||||
| As for secure,
|
||||
a(href='/') Keyoxide
|
||||
| does all the cryptographic processing on your device and never sends data to the server. It also doesn't use private keys for any operation (so make sure to never upload those anywhere).
|
||||
h3#how-can-i-make-an-account
|
||||
a(href='#how-can-i-make-an-account') #
|
||||
| How can I make an account?
|
||||
p
|
||||
| Well, you can't and that is the whole point of
|
||||
a(href='/') Keyoxide
|
||||
| . We don't want your data or your keys. Uploading your keys and/or data to our servers is never required for any of the operations provided by
|
||||
a(href='/') Keyoxide
|
||||
| .
|
||||
h3#can-i-get-a-sweet-profile-page
|
||||
a(href='#can-i-get-a-sweet-profile-page') #
|
||||
| Can I get a sweet profile page?
|
||||
p
|
||||
| That, we can help you with! Just append your fingerprint to the domain (like so:
|
||||
a(href='https://keyoxide.org/9F0048AC0B23301E1F77E994909F6BD6F80F485D') https://keyoxide.org/9F0048AC0B23301E1F77E994909F6BD6F80F485D
|
||||
| ) to generate a profile page.
|
||||
h3#where-is-the-app
|
||||
a(href='#where-is-the-app') #
|
||||
| Where is the app?
|
||||
p
|
||||
| There's no app. Why would you want yet another app for what is essentially just a form with a big blue button?
|
||||
h3#where-do-i-put-my-private-key
|
||||
a(href='#where-do-i-put-my-private-key') #
|
||||
| Where do I put my private key?
|
||||
p
|
||||
strong DON'T
|
||||
| ! We don't want it!
|
||||
p
|
||||
| Alternative services may ask you for your private keys so that they can offer additional functionality. Please understand that your private key is yours and ONLY yours. You should never upload it to any online service, in fact it should never leave your computer.
|
||||
h3(id="what-is-the-use-if-i-can't-decrypt-or-sign-messages")
|
||||
a(href="#what-is-the-use-if-i-can't-decrypt-or-sign-messages") #
|
||||
| What is the use if I can't decrypt or sign messages?
|
||||
p
|
||||
| If you want to be on the receiving end of securely encrypted messages, you should either learn the basics of modern cryptography and know your way around your computer's command line or switch to end-to-end encrypted instant messaging providers.
|
||||
p
|
||||
| Simply put, if you have private keys, you probably won't be using
|
||||
a(href='/') Keyoxide
|
||||
| . You will benefit from using command line tools or GUIs like
|
||||
a(href='https://www.openpgp.org/software/kleopatra/') Kleopatra
|
||||
| .
|
||||
p
|
||||
a(href='/') Keyoxide
|
||||
| is designed for those without extensive knowledge about cryptography and who wish to encrypt messages to, or verify the authenticity of messages coming from the people with that extensive knowledge.
|
||||
h3#but-other-services-provide-a-social-network-function
|
||||
a(href='#but-other-services-provide-a-social-network-function') #
|
||||
| But other services provide a social network function!
|
||||
p
|
||||
| It doesn't need to be centralized to have a "social network" function.
|
||||
a(href='/') Keyoxide
|
||||
| simply uses the already existing "social network" of websites hosting their own keys and servers dedicated to hosting large amounts of keys.
|
||||
h3#pgp-must-die
|
||||
a(href='#pgp-must-die') #
|
||||
| PGP must die!
|
||||
p
|
||||
| Not a question but we get your point. While there are
|
||||
a(href='https://restoreprivacy.com/let-pgp-die/') legitimate reasons PGP should cease to exist
|
||||
| , it is still widely used and without any clear sign of imminent extinction, it needs proper tooling.
|
||||
p
|
||||
| It should be noted that while PGP can indeed be harmful when applied to email encryption, there are other legitimate ways of leveraging PGP to encrypt and/or sign messages.
|
||||
p
|
||||
| That being said,
|
||||
a(href='/') Keyoxide
|
||||
| aims to integrate different cryptographic technologies and therefore ease the transition away from PGP.
|
||||
h3#what-is-on-the-roadmap
|
||||
a(href='#what-is-on-the-roadmap') #
|
||||
| What is on the roadmap?
|
||||
ul
|
||||
li Support more decentralized proofs
|
||||
li Write more guides
|
||||
li Integrate other encryption programs
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1><?php $this->insert("guides/$id.title") ?></h1>
|
||||
<p><a href='/guides'>Back to guides</a></p>
|
||||
<?php $this->insert("guides/$id.content") ?>
|
||||
</div>
|
4
views/guide.pug
Normal file
4
views/guide.pug
Normal file
|
@ -0,0 +1,4 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content !{ content }
|
|
@ -1,78 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>Guides</h1>
|
||||
|
||||
<div class="guides">
|
||||
<div class="guides__section">
|
||||
<h3>Using Keyoxide</h3>
|
||||
<a href="/guides/verify">Verifying a signature</a><br>
|
||||
<a href="/guides/encrypt">Encrypting a message</a><br>
|
||||
<a href="/guides/proofs">Verifying identity proofs</a><br>
|
||||
<a href="/guides/contributing">Contributing to Keyoxide</a><br>
|
||||
<a href="/guides/self-hosting-keyoxide">Self-hosting Keyoxide</a><br>
|
||||
</div>
|
||||
|
||||
<div class="guides__section">
|
||||
<h3>OpenPGP and identity proofs</h3>
|
||||
<a href="/guides/openpgp-proofs">How OpenPGP identity proofs work</a><br>
|
||||
<a href="/guides/web-key-directory">Uploading keys using web key directory</a><br>
|
||||
</div>
|
||||
|
||||
<div class="guides__section">
|
||||
<h3>Adding proofs</h3>
|
||||
<a href="/guides/devto">Dev.to</a><br>
|
||||
<a href="/guides/discourse">Discourse</a><br>
|
||||
<a href="/guides/dns">Domain / DNS</a><br>
|
||||
<a href="/guides/github">Github</a><br>
|
||||
<a href="/guides/hackernews">Hackernews</a><br>
|
||||
<a href="/guides/lobsters">Lobste.rs</a><br>
|
||||
<a href="/guides/mastodon">Mastodon</a><br>
|
||||
<a href="/guides/pleroma">Pleroma</a><br>
|
||||
<a href="/guides/reddit">Reddit</a><br>
|
||||
<a href="/guides/twitter">Twitter</a><br>
|
||||
<a href="/guides/xmpp">XMPP+OMEMO</a><br>
|
||||
</div>
|
||||
|
||||
<div class="guides__section">
|
||||
<h3>Other services</h3>
|
||||
<a href="/guides/feature-comparison-keybase">Feature comparison with Keybase</a><br>
|
||||
<a href="/guides/migrating-from-keybase">Migrating from Keybase</a><br>
|
||||
</div>
|
||||
|
||||
<div class="guides__section">
|
||||
<h3>Managing proofs in GnuPG</h3>
|
||||
<a href="/guides/managing-proofs-listing">Listing proofs</a><br>
|
||||
<a href="/guides/managing-proofs-deleting">Deleting proofs</a><br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
59
views/guides.pug
Normal file
59
views/guides.pug
Normal file
|
@ -0,0 +1,59 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 Guides
|
||||
.guides
|
||||
.guides__section
|
||||
h3 Using Keyoxide
|
||||
a(href='/guides/verify') Verifying a signature
|
||||
br
|
||||
a(href='/guides/encrypt') Encrypting a message
|
||||
br
|
||||
a(href='/guides/proofs') Verifying identity proofs
|
||||
br
|
||||
a(href='/guides/contributing') Contributing to Keyoxide
|
||||
br
|
||||
a(href='/guides/self-hosting-keyoxide') Self-hosting Keyoxide
|
||||
|
||||
.guides__section
|
||||
h3 OpenPGP and identity proofs
|
||||
a(href='/guides/openpgp-proofs') How OpenPGP identity proofs work
|
||||
br
|
||||
a(href='/guides/web-key-directory') Uploading keys using web key directory
|
||||
|
||||
.guides__section
|
||||
h3 Adding proofs
|
||||
a(href='/guides/devto') Dev.to
|
||||
br
|
||||
a(href='/guides/discourse') Discourse
|
||||
br
|
||||
a(href='/guides/dns') Domain / DNS
|
||||
br
|
||||
a(href='/guides/github') Github
|
||||
br
|
||||
a(href='/guides/hackernews') Hackernews
|
||||
br
|
||||
a(href='/guides/lobsters') Lobste.rs
|
||||
br
|
||||
a(href='/guides/mastodon') Mastodon
|
||||
br
|
||||
a(href='/guides/pleroma') Pleroma
|
||||
br
|
||||
a(href='/guides/reddit') Reddit
|
||||
br
|
||||
a(href='/guides/twitter') Twitter
|
||||
br
|
||||
a(href='/guides/xmpp') XMPP+OMEMO
|
||||
|
||||
.guides__section
|
||||
h3 Other services
|
||||
a(href='/guides/feature-comparison-keybase') Feature comparison with Keybase
|
||||
br
|
||||
a(href='/guides/migrating-from-keybase') Migrating from Keybase
|
||||
|
||||
.guides__section
|
||||
h3 Managing proofs in GnuPG
|
||||
a(href='/guides/managing-proofs-listing') Listing proofs
|
||||
br
|
||||
a(href='/guides/managing-proofs-deleting') Deleting proofs
|
105
views/index.php
105
views/index.php
|
@ -1,105 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>Keyoxide</h1>
|
||||
<p>A modern, secure and privacy-friendly platform to establish your <strong>decentralized online identity</strong> and perform <strong>basic cryptographic operations</strong>.</p>
|
||||
|
||||
<div class="flex-column-container">
|
||||
<div class="flex-column">
|
||||
<h2>Cryptographic operations</h2>
|
||||
<p>
|
||||
<a href="/verify">Verify PGP signature</a><br>
|
||||
<a href="/encrypt">Encrypt PGP message</a><br>
|
||||
<a href="/proofs">Verify distributed identity proofs</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="flex-column">
|
||||
<h2>Utilities</h2>
|
||||
<p>
|
||||
<a href="/util/profile-url">Profile URL generator</a><br>
|
||||
<a href="/util/wkd">Web Key Directory URL generator</a><br>
|
||||
<a href="/util/qrfp">Fingerprint QR generator</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>About</h2>
|
||||
<p><strong>Keyoxide</strong> allows you to link accounts on various online services and platforms together, prove they belong to you and establish an online identity. This puts <strong>you</strong>, the internet citizen, in charge when it comes to defining who you are on the internet instead of large corporations.</p>
|
||||
<p>As an example, here's the <a href="/9f0048ac0b23301e1f77e994909f6bd6f80f485d">developer's Keyoxide profile</a>.</p>
|
||||
<p>
|
||||
<strong>Keyoxide</strong> is developed by <a href="https://yarmo.eu">Yarmo Mackenbach</a>.
|
||||
The MIT-licensed code is hosted on <a href="https://codeberg.org/keyoxide/web">Codeberg</a>.
|
||||
It uses <a href="https://github.com/openpgpjs/openpgpjs">openpgp.js</a> (version <a href="https://github.com/openpgpjs/openpgpjs/releases/tag/v4.10.7">4.10.7</a>) for all cryptographic operations.
|
||||
</p>
|
||||
|
||||
<h2>Features</h2>
|
||||
|
||||
<h3>Decentralized online identity proofs</h3>
|
||||
<ul>
|
||||
<li>You decide which accounts are linked together</li>
|
||||
<li>You decide where this data is stored</li>
|
||||
<li>Keyoxide does not hold your identity data on its servers</li>
|
||||
<li>Keyoxide merely verifies the identity proofs and displays them</li>
|
||||
</ul>
|
||||
|
||||
<h3>Empowering the internet citizen</h3>
|
||||
<ul>
|
||||
<li>A verified identity proof proves ownership of an account and builds trust</li>
|
||||
<li>No bad actor can impersonate you as long as your accounts aren't compromised</li>
|
||||
<li>Your online identity data is safe from greedy internet corporations</li>
|
||||
</ul>
|
||||
|
||||
<h3>User-centric platform</h3>
|
||||
<ul>
|
||||
<li>Easily encrypt messages and verify signatures from the profile page</li>
|
||||
<li>Keyoxide generates QR codes that integrate with <a href="https://www.openkeychain.org/">OpenKeychain</a></li>
|
||||
<li>Keyoxide fetches the key wherever the used decides to store it</li>
|
||||
<li>Keyoxide is self-hostable, meaning you could put it on any server you trust</li>
|
||||
</ul>
|
||||
|
||||
<h3>Secure and privacy-friendly</h3>
|
||||
<ul>
|
||||
<li>Keyoxide doesn't want your personal data, track you or show you ads</li>
|
||||
<li>You never give data to Keyoxide, it simply uses the data you have made public</li>
|
||||
<li>Keyoxide relies on OpenPGP, a widely used public-key cryptography standard (<a href="https://tools.ietf.org/html/rfc4880">RFC-4880</a>)</li>
|
||||
<li>Cryptographic operations are performed in-browser by <a href="https://openpgpjs.org/">OpenPGP.js</a>, a library maintained by <a href="https://protonmail.com/blog/openpgpjs-email-encryption/">ProtonMail</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Free Open Source Software</h3>
|
||||
<ul>
|
||||
<li>Keyoxide is licensed under the permissive <a href="https://codeberg.org/keyoxide/web/src/branch/dev/LICENSE">MIT license</a></li>
|
||||
<li>The source code is hosted on <a href="https://codeberg.org/keyoxide/web">Codeberg.org</a></li>
|
||||
<li>Even the <a href="https://drone.keyoxide.org/keyoxide/web/">CI/CD activity</a> is publicly visible</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
101
views/index.pug
Normal file
101
views/index.pug
Normal file
|
@ -0,0 +1,101 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 Keyoxide
|
||||
p
|
||||
| A modern, secure and privacy-friendly platform to establish your
|
||||
strong decentralized online identity
|
||||
| and perform
|
||||
strong basic cryptographic operations
|
||||
| .
|
||||
.flex-column-container
|
||||
.flex-column
|
||||
h2 Cryptographic operations
|
||||
p
|
||||
a(href='/verify') Verify PGP signature
|
||||
br
|
||||
a(href='/encrypt') Encrypt PGP message
|
||||
br
|
||||
a(href='/proofs') Verify distributed identity proofs
|
||||
.flex-column
|
||||
h2 Utilities
|
||||
p
|
||||
a(href='/util/profile-url') Profile URL generator
|
||||
br
|
||||
a(href='/util/wkd') Web Key Directory URL generator
|
||||
br
|
||||
a(href='/util/qrfp') Fingerprint QR generator
|
||||
|
||||
h2 About
|
||||
p
|
||||
strong Keyoxide
|
||||
| allows you to link accounts on various online services and platforms together, prove they belong to you and establish an online identity. This puts
|
||||
strong you
|
||||
| , the internet citizen, in charge when it comes to defining who you are on the internet instead of large corporations.
|
||||
p
|
||||
| As an example, here's the
|
||||
a(href='/9f0048ac0b23301e1f77e994909f6bd6f80f485d') developer's Keyoxide profile
|
||||
| .
|
||||
p
|
||||
strong Keyoxide
|
||||
| is developed by
|
||||
a(href='https://yarmo.eu') Yarmo Mackenbach
|
||||
| . The MIT-licensed code is hosted on
|
||||
a(href='https://codeberg.org/keyoxide/web') Codeberg
|
||||
| . It uses
|
||||
a(href='https://github.com/openpgpjs/openpgpjs') openpgp.js
|
||||
| (version
|
||||
a(href='https://github.com/openpgpjs/openpgpjs/releases/tag/v4.10.7') 4.10.7
|
||||
| ) for all cryptographic operations.
|
||||
|
||||
h2 Features
|
||||
|
||||
h3 Decentralized online identity proofs
|
||||
ul
|
||||
li You decide which accounts are linked together
|
||||
li You decide where this data is stored
|
||||
li Keyoxide does not hold your identity data on its servers
|
||||
li Keyoxide merely verifies the identity proofs and displays them
|
||||
|
||||
h3 Empowering the internet citizen
|
||||
ul
|
||||
li A verified identity proof proves ownership of an account and builds trust
|
||||
li No bad actor can impersonate you as long as your accounts aren't compromised
|
||||
li Your online identity data is safe from greedy internet corporations
|
||||
|
||||
h3 User-centric platform
|
||||
ul
|
||||
li Easily encrypt messages and verify signatures from the profile page
|
||||
li
|
||||
| Keyoxide generates QR codes that integrate with
|
||||
a(href='https://www.openkeychain.org/') OpenKeychain
|
||||
li Keyoxide fetches the key wherever the used decides to store it
|
||||
li Keyoxide is self-hostable, meaning you could put it on any server you trust
|
||||
|
||||
h3 Secure and privacy-friendly
|
||||
ul
|
||||
li Keyoxide doesn't want your personal data, track you or show you ads
|
||||
li You never give data to Keyoxide, it simply uses the data you have made public
|
||||
li
|
||||
| Keyoxide relies on OpenPGP, a widely used public-key cryptography standard (
|
||||
a(href='https://tools.ietf.org/html/rfc4880') RFC-4880
|
||||
| )
|
||||
li
|
||||
| Cryptographic operations are performed in-browser by
|
||||
a(href='https://openpgpjs.org/') OpenPGP.js
|
||||
| , a library maintained by
|
||||
a(href='https://protonmail.com/blog/openpgpjs-email-encryption/') ProtonMail
|
||||
|
||||
h3 Free Open Source Software
|
||||
ul
|
||||
li
|
||||
| Keyoxide is licensed under the permissive
|
||||
a(href='https://codeberg.org/keyoxide/web/src/branch/dev/LICENSE') MIT license
|
||||
li
|
||||
| The source code is hosted on
|
||||
a(href='https://codeberg.org/keyoxide/web') Codeberg.org
|
||||
li
|
||||
| Even the
|
||||
a(href='https://drone.keyoxide.org/keyoxide/web/') CI/CD activity
|
||||
| is publicly visible
|
24
views/partials/key_selector.pug
Normal file
24
views/partials/key_selector.pug
Normal file
|
@ -0,0 +1,24 @@
|
|||
select#modeSelect.modeSelect(name='modeSelect')
|
||||
option(value='auto' selected=(mode == "auto" ? true : false)) Autodetect
|
||||
option(value='wkd' selected=(mode == "wkd" ? true : false)) Web Key Directory
|
||||
option(value='hkp' selected=(mode == "hkp" ? true : false)) Keyserver
|
||||
option(value='plaintext' selected=(mode == "plaintext" ? true : false)) Plaintext
|
||||
option(value='keybase' selected=(mode == "keybase" ? true : false)) Keybase
|
||||
|
||||
.modesContainer
|
||||
.modes.modes--auto(class=(mode == "auto" ? "modes--visible" : ""))
|
||||
input#auto_input(type='text' name='auto_input' placeholder='Email / key id / fingerprint' value=(mode == "auto" ? input : ""))
|
||||
|
||||
.modes.modes--wkd(class=(mode == "wkd" ? "modes--visible" : ""))
|
||||
input#wkd_input(type='text' name='wkd_input' placeholder='name@domain.org' value=(mode == "wkd" ? input : ""))
|
||||
|
||||
.modes.modes--hkp(class=(mode == "hkp" ? "modes--visible" : ""))
|
||||
input#hkp_input(type='text' name='hkp_input' placeholder='Email / key id / fingerprint' value=(mode == "hkp" ? input : ""))
|
||||
input#hkp_server(type='text' name='hkp_server' placeholder='https://keys.openpgp.org/ (default)')
|
||||
|
||||
.modes.modes--plaintext(class=(mode == "plaintext" ? "modes--visible" : ""))
|
||||
textarea#plaintext_input(name='plaintext_input')
|
||||
|
||||
.modes.modes--keybase(class=(mode == "keybase" ? "modes--visible" : ""))
|
||||
input#keybase_username(type='text' name='keybase_username' placeholder='username' value=(mode == "keybase" ? username : ""))
|
||||
input#keybase_fingerprint(type='text' name='keybase_fingerprint' placeholder='fingerprint' value=(mode == "keybase" ? fingerprint : ""))
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="/favicon.svg">
|
||||
<title>Keyoxide</title>
|
||||
<link rel="stylesheet" href="/assets/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container container--profile">
|
||||
<div class="content">
|
||||
<span id="profileUid" style="display: none;"><?=$this->escape($uid)?></span>
|
||||
<span id="profileMode" style="display: none;"><?=$this->escape($mode)?></span>
|
||||
<div id="profileHeader">
|
||||
<img id="profileAvatar" src="/assets/img/avatar_placeholder.png" alt="avatar" style="display: none">
|
||||
<p id="profileName"></p>
|
||||
</div>
|
||||
<div id="profileData"><p>Loading keys & verifying proofs…</p></div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p>Page generated by <a href="/">Keyoxide</a>.</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
<script src="/assets/openpgp.min.js"></script>
|
||||
<script type="text/javascript" src="/assets/scripts.js" charset="utf-8"></script>
|
||||
</html>
|
25
views/profile.pug
Normal file
25
views/profile.pug
Normal file
|
@ -0,0 +1,25 @@
|
|||
doctype html
|
||||
head
|
||||
meta(charset='utf-8')
|
||||
meta(name='viewport' content='width=device-width, initial-scale=1')
|
||||
link(rel='shortcut icon' href='/favicon.svg')
|
||||
title Keyoxide
|
||||
link(rel='stylesheet' href='/static/styles.css')
|
||||
|
||||
main.container.container--profile
|
||||
.content
|
||||
span#profileUid(style='display: none;') #{uid}
|
||||
span#profileMode(style='display: none;') #{mode}
|
||||
#profileHeader
|
||||
img#profileAvatar(src='/static/img/avatar_placeholder.png' alt='avatar' style='display: none')
|
||||
p#profileName
|
||||
#profileData
|
||||
p Loading keys & verifying proofs…
|
||||
footer
|
||||
p
|
||||
| Page generated by
|
||||
a(href='/') Keyoxide
|
||||
| .
|
||||
|
||||
script(src='/static/openpgp.min.js')
|
||||
script(type='text/javascript' src='/static/scripts.js' charset='utf-8')
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>Proofs</h1>
|
||||
<form id="form-proofs" method="post">
|
||||
<h3>Public key</h3>
|
||||
<label for="modeSelect">Mode: </label>
|
||||
<select class="modeSelect" name="modeSelect" id="modeSelect">
|
||||
<option value="auto" <?php if ($mode=="auto"): ?>selected<?php endif ?>>Autodetect</option>
|
||||
<option value="wkd" <?php if ($mode=="wkd"): ?>selected<?php endif ?>>Web Key Directory</option>
|
||||
<option value="hkp" <?php if ($mode=="hkp"): ?>selected<?php endif ?>>Keyserver</option>
|
||||
<option value="plaintext" <?php if ($mode=="plaintext"): ?>selected<?php endif ?>>Plaintext</option>
|
||||
</select>
|
||||
<div class="modesContainer">
|
||||
<div class='modes modes--auto <?php if ($mode=="auto"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="auto_input" id="auto_input" placeholder="Email / key id / fingerprint" value="<?=$this->escape($auto_input)?>">
|
||||
</div>
|
||||
<div class='modes modes--wkd <?php if ($mode=="wkd"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="wkd_input" id="wkd_input" placeholder="name@domain.org" value="<?=$this->escape($wkd_input)?>">
|
||||
</div>
|
||||
<div class='modes modes--hkp <?php if ($mode=="hkp"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="hkp_input" id="hkp_input" placeholder="Email / key id / fingerprint" value="<?=$this->escape($hkp_input)?>">
|
||||
<input type="text" name="hkp_server" id="hkp_server" placeholder="https://keys.openpgp.org/ (default)">
|
||||
</div>
|
||||
<div class='modes modes--plaintext <?php if ($mode=="plaintext"): ?>modes--visible<?php endif ?>'>
|
||||
<textarea name="plaintext_input" id="plaintext_input"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<h3>Result</h3>
|
||||
<p id="result"></p>
|
||||
<p id="resultContent"></p>
|
||||
<input type="submit" class="bigBtn" name="submit" value="VERIFY PROOFS">
|
||||
</form>
|
||||
</div>
|
14
views/proofs.pug
Normal file
14
views/proofs.pug
Normal file
|
@ -0,0 +1,14 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 Proofs
|
||||
form#form-proofs(method='post')
|
||||
h3 Public key
|
||||
label(for='modeSelect') Mode:
|
||||
include partials/key_selector
|
||||
|
||||
h3 Result
|
||||
p#result
|
||||
p#resultContent
|
||||
input.bigBtn(type='submit' name='submit' value='VERIFY PROOFS')
|
|
@ -1,70 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#fff">
|
||||
<link rel="shortcut icon" href="/favicon.svg">
|
||||
<title><?=$this->e($title)?>Keyoxide</title>
|
||||
<link rel="stylesheet" href="/assets/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="container">
|
||||
<a href="/" class="logo"><img src="/assets/img/logo_96.png" alt="Keyoxide logo"></a>
|
||||
<div class="spacer"></div>
|
||||
<nav>
|
||||
<a href="/">about</a>
|
||||
<a href="/guides">guides</a>
|
||||
<a href="/faq">faq</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="container">
|
||||
<?=$this->section('content')?>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
<a href="https://codeberg.org/keyoxide">Source code</a> -
|
||||
<a href="https://drone.keyoxide.org/keyoxide/web/">CI/CD</a> -
|
||||
<a href="https://fosstodon.org/@keyoxide">Mastodon</a>
|
||||
</p>
|
||||
<p>© 2020 Keyoxide contributors</p>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
<script src="/assets/openpgp.min.js"></script>
|
||||
<script src="/assets/qrcode.min.js"></script>
|
||||
<script type="text/javascript" src="/assets/scripts.js" charset="utf-8"></script>
|
||||
</html>
|
33
views/template.base.pug
Normal file
33
views/template.base.pug
Normal file
|
@ -0,0 +1,33 @@
|
|||
doctype html
|
||||
head
|
||||
meta(charset='utf-8')
|
||||
meta(name='viewport' content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color' content='#fff')
|
||||
link(rel='shortcut icon' href='/favicon.svg')
|
||||
title= (title ? title : "Keyoxide")
|
||||
link(rel='stylesheet' href='/static/styles.css')
|
||||
header
|
||||
.container
|
||||
a.logo(href='/')
|
||||
img(src='/static/img/logo_96.png' alt='Keyoxide logo')
|
||||
.spacer
|
||||
nav
|
||||
a(href='/') about
|
||||
a(href='/guides') guides
|
||||
a(href='/faq') faq
|
||||
|
||||
main.container
|
||||
block content
|
||||
|
||||
footer
|
||||
p
|
||||
a(href='https://codeberg.org/keyoxide') Source code
|
||||
| -
|
||||
a(href='https://drone.keyoxide.org/keyoxide/web/') CI/CD
|
||||
| -
|
||||
a(href='https://fosstodon.org/@keyoxide') Mastodon
|
||||
p © 2020 Keyoxide contributors
|
||||
|
||||
script(src='/static/openpgp.min.js')
|
||||
script(src='/static/qrcode.min.js')
|
||||
script(type='text/javascript' src='/static/scripts.js' charset='utf-8')
|
|
@ -1,70 +0,0 @@
|
|||
<?php
|
||||
// Copyright (C) 2020 Yarmo Mackenbach
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Affero General Public License as published by the Free
|
||||
// Software Foundation, either version 3 of the License, or (at your option)
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
// FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
// details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License along
|
||||
// with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Also add information on how to contact you by electronic and paper mail.
|
||||
//
|
||||
// If your software can interact with users remotely through a computer network,
|
||||
// you should also make sure that it provides a way for users to get its source.
|
||||
// For example, if your program is a web application, its interface could display
|
||||
// a "Source" link that leads users to an archive of the code. There are many
|
||||
// ways you could offer source, and different solutions will be better for different
|
||||
// programs; see section 13 for the specific requirements.
|
||||
//
|
||||
// You should also get your employer (if you work as a programmer) or school,
|
||||
// if any, to sign a "copyright disclaimer" for the program, if necessary. For
|
||||
// more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
||||
?>
|
||||
<?php $this->layout('template.base', ['title' => $title]) ?>
|
||||
|
||||
<div class="content">
|
||||
<h1>Verify</h1>
|
||||
<form id="form-verify" method="post">
|
||||
<h3>Signer</h3>
|
||||
<label for="modeSelect">Mode: </label>
|
||||
<select class="modeSelect" name="modeSelect" id="modeSelect">
|
||||
<option value="auto" <?php if ($mode=="auto"): ?>selected<?php endif ?>>Autodetect</option>
|
||||
<option value="wkd" <?php if ($mode=="wkd"): ?>selected<?php endif ?>>Web Key Directory</option>
|
||||
<option value="hkp" <?php if ($mode=="hkp"): ?>selected<?php endif ?>>Keyserver</option>
|
||||
<option value="plaintext" <?php if ($mode=="plaintext"): ?>selected<?php endif ?>>Plaintext</option>
|
||||
<option value="keybase" <?php if ($mode=="keybase"): ?>selected<?php endif ?>>Keybase</option>
|
||||
</select>
|
||||
<div class="modesContainer">
|
||||
<div class='modes modes--auto <?php if ($mode=="auto"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="auto_input" id="auto_input" placeholder="Email / key id / fingerprint" value="<?=$this->escape($auto_input)?>">
|
||||
</div>
|
||||
<div class='modes modes--wkd <?php if ($mode=="wkd"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="wkd_input" id="wkd_input" placeholder="name@domain.org" value="<?=$this->escape($wkd_input)?>">
|
||||
</div>
|
||||
<div class='modes modes--hkp <?php if ($mode=="hkp"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="hkp_input" id="hkp_input" placeholder="Email / key id / fingerprint" value="<?=$this->escape($hkp_input)?>">
|
||||
<input type="text" name="hkp_server" id="hkp_server" placeholder="https://keys.openpgp.org/ (default)">
|
||||
</div>
|
||||
<div class='modes modes--plaintext <?php if ($mode=="plaintext"): ?>modes--visible<?php endif ?>'>
|
||||
<textarea name="plaintext_input" id="plaintext_input"></textarea>
|
||||
</div>
|
||||
<div class='modes modes--keybase <?php if ($mode=="keybase"): ?>modes--visible<?php endif ?>'>
|
||||
<input type="text" name="keybase_username" id="keybase_username" placeholder="username" value="<?=$this->escape($keybase_username)?>">
|
||||
<input type="text" name="keybase_fingerprint" id="keybase_fingerprint" placeholder="fingerprint" value="<?=$this->escape($keybase_fingerprint)?>">
|
||||
</div>
|
||||
</div>
|
||||
<h3>Signature</h3>
|
||||
<textarea name="signature" id="signature"></textarea>
|
||||
<h3>Result</h3>
|
||||
<p id="result"></p>
|
||||
<p id="resultContent"></p>
|
||||
<input type="submit" class="bigBtn" name="submit" value="VERIFY SIGNATURE">
|
||||
</form>
|
||||
</div>
|
17
views/verify.pug
Normal file
17
views/verify.pug
Normal file
|
@ -0,0 +1,17 @@
|
|||
extends template.base.pug
|
||||
|
||||
block content
|
||||
.content
|
||||
h1 Verify
|
||||
form#form-verify(method='post')
|
||||
h3 Signer
|
||||
label(for='modeSelect') Mode:
|
||||
include partials/key_selector
|
||||
|
||||
h3 Signature
|
||||
textarea#signature(name='signature')
|
||||
|
||||
h3 Result
|
||||
p#result
|
||||
p#result
|
||||
input.bigBtn(type='submit' name='submit' value='VERIFY SIGNATURE')
|
Loading…
Reference in a new issue