IWireCryptPlugin
L’interface IWireCryptPlugin
est l’interface principale du plugin de chiffrement réseau. Comme toute autre interface de ce type, elle doit être implémentée par l’auteur du plugin.
-
getKnownTypes
const char* getKnownTypes(StatusType* status)
Renvoie une liste de clés valides séparées par des espaces/tabulations/virgules.
-
setKey
void setKey(StatusType* status, ICryptKey* key)
Le plugin doit utiliser la clé qui lui est passée par cet appel.
-
encrypt
void encrypt(StatusType* status, unsigned length, const void* from, void* to)
Chiffre le paquet qui doit être envoyé sur le réseau.
-
decrypt
void decrypt(StatusType* status, unsigned length, const void* from, void* to)
Déchiffre le paquet reçu du réseau.
plugin d’authentification côté serveur
Le plugin d’authentification contient deux parties obligatoires, une partie client et une partie serveur, et peut également contenir une troisième partie qui lui est associée, le gestionnaire d’utilisateurs. Pendant le processus d’authentification, le client Firebird appelle le plugin client et envoie les données générées par celui-ci au serveur, puis le serveur appelle le plugin serveur et envoie les données qu’il a générées au client. Ce processus est répété jusqu’à ce que les deux plugins renvoient le code AUTH_MORE_DATA
.AUTH_SUCCESS
renvoyé côté serveur signifie une authentification réussie, AUTH_FAILED
de part et d’autre signifie une interruption immédiate du processus itératif et un rejet signalé au client, AUTH_CONTINUE
signifie que le plugin suivant de la liste des plugins d’authentification configurés doit être coché.
Il n`y a pas d`exemples dédiés de plugins d`authentification, mais dans le code source de firebird, dans le répertoire src/auth
, vous pouvez trouver le plugin AuthDbg
, avec lequel vous pouvez apprendre à partir d`un exemple trivial (sans calculs complexes comme dans Srp, par exemple, et sans appeler des fonctions WinAPI folles comme dans AuthSspi), comment le côté client et le côté serveur effectuent l`authentification (handshake).