Création de la nouvelle fonctionnalité

Les fonctions suivantes font partie des fonctions CryptoAPI qui peuvent être étendues.

CryptoAPI, fonction Nom de la fonction OID define Chaîne de nom de la fonction OID
CryptEncodeObject chiffrer l' _ _ _ objet _ Func OID encode
"CryptDllEncodeObject"
CryptDecodeObject CRYPT _ OID _ décoder l' _ objet _ Func
"CryptDllDecodeObject"
CertOpenStore chiffrer le _ _ magasin Open OID Open _ Store _ _
"CertDllOpenStoreProv"
CertVerifyCTLUsage CRYPT _ OID _ - _ vérifier _ l’utilisation de la liste CTL _
"CertDllVerifyCTLUsage"
CertVerifyRevocation chiffrer la vérification de la _ _ _ révocation des OID _
"CertDllVerifyRevocation"

En mode d’utilisation normale avec un OID et un type d’encodage existants, le code de la fonction CryptoAPI, lui-même, est utilisé. Si l’une de ces fonctions est appelée avec un OID et que le type d’encodage n’a pas été conçu pour gérer le code de la fonction CryptoAPI, une nouvelle fonction, contenant les nouvelles fonctionnalités, doit être créée dans une DLL. Cette DLL doit être inscrite dans le registre ou installée en mémoire.

Lorsque l’une des fonctions répertoriées est appelée avec l’OID et le type d’encodage récemment désignés, le code de la nouvelle DLL est utilisé au lieu du code fourni dans le cadre de la fonction CryptoAPI.

Le nom de la fonction nouvellement développée peut être le nom répertorié sous « OID Function name string » dans le tableau précédent, ou un autre nom peut être donné lorsque le nouveau code de la fonction est inscrit.

La nouvelle fonction doit utiliser un prototype approprié. Dans tous les cas, à l’exception de CertOpenStore, ce prototype est le même que la fonction CryptoAPI qui appelle la nouvelle fonction. Dans le cas de CertOpenStore , le prototype est le suivant.

#include <windows.h>

BOOL WINAPI CertDllOpenStoreProv(
  IN LPCSTR lpszStoreProvider,
  IN DWORD dwEncodingType,
  IN HCRYPTPROV hCryptProv,
  IN DWORD dwFlags,
  IN const void *pvPara,
  IN HCERTSTORE hCertStore,
  IN OUT PCERT_STORE_PROV_INFO pStoreProvInfo
);

Notes

Si les prototypes ne correspondent pas, la pile système est endommagée.

En plus de fournir le code de la nouvelle fonction dans une DLL, l’extension de la fonctionnalité de CryptEncodeObject ou CryptDecodeObject nécessite la définition d’une définition de type pour que la nouvelle structure de données C soit placée dans un fichier d’en-tête inclus lorsque le programme de l’utilisateur est compilé.