Comme je n’avais rien de mieux à faire, j’ai exploré les API crypto de nos browsers pour enfin essayer les clés publiques/privées sur le web.
C’est parti d’un besoin simple pour mettre des sondages en ligne de façon simple (à partir d’un document markdown en fait) et compiler les réponses. Pour mes premiers tests j’ai utilisé https://www.jsonstore.io/ que (j’avais déjà mentionné) pour stocker les réponses. Par contre, tout est ouvert sur jsonstoreio (en lecture et en écriture) et c’est là que l’encryption asymétrique intervient.
J’ai mis une démo en ligne et le code source est sur GitHub:
Notez que c’est au stade proof of concept. Il faut faire plusieurs étapes manuellement (création des clés, token jsonstioreio, génération du sondage html, génération du lecteur de réponses, etc.) mais ça fonctionne.
Update
Si seulement l’aspect cryptographie vous intéresse, c’est basé sur un exemple plus simple:
C’est sans la conversion markdown et ça inclut la clé privée pour décrypter pour faire ça super simple.
Un truc important à venir c’est l’encryption de la clé privée elle-même. Dans le lingo webcrypto, on parle de wrapper des clés. Comme ça, on a besoin d’un mot de passe pour utiliser la clé (à la ssh/gpg, etc.).
Le code de ce projet est particulièrement mauvais, vous m’en excuserez. En général, j’utilise $ comme préfixe pour indiquer que c’est une valeur du DOM.
En PHP, il faut mettre $ devant les variables. En Perl, c’est $ ou % ou @ (très bizarre).
Donc, je me demandais si $K2Vj$$interop$default.d est le nom d’une variable, ou encore si $K2Vj$$interop$default est le nom de la variable et d est un attribut, ou bien si c’est comme les data frames ou listes en R.
Il semble donc qu’en Javascript je peux nommer mes variables $, $$, $$$, $$$$, $$$$$$$ …
Aussi, j’aime bien ton utilisation abondante de “const”. Cette façon de faire me rappelle le scheme / lisp, où les variables ne sont pas modifiées après les avoir déclarées et définies.
qui exporte un JSON. Celui-ci est stocké tel quel (m’enfin, en passant par la moulinette Parcel, ces $ viennent de là je crois) dans un fichier json séparé, mais https://fr.parceljs.org/ prend mes sources (incluant le json) et en fait un gros bundle.Le view source des fureteurs est moins utile depuis que tout est transpilé/bundlé.
En JavaScript, $ n’a aucune valeur spéciale dans le nommage des variables. Tout unicode est supporté (à quelques exceptions syntaxiques près), alors une variable pourrait se nommer allô avec l’accent et tout.
Pas mal tout le monde a vu $ en JS client vu que c’est le nickname de jQuery.
C’est trompeur en JavaScript ce const. Comme les objets sont passés par référence, on peut toujours faire
const allo = { bob: 42 }
allo.bob = "gérard" // js se fou pas mal des types aussi!
// interdit:
allo = { bob: 35 } // const empêche de réassigner seulement
Si tu veux un allo constant, faut utiliser freeze().
Dans Parcel, est-ce qu’il y a une option pour que le nom des variables contiennent seulement des 1 et des l et de longueur constante, comme:
l1l1l1l1
l11ll1l1
Ça rend ça plus obfusqué
J’ai fait du Javascript (prototype.js) il y a plusieurs années et $(“foo”) était pour obtenir l’élément du DOM avec id=“foo”. Je pensais que le $ était spécial à cause de ça.
Pour le const, moi, je me rappelle que j’utilisais “var” pour déclarer mes variables en JavaScript.
freeze(), a OK. Il y a ça aussi en Ruby (freeze, frozen?).
Hey merci pour les liens. Je ne sais pas c’était quoi la version de JavaScript que j’utilisais il y a 5 ans, mais on disait souvent ECMA script, il me semble.
Dans ton lien, le Assignment Destructuring est bizarre je trouve !
ECMAScript c’est le nom de la spécification. Pourquoi c’est pas ISO-…? J’ai oublié
On ne tracera pas la longue histoire de ce langage d’abord conçu en 10 jours avec une syntaxe qui ressemble au C au premier coup d’oeil mais qui cache en fait un genre de scheme le tout enrobé du nom Java qui gagnait beaucoup en popularité à l’époque des applets…
Hehe. C’est vrai que c’est bizarre un peu l’histoire de JavaScript.
Dans le temps de Macromedia Flash, puis Adobe Flash, dans l’IDE de développement Flash, le code c’était essentiellement du ECMA script. Ça s’appelait le ActionScript. J’en ai fait en 2003-2005 !
En 2012-2015, j’avais utilisé la balise <canvas> pour faire du 2D. J’avais bien aimé.
Est-ce que dans Javascript ES6, il y a du nouveau pour le dessin ?
Je ne connais pas tellement cet aspect mais ce qui concerne les browsers se définit plutot au W3C (c’est pres de 1200 specs). Par contre, je sais qu’on peut mélanger SVG et HTML assez facilement, par exemple dans le site de cliparts que je mentionnais récemment ou encore le site de mon ami