Scroll to navigation

fr::crypto::OPENSSL_ia32cap(3SSL) OpenSSL fr::crypto::OPENSSL_ia32cap(3SSL)

NOM

OPENSSL_ia32cap, OPENSSL_ia32cap_loc - vecteur de capacités des processeurs IA-32

SYNOPSIS


unsigned int *OPENSSL_ia32cap_loc(void);
#define OPENSSL_ia32cap ((OPENSSL_ia32cap_loc())[0])

DESCRIPTION

La valeur renvoyée par OPENSSL_ia32cap_loc() est l’adresse d’une variable qui contient les capacités d'un processeur IA-32 sous la forme d’un vecteur de bits comme elle apparait dans le couple de registres EDX:ECX après avoir exécuté l'instruction CPUID avec la valeur d'entrée EAX=1 (consultez la note applicative d'Intel nº 241618). Naturellement, cela n'a de sens que pour les plates-formes x86 et x86_64. La variable est normalement définie automatiquement lors de l'initialisation de la boîte à outils, mais peut être manipulée plus tard pour changer le comportement de la bibliothèque cryptographique. À ce jour, les bits suivants sont significatifs :

Par exemple, la suppression du bit nº 26 à l’exécution désactive l'utilisation du code optimisé pour SSE2 dans la bibliothèque cryptographique, alors que la suppression du bit nº 24 désactive le code SSE2 agissant sur la banque de registres XMM 128 bits. Cette dernière manipulation peut être utile si la cible est un CPU SSE2, mais que le système d'exploitation n’active pas les registres XMM. Même si la valeur peut être modifiée par programmation, définir une variable d'environnement du même nom avant d’exécuter l’application sera probablement plus approprié (par exemple, avec un processeur Intel P4, « env OPENSSL_ia32cap=0x16980010 apps/openssl », ou encore mieux, « env OPENSSL_ia32cap=~0x1000000 apps/openssl » pour obtenir le même résultat sans avoir à modifier le code source de l'application). Vous pouvez sinon reconfigurer la boîte à outils avec l’option no-sse2 et recompiler.

La suppression du bit nº 28 est moins intuitive. En réalité, ce n’est pas copié directement de la sortie de CPUID, mais ajusté pour indiquer si le cache de données est vraiment partagé ou non entre les cœurs logiques. Cela affecte alors la décision d’appliquer ou non des contre-mesures coûteuses contre les attaques temporelles de cache, en particulier sur le module assembleur AES.

Le vecteur est ensuite étendu avec le valeur EBX renvoyée par CPUID avec EAX=7 et ECX=0 en entrée. Les bits suivants sont significatifs :

TRADUCTION

La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.

2015-12-31 1.0.2a 1.0.2c