J'écris quelque chose que needs to do electronic signatures.Génération de la paire de clés PGP et signature du texte avec une clé privée PGP cryptée, en Javascript
Certains utilisateurs seront geeks comme moi et auront déjà leurs propres clés PGP. La plupart ne le feront pas et ne voudront pas le faire avec l'installation ou la maintenance de toute façon.
En tant que solution de contournement, je veux faire ce qui suit:
- Créer une paire de clés public/privé pour l'utilisateur qui utilise un mot de passe « signature » séparée.
- Lorsque j'ai besoin que l'utilisateur signe quelque chose, fournissez le texte en clair à l'utilisateur, avec d'autres informations à l'intérieur comme des horodatages et autres références, et faites-le signer avec la clé privée que je stocke.
Il existe essentiellement deux façons de le faire (pour les utilisateurs qui n'ont pas leurs propres clés PGP).
- L'utilisateur me soumet le mot de passe de signature via SSL. Je génère le côté serveur de la clé privée et déverrouille temporairement la clé privée lorsque nécessaire pour signer. Je ne stocke pas le mot de passe du tout, et je me débarrasse de la clé privée déverrouillée dès que possible.
- L'utilisateur génère la clé pub/priv en Javascript. Ils m'envoient le pubkey et la clé privée cryptée et gardent une copie dans le stockage local. Quand ils ont besoin de signer quelque chose, je m'assure que leur stockage local l'a (et le pousse sinon), ils décryptent et signent le texte localement en utilisant JS. Je ne vois jamais leur mot de passe de signature ni leur clé privée déverrouillée.
De toute façon, je signe également le résultat w/la clé du serveur. Mais j'ai besoin qu'il y ait un moyen unique, non répudiable, pour l'utilisateur de signer du texte, et avoir une clé PGP que je maintiens est la manière la plus simple de le faire.
L'option 1 est beaucoup plus simple à faire et fonctionne assez bien pour répondre à mes besoins minimums.
L'option 2 est un peu plus fiable, à moins que je subvertir le JS (que je pourrais encore faire), je ne peux pas utiliser leur privkey moi-même.
Toutefois, afin de le faire, je besoin d'une bibliothèque JavaScript qui peut
- générer un pub/PRIV keypair
- décrypter une clé privée pour signe utilisation
- un bloc de texte avec cette clé privée
Quelles bibliothèques peuvent faire cela?
P.S. Veuillez noter que je n'ai pas besoin de pour chiffrer à une clé publique donnée. J'ai besoin de l'utilisateur signe avec leur propre clé (cryptée-comme-stocké).