You must register four password storage scheme specific items with Directory Server:
The storage scheme name that is used for the prefix
The encode function
The compare function
The decode function
Notice that you provide no decoding function. In this case, Directory Server does not decode user passwords after they are stored.
#include "slapi-plugin.h" static char * name ="XOR"; /* Storage scheme name */ static Slapi_PluginDesc desc = { "xor-password-storage-scheme", /* Plug-in identifier */ "Sun Microsystems, Inc.", /* Vendor name */ "6.0", /* Revision number */ "Exclusive-or example (XOR)" /* Plug-in description */ }; #ifdef _WIN32 __declspec(dllexport) #endif int xor_init(Slapi_PBlock * pb) { int rc = 0; /* 0 means success */ rc |= slapi_pblock_set( /* Plug-in API version */ pb, SLAPI_PLUGIN_VERSION, (void *) SLAPI_PLUGIN_CURRENT_VERSION ); rc |= slapi_pblock_set( /* Plug-in description */ pb, SLAPI_PLUGIN_DESCRIPTION, (void *) &desc ); rc |= slapi_pblock_set( /* Storage scheme name */ pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_NAME, (void *) name ); rc |= slapi_pblock_set( /* Encode password */ pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_ENC_FN, (void *) xorenc ); rc |= slapi_pblock_set( /* Compare password */ pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_CMP_FN, (void *) xorcmp ); rc |= slapi_pblock_set( /* Never decode pwd */ pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_DEC_FN, NULL ); return rc; }