| Age | Commit message (Collapse) | Author |
|
Un peu de machinerie à mettre en place pour permettre l'ajout de
fichiers arbitraires dans une implémentation.
|
|
- retrait de stdio.h (inutile)
- "aération" du prototype de _state_init
|
|
- fins de ligne UNIX (\n)
- espaces plutôt que tabulations
|
|
Dans le but de rendre
diff -ru ref add_threshold
plus digeste.
|
|
- ordre alphabétique des auteurs,
- un auteur par ligne, date sur une ligne séparée : maintenance et
diff plus simples,
- brève description de chaque fichier.
|
|
Modifications nécessaires dans l'infra :
- retrait conditionnel de test-tweakey, vu que l'API n'est pas la même
pour l'implémentation à seuil,
- retrait conditionnel de l'avertissement "-Wparentheses", plus
agaçant qu'autre chose sur les calculs booléens de cipher.c, e.g.
y_hi&3 ^ (y_hi&8)>>1
où la priorité est intuitive (shifts avant AND avant XOR). C'est
dommage de perdre les avertissements sur if (a&b == c), mais tant
pis… On va compter sur La Suite De Test®©™ pour nous couvrir.
Co-authored-by: Alexandre Adomnicai <a.adomnicai@trusted-objects.com>
Co-authored-by: leo <leo.reynaud17@gmail.com>
|
|
|
|
Et suppression de l'implémentation add_tweakeysequences, qui n'a plus
aucun intérêt (plus lente et plus grosse que les deux autres).
|
|
|
|
|
|
|
|
|
|
On utilise des minuscules dans la spécification.
|
|
|
|
Pour qu'ils soient plus proches du nom donné dans la spécification.
|
|
Les renommages récents les ont chamboulées un peu.
|
|
Au final, il n'est pas moins performant que l'autre ; cf. issue #4.
|
|
- Changement de l'implémentation de référence en conséquence (les
compilateurs savent très bien optimiser les deux shifts en un seul
AND)
- Retouche du phrasé : "multiplication αᵢ" plutôt que "αᵢ
multiplication". Je n'ai pas de pointeurs vers une règle de
grammaire particulière, mais c'est par comparaison avec "Planet
Earth" ou "Operation Overlord".
|
|
|
|
|
|
Avec une phrase de documentation en prime pour chaque fichier.
Cf. issue #2.
|
|
Deux lignes vides avant le #endif, sauf pour parameters.h et
constants.h qui ne contiennent que des directives de préprocesseur.
|
|
|
|
Aucune idée de pourquoi j'avais insisté pour nommer les deux
"parameters" plutôt que de distinguer les constantes des paramètres.
Peut-être par souci de compatibilité avec FELICS, qui utilise
constants.h.
🤷
|
|
|
|
|
|
Ça me chiffonne de mettre deux instructions. En même temps, le cast me
chiffonne aussi, donc je reviendrai peut-être sur cette décision…
"x & 0x1f" a été remplacé par "(x<<3) >> 3" parce que c'est ce qu'un
lecteur qui déroulerait l'expression de M₃ trouverait, et aussi parce
que les compilateurs sont de toute façon suffisamment malins pour
traduire le tout en un AND.
|
|
|
|
|
|
|
|
|
|
Cette implémentation utilisera les matrices M², M³, MR² et MR³ telles
qu'exprimées dans la spécification, comme add_tabulatedtweakey ; en
revanche, les matrices 8×8 M₁, M₂, M₃ et M₄ seront codées par des
expressions booléennes (XORs et décalages) qui seront présentées dans
la section "implémentation" du papier.
|
|
Au passage, officialisation de la version "i applications successives
de M pour calculer Mⁱ" du key schedule.
|
|
Dans cette version, les multiplications par Mⁱ (resp. MRⁱ) sont faites
en appliquant M (resp. MR) i fois, plutôt qu'en utilisant les
expressions données dans la spécification.
|
|
Pour que la comparaison avec la spécification soit plus évidente.
|
|
|
|
En fait les séquences marchent dans un sens comme dans l'autre.
✨ MathéMagie ✨
|
|
|
|
Vu que la séquence générée par M₁ pour M² et M³ sera probablement
différente de la séquence générée pour MR³.
|
|
|
|
Les résultats changent, mais sont maintenant conformes à ceux de Léo.
|
|
*Toutes* les opérations s'appliquent dans l'autre sens, *y compris les
shifts*, vu que on prend (y₀…y7)ᵗ = MR(x₀…x₇)ᵗ.
|
|
Plus facile pour suivre la spec.
|
|
Les tests passent, c'est encourageant.
|
|
Pour le moment, Mⁱ (resp. MRⁱ) sont implémentées en appliquant i fois
M (resp. MR) ; à voir si on préfère les pré-calculer.
|
|
Ajout d'une fonction pour récupérer facilement la nouvelle valeur des
vecteurs.
|
|
|
|
|
|
|
|
|