This repository has been archived on 2024-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
atsebay.t/ui/src/routes/keys.svelte

136 lines
6.2 KiB
Svelte

<script>
import { deleteKey, getKeys, getKey, Key } from '../lib/key';
import { user } from '../stores/user';
import { ToastsStore } from '../stores/toasts';
let keysP = getKeys();
let mykey = "";
let holdSubmit = false;
async function submitPGPKey() {
holdSubmit = true;
let key = new Key({ type: 'pgp', key: mykey });
key.save().then(() => {
keysP = getKeys();
holdSubmit = false;
mykey = "";
ToastsStore.addToast({
msg: "Votre nouvelle clef a bien été enregistrée.",
color: "success",
title: "Clef PGP",
});
}, (error) => {
holdSubmit = false;
ToastsStore.addErrorToast({
msg: "Une erreur s'est produite durant l'envoi de votre clef : " + error,
});
});
}
</script>
<h2>Ma clef PGP</h2>
<p class="lead">
Vos rendus doivent être signés avec votre clef PGP.
</p>
{#await keysP}
Veuillez patienter
{:then keys}
{#if keys && keys.length > 0}
<p>
Vous avez actuellement enregistré {#if keys.length > 1}les clefs publiques suivantes{:else}la clef publique suivante{/if}&nbsp;:
</p>
{#each keys as keyid}
{#await getKey(keyid)}
Veuillez patienter
{:then key}
<div class="alert alert-dark d-flex justify-content-between">
<div class="d-flex">
<div class="d-flex flex-column justify-content-center me-3">
<i class="bi bi-key-fill display-4"></i>
<div class="text-center badge bg-light" style="font-variant: small-caps;">
{key.type}
</div>
</div>
<div>
Adresse électronique&nbsp;: <strong class="badge bg-secondary">{key.infos.email}</strong><br>
Nom&nbsp;: <strong>{key.infos.identity}</strong> {#if key.infos.comment}<span class="fst-italic">({key.infos.identity})</span>{/if}<br>
Key ID&nbsp;: <strong>{key.infos.keyid}</strong><br>
Date de la signature&nbsp;: <strong>{key.infos.creation}</strong><br>
Clef expirée&nbsp;: <span class="badge" class:bg-danger={key.infos.sigexpired} class:bg-info={!key.infos.sigexpired}>{key.infos.sigexpired?"oui":"non"}</span>
</div>
</div>
<div class="d-flex flex-column justify-content-center">
<button
type="button"
class="btn btn-outline-danger float-end"
on:click={() => key.delete().then(() => { keysP = getKeys(); })}
>
Supprimer la clef
</button>
</div>
</div>
{:catch err}
<div class="alert alert-danger d-flex justify-content-between">
<p>
<strong>Il y a une erreur avec cette clef&nbsp;:</strong>
{err}
</p>
<div class="d-flex flex-column justify-content-center">
<button
type="button"
class="btn btn-outline-danger float-end"
on:click={() => deleteKey(keyid).then(() => { keysP = getKeys(); })}
>
Supprimer la clef
</button>
</div>
</div>
{/await}
{/each}
{:else}
<p>
Afin de pouvoir les vérifier, veuillez envoyer votre clef publique dans le formulaire ci-dessous.
Utilisez la commande <code>gpg --export --export-options export-minimal --armor {#if $user}{$user.email}{:else}login_x@epita.fr{/if}</code>&nbsp;:
</p>
<form class="container" on:submit|preventDefault={submitPGPKey}>
<textarea
class="form-control"
rows="10"
bind:value={mykey}
placeholder="-----BEGIN PGP PUBLIC KEY BLOCK-----
QmllbiBzw7tyIHF1ZSBjJ2VzdCB1bmUgY2hhw65uZSBxdWkgdmV1dCBkaXJlIHF1
ZWxxdWUgY2hvc2UK ...
-----END PGP PUBLIC KEY BLOCK-----"
></textarea>
<button
type="submit"
class="mt-2 btn btn-primary"
disable={!holdSubmit}
>
Enregistrer cette clef PGP
</button>
</form>
{/if}
{/await}
<h3 class="mt-4">
Comment utiliser votre clef PGP&nbsp;?
</h3>
<p>
Votre clef PGP peut vous servir à sécuriser les échanges de courriers électroniques. Par exemple les courriels officiels sur les listes de diffusion sensibles sont systématiquement signés (pour attester que c'est le responsable du projet qui en est bien à l'origine) ou encore si vous ne voulez pas que des tiers exploitent vos communications et/ou données personnelles (dans ce cas, on chiffre le contenu pour qu'il ne soit lisible que par le(s) destinataire(s) attendus).
</p>
<p>
Avec git, vous pouvez signer chacun de <a href="https://docs.gitlab.com/ee/user/project/repository/gpg_signed_commits/" target="_blank">vos commits</a>, ou <a href="https://dev.to/shostarsson/how-to-use-pgp-to-sign-your-commits-on-github-gitlab-bitbucket-3dae#fountainpen-sign-tags-using-your-gpg-key" target="_blank">vos tags</a>.<br>
Si vous souhaitez contribuer au <a href="https://www.kernel.org/doc/html/latest/process/maintainer-pgp-guide.html">noyau Linux</a> (ou tout autre projet d'envergure), il est nécessaire de signer vos contributions. Cela permet d'éviter <a href="https://www.theregister.com/2021/03/29/php_repository_infected/">un certain nombre d'attaques</a>.
</p>
<p>
Vous approchez à grand pas (si ce n'est pas déjà fait&nbsp;!) de vos premières contributions sur des projets sérieux, qu'ils appartiennent à une entreprise ou bien à la communauté. Afin de mieux vous préparer à cette transition, nous vous demandons dans le cadre de ce cours, de faire vos rendus signés avec votre clef PGP.
</p>
<div class="mb-5"></div>