Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Actualité : wolfSSL pointe son museau sur Amiga
(Article écrit par Andrew Hutchings et extrait de linuxjedi.co.uk - décembre 2024)
|
|
Comme beaucoup d'entre vous le savent probablement, je suis l'un des développeurs de
wolfSSL, une bibliothèque de sécurité SSL/TLS. Je suis
spécialisé dans le portage sur diverses plates-formes, depuis les microcontrôleurs 16 bits jusqu'aux
gros processeurs de serveurs 64 bits. J'ai décidé de voir si je pouvais faire fonctionner wolfSSL sur
une plate-forme vieille de 30 ans, en particulier "Jops", l'Amiga 4000 que je viens de restaurer.
Portage
wolfSSL a déjà un portage sur 68000, donc une partie du travail est faite pour moi. La partie la
plus délicate est de générer de l'entropie pour l'alimentation du générateur de nombres aléatoires.
Les moyens typiques de le faire sont les horloges (surtout pas synchronisées avec le proesseur) et
les ports analogiques.
Au début, je voulais essayer d'utiliser le compteur HSYNC, mais malheureusement le planificateur de
du Workbench synchronise les tranches de temps de l'application avec celui-ci, donc il n'y a pas vraiment
d'entropie ici. A la place, j'ai fini par utiliser une combinaison du compteur E-clock à environ 7 kHz,
le compteur du nombre de tics de la souris, et l'entrée analogique sur le port manette. Ce n'est pas parfait,
mais cela devrait suffire pour l'instant.
Pour les développeurs, voici la partie principale du code :
UBYTE amiga_rng(void)
{
struct EClockVal clockval;
UBYTE rng_out;
UWORD old_pot = potgo;
potgo = 0x0fff;
do {
ReadEClock(&clockval);
} while (clockval.ev_lo == last_time);
last_time = clockval.ev_lo;
rng_out = pot1dat ^ joy0dat ^ clockval.ev_lo;
potgo = old_pot;
return rng_out;
}
|
Le registre "potgo" active/désactive certaines parties de l'entrée analogique pour les ports manette
et de la souris, "joy0dat" est le compteur pour le mouvement de la souris.
Après cela, il ne restait plus qu'à créer "user_settings.h" à partir des modèles de WolfSSL et d'un
Makefile. J'ai réglé les paramètres de compilation sur un 68030, et il est possible qu'un FPU 68881/68882
soit nécessaire pour fonctionner, mais ces paramètres sont faciles à modifier.
Lorsqu'il est exécuté sur un vrai Amiga, la taille de la pile de l'exécutable doit être augmentée à au
moins 16 ko. Le test de performance wolfSSL se compile en un exécutable de 400 ko et nécessitera probablement
1 Mo de mémoire disponible pour fonctionner.
Le code source est disponible ici.
Tests
Tout d'abord, j'ai testé FS-UAE sur mon ordinateur portable, en utilisant une configuration très similaire à
celle de mon Amiga 4000. Je ne vous ennuierai pas avec les résultats des tests, mais voici les résultats
du test de performance.
Cela ne va pas battre des records, mais je suis assez impressionné jusqu'à présent, certaines des plates-formes
embarquées pour lesquelles je développe ne peuvent pas atteindre ces vitesses. Mais est-ce que cela est pareil
sur du matériel réel ?
Amiga réel
Mon Amiga 4000 dispose d'un processeur 68060 cadencé à 50 MHz et de 388 Mo de mémoire. Cette spécification
ùaurait été très chère au début des années 1990, quand cette machine était nouvelle. Il n'était pas bon marché
de la construire comme elle l'est aujourd'hui. Il a également fallu beaucoup de travail pour réparer tous
les dommages causés à la carte mère par les puces défectueuses et les fuites de la batterie.
La machine appartenait auparavant à Stoo Cambridge, l'artiste de Sensible Software à l'origine de jeux
tels que Cannon Fodder. Il l'utilisait là où il travaillait après Sensible Software.
Résultats
J'ai copié les exécutables sur l'Amiga et j'ai lancé le test de performance. Voici le résultat (avec celui
de WhichAmiga).
En général, les performances sont à peu près équivalentes à celles de l'émulateur. Les performances de RSA
et ECC n'étaient pas très bonnes, mais il s'agit d'une puce à 50 MHz, donc je ne devrais pas être surpris.
Étant donné les contraintes matérielles des années 1990, je suis très satisfait des résultats.
L'avenir
Il y a beaucoup d'options pour l'avenir. Je peux ou non travailler dessus. Il pourrait s'agir de... :
- Faire un portage pour remplacer AmiSSL, il devrait être plus léger et plus rapide. wolfSSL a une API
compatible avec OpenSSL, donc je pense que cela ne devrait pas être trop difficile.
- J'ai essayé sur mon Amiga 1200 avec un PiStorm32-Lite, c'est comme si j'avais un processeur 680×0 à 2 GHz.
- La carte graphique ZZ9000 est équipée d'un processeur ARM, un coeur est utilisé par la sortie vidéo, mais
il y a un coeur de rechange. Il y a une API pour télécharger du code depuis l'Amiga. Je pourrais décharger
wolfSSL sur ce coeur.
- Porter d'autres éléments de la suite de bibliothèques et d'outils wolfSSL.
En particulier, je veux essayer de faire un portage de wolfSSH. Il sera intéressant de voir si SSH peut
être utilisé pour communiquer avec mon ordinateur portable, et télécharger des fichiers. Ce ne sera
certainement pas aussi rapide que le FTP, mais ce sera un projet amusant.
Soutenez le travail de l'auteur
|
|
|