| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Hopefully, le résultat est plus clair en construisant le tweak par
concaténations progressives.
|
|
|
|
|
|
Et petits nettoyages par-ci par-là.
|
|
Le code résultant ressemble plus à ce qui est décrit dans les
algorithmes 3 et 4.
|
|
Très similaire à ae_common._tweak_associated_data.
|
|
|
|
|
|
|
|
|
|
|
|
Pour que ce soit plus simple de remplacer la boucle par
generate 2 128
generate 1 256
… ce qui prend 6 minutes au lieu de 20 sur ma machine \o/
|
|
Et réutilisation de fonctions Python natives.
|
|
IME, itérer sur un range() est rarement la façon la plus expressive de
faire les choses ; les alternatives imposent une structure qui rendent
l'intention plus claire. E.g. quand on voit une compréhension, on
comprend que l'auteur cherche à filtrer et/ou transformer ce sur quoi
il itère.
Réutilisation de xor_state(), renommé xor() puisqu'il sert dans
plusieurs situations.
Séparation de ce xor() et des fonctions communes aux modes
authentifiés pour éviter un import circulaire.
|
|
Surtout la capitalisation des noms de fonction.
Retrait des lignes de '#' ; si il y a des séparations à faire, autant
ajouter des modules.
Correction de _MessageTweak.BLOCK en passant.
|
|
De sorte à ce qu'on puisse le lancer depuis n'importe quel dossier.
|
|
|
|
On bénéficie déjà de l'espace de nommage "lilliput".
|
|
Idem, renommage des fonctions privées avec un souligné pour que l'API
soit plus simple à comprendre.
⚠ Pas testé, ça prend littéralement 20 minutes à l'implémentation
Python de générer les vecteurs de test, et c'est l'heure du dodo…
|
|
Ajout d'un souligné devant les fonctions privées ; de cette façon,
>>> from lilliput import lilliput_ae_1
>>> help(lilliput_ae_1)
… ne montre que les fonctions "publiques", i.e. celles que
l'utilisateur est censé appeler.
|
|
Idéalement, il faudrait rajouter les bonnes dépendances dans le
Makefile…
|
|
|
|
|
|
En plus du paquet Python "lilliput", chaque dossier embarque
- un script "genkat_aead.py" qui génère les vecteurs de test via l'API
du module "crypto_aead",
- un module "crypto_aead" servant de point d'entrée générique,
- un module "parameters", qui permet à crypto_aead d'instancier
Lilliput-AE avec le bon mode et la bonne taille de clé.
Livraison dans ./crypto_aead sans se soucier de l'arborescence du
dépôt, par homogénéité avec make-package.sh.
Quelques ajustement dans genkat_aead.py pour que le lien avec
genkat_aead.c soit plus évident.
|
|
|
|
Et ajout d'un métascript pour vérifier la conformité.
Il ne reste plus qu'à… (bis)
|
|
Pour aider l'implémentation matérielle.
|
|
Il ne reste plus qu'à générer les dossiers lilliputae*/add_python et
les fichiers parameters.py correspondants, et on peut ajouter le tout
à l'archive à soumettre au NIST.
|
|
|
|
Quand le tout sera packagé sous le namespace "lilliput", le préfixe
alourdira plus qu'autre chose.
|
|
Pas besoin de la condition. Ajout d'un exemple.
|
|
Dans le cadre d'une croisade contre les range(len(…)).
Suppression d'un paramètre inutile dans la foulée.
|
|
Plutôt que int() ; moins de bruit.
… Au passage, simplification (j'espère) de ArrayToBlockbytesMatrix() :
- pas besoin d'initialiser la matrice à zéro ; suffit d'ajouter les
octets et les blocs comme ils viennent,
- AFAICT,
int((length + (BLOCK_BYTES - (length % BLOCK_BYTES))) / BLOCK_BYTES)
quand length % BLOCK_BYTES > 0, c'est juste une façon compliquée
d'écrire
int(length/BLOCK_BYTES) + 1
|
|
- espaces avant ':'
- espaces en trop après ','
- parenthèses dans les if
- levée d'exception plutôt que 'return None' implicite
Simplification de genkat_aead.py grâce à l'exception levée par le
module.
|
|
|
|
|
|
Utilisation d'une enum, pour que les valeurs possibles soient
explicites.
Renommage des points d'entrée pour qu'ils soient uniformes et
interchangeables.
Transformation du tag en liste plus bas pour que lilliput.py ne se
soucie pas des détails d'implémentation des fonctions en-dessous.
|
|
|
|
Et des fonctions d'initialisation. Et d'une fonction non-utilisée dans
le mode SCT-2.
|
|
|
|
Ce serait mieux si l'API renvoyait une exception… Un jour.
|
|
|
|
|
|
|
|
Aurais dû les enlever dans 23d2fea280302c01a818e46e4a43c884eac03865.
|
|
En passant :
- remplacement de paramètres 0/1 par des booléens/des enums (pour
TweakMessage en particulier, ça simplifie pas mal la logique)
- construction de M (resp. C pour le déchiffrement) au fur et à
mesure, i.e. avec des listes vides, plutôt qu'en pré-allouant des
tableaux potentiellement trop gros en cas de padding
|
|
Pour que le lien soit plus facile à faire avec la spec.
|