Libgcrypt supports the use of `extension modules', which implement algorithms in addition to those already built into the library directly.
Functions registering modules provided by the user take a `module
specification structure' as input and return a value of
gcry_module_t and an ID that is unique in the modules'
category. This ID can be used to reference the newly registered
module. After registering a module successfully, the new functionality
should be able to be used through the normal functions provided by
Libgcrypt until it is unregistered again.