IKeyHolderPlugin
L’interface IKeyHolderPlugin
est l’interface principale pour le plugin de stockage de clé de chiffrement.
-
keyCallback
int keyCallback(StatusType* status, ICryptKeyCallback* callback)
est utilisé pour passer l’interface
ICryptKeyCallback
à la connexion (si elle est fournie par l’utilisateur avec l’appelIProvider::setDbCryptCallback()
). Cet appel est toujours effectué au moment de la connexion à la base de données, et certains détenteurs de clés peuvent rejeter la connexion si aucune clé satisfaisante n’a pas été fournie. -
keyHandle
ICryptKeyCallback* keyHandle(StatusType* status, const char* keyName)
est destiné à être directement invoqué par l’interface
IDbCryptPlugin
pour obtenir l’interface de rappel de la clé nommée auprès du détenteur de la clé.Cela vous permet d’utiliser le code Firebird open-source afin de ne jamais toucher aux touches réelles, évitant ainsi la possibilité de vol de clé en modifiant le code Firebird. Après avoir reçu l’interfaceICryptKeyCallback
, le plugin de chiffrement démarre la communication à l’aide de celle-ci. Le détenteur de la clé peut (par exemple) vérifier la signature numérique du plugin de chiffrement avant de lui envoyer la clé afin d’éviter d’utiliser un plugin de chiffrement modifié qui pourrait voler la clé privée. -
useOnlyOwnKeys
FB_BOOLEAN useOnlyOwnKeys(StatusType* status)
informe Firebird si une clé fournie par un autre détenteur de clé sera utilisée ou non. Cela n’a de sens que pour SuperServer : seul SuperServer peut partager des clés de chiffrement de base de données entre les connexions. En renvoyant un
FB_TRUE
de cette méthode, il force Firebird à s’assurer que ce détenteur de clé particulier (et donc la connexion qui lui est associée) fournit la clé de chiffrement correcte avant de l’autoriser à fonctionner avec la base de données. -
chainHandle
ICryptKeyCallback* chainHandle(StatusType* status)
Prise en charge du porte-clés. Dans certains cas, la clé doit passer par plusieurs détenteurs de clés avant d’atteindre le plugin de chiffrement de la base de données. Ceci est nécessaire (par exemple) pour prendre en charge
EXECUTE STATEMENT
dans une base de données chiffrée. Ce n’est qu’un exemple – les chaînes sont également utilisées dans d’autres cas. L’interface de rappel renvoyée par cette méthode peut différer de celle renvoyée par la fonctionkeyHandle()
(voir ci-dessus). En règle générale, il devrait être capable de dupliquer les clés reçues deIKeyHolderPlugin
lors de l’appel de la fonctionkeyCallback()
.