pwd_init.c 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. * END COPYRIGHT BLOCK **/
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <sys/types.h>
  9. #include "pwdstorage.h"
  10. #include "dirver.h"
  11. static Slapi_PluginDesc sha_pdesc = { "sha-password-storage-scheme", PLUGIN_MAGIC_VENDOR_STR, PRODUCTTEXT, "Secure Hashing Algorithm (SHA)" };
  12. static Slapi_PluginDesc ssha_pdesc = { "ssha-password-storage-scheme", PLUGIN_MAGIC_VENDOR_STR, PRODUCTTEXT, "Salted Secure Hashing Algorithm (SSHA)" };
  13. static Slapi_PluginDesc crypt_pdesc = { "crypt-password-storage-scheme", PLUGIN_MAGIC_VENDOR_STR, PRODUCTTEXT, "Unix crypt algorithm (CRYPT)" };
  14. static Slapi_PluginDesc clear_pdesc = { "clear-password-storage-scheme", PLUGIN_MAGIC_VENDOR_STR, PRODUCTTEXT, "No encryption (CLEAR)" };
  15. static Slapi_PluginDesc ns_mta_md5_pdesc = { "NS-MTA-MD5-password-storage-scheme", PLUGIN_MAGIC_VENDOR_STR, PRODUCTTEXT, "Netscape MD5 (NS-MTA-MD5)" };
  16. static char *plugin_name = "NSPwdStoragePlugin";
  17. int
  18. sha_pwd_storage_scheme_init( Slapi_PBlock *pb )
  19. {
  20. int rc;
  21. char *name;
  22. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "=> sha_pwd_storage_scheme_init\n" );
  23. rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
  24. (void *) SLAPI_PLUGIN_VERSION_01 );
  25. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION,
  26. (void *)&sha_pdesc );
  27. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_ENC_FN,
  28. (void *) sha1_pw_enc);
  29. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_CMP_FN,
  30. (void *) sha1_pw_cmp );
  31. name = slapi_ch_strdup("SHA");
  32. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_NAME,
  33. name );
  34. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "<= sha_pwd_storage_scheme_init %d\n\n", rc );
  35. return( rc );
  36. }
  37. int
  38. ssha_pwd_storage_scheme_init( Slapi_PBlock *pb )
  39. {
  40. int rc;
  41. char *name;
  42. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "=> ssha_pwd_storage_scheme_init\n" );
  43. rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
  44. (void *) SLAPI_PLUGIN_VERSION_01 );
  45. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION,
  46. (void *)&ssha_pdesc );
  47. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_ENC_FN,
  48. (void *) salted_sha1_pw_enc );
  49. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_CMP_FN,
  50. (void *) sha1_pw_cmp );
  51. name = slapi_ch_strdup("SSHA");
  52. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_NAME,
  53. name );
  54. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "<= ssha_pwd_storage_scheme_init %d\n\n", rc );
  55. return( rc );
  56. }
  57. int
  58. crypt_pwd_storage_scheme_init( Slapi_PBlock *pb )
  59. {
  60. int rc;
  61. char *name;
  62. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "=> crypt_pwd_storage_scheme_init\n" );
  63. crypt_init();
  64. rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
  65. (void *) SLAPI_PLUGIN_VERSION_01 );
  66. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION,
  67. (void *)&crypt_pdesc );
  68. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_ENC_FN,
  69. (void *) crypt_pw_enc );
  70. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_CMP_FN,
  71. (void *) crypt_pw_cmp );
  72. name = slapi_ch_strdup("CRYPT");
  73. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_NAME,
  74. name );
  75. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "<= crypt_pwd_storage_scheme_init %d\n\n", rc );
  76. return( rc );
  77. }
  78. int
  79. clear_pwd_storage_scheme_init( Slapi_PBlock *pb )
  80. {
  81. int rc;
  82. char *name;
  83. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "=> clear_pwd_storage_scheme_init\n" );
  84. rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
  85. (void *) SLAPI_PLUGIN_VERSION_01 );
  86. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION,
  87. (void *)&clear_pdesc );
  88. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_ENC_FN,
  89. (void *) clear_pw_enc );
  90. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_CMP_FN,
  91. (void *) clear_pw_cmp );
  92. name = slapi_ch_strdup("CLEAR");
  93. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_NAME,
  94. name );
  95. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "<= clear_pwd_storage_scheme_init %d\n\n", rc );
  96. return( rc );
  97. }
  98. int
  99. ns_mta_md5_pwd_storage_scheme_init( Slapi_PBlock *pb )
  100. {
  101. int rc;
  102. char *name;
  103. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "=> ns_mta_md5_pwd_storage_scheme_init\n" );
  104. rc = slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION,
  105. (void *) SLAPI_PLUGIN_VERSION_01 );
  106. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION,
  107. (void *)&ns_mta_md5_pdesc );
  108. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_ENC_FN,
  109. (void *) NULL );
  110. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_CMP_FN,
  111. (void *) ns_mta_md5_pw_cmp );
  112. name = slapi_ch_strdup("NS-MTA-MD5");
  113. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_PWD_STORAGE_SCHEME_NAME,
  114. name );
  115. slapi_log_error( SLAPI_LOG_PLUGIN, plugin_name, "<= ns_mta_md5_pwd_storage_scheme_init %d\n\n", rc );
  116. return( rc );
  117. }