Vue d’ensemble de l’OID
L’extensibilité est obtenue en prévoyant l’utilisation de nouveaux identificateurs d’objet (OID), de nouveaux types d’encodage et de nouvelles DLL.
Les OID CryptoAPI peuvent prendre l’une des formes suivantes :
- Chaîne numérique telle que « 1.2.3.500.88 »
- Chaîne alphanumérique telle que MyFunction
- Constante dont la valeur est inférieure ou égale à 0xFFFF. Ces constantes sont souvent associées à un nom via l’utilisation d’une instruction #define dans un fichier d’en-tête.
Les fonctions extensibles acceptent les arguments de type OID et d’encodage. Ces fonctions recherchent dans le registre système une DLL associée aux arguments de type OID et d’encodage passés à la fonction. Si une DLL pour l’OID, une combinaison de types d’encodage est trouvée, la DLL est chargée et sa fonction est appelée. L’illustration suivante montre ce flux pour la fonction CryptEncodeObject :
Cela permet d’étendre les fonctionnalités du CryptoAPI en fonction des besoins. L’utilisation de cette méthodologie charge le développeur de la nouvelle fonctionnalité d’écrire tout le code nécessaire à cette fonctionnalité. Pour encoder une nouvelle structure de données, par exemple, la fonction dans la DLL doit effectuer l’intégralité du processus d’encodage.