/lib/libkrb5/lib/kadm5/adb.h

https://github.com/rhuitl/uClinux · C Header · 134 lines · 97 code · 18 blank · 19 comment · 0 complexity · e3bc59983411bab80ff8ee59b5957558 MD5 · raw file

  1. /*
  2. * Data Types for policy and principal information that
  3. * exists in the respective databases.
  4. *
  5. * $Header$
  6. *
  7. * This file was originally created with rpcgen.
  8. * It has been hacked up since then.
  9. */
  10. #ifndef __ADB_H__
  11. #define __ADB_H__
  12. #include <sys/types.h>
  13. #include <gssrpc/types.h>
  14. #include "k5-int.h"
  15. #include <kdb.h>
  16. #include <db.h>
  17. #include <kadm5/admin.h>
  18. #include <kadm5/adb_err.h>
  19. #include <com_err.h>
  20. typedef long osa_adb_ret_t;
  21. #define OSA_ADB_POLICY_DB_MAGIC 0x12345A00
  22. #define OSA_ADB_PRINC_DB_MAGIC 0x12345B00
  23. #define OSA_ADB_SHARED 0x7001
  24. #define OSA_ADB_EXCLUSIVE 0x7002
  25. #define OSA_ADB_PERMANENT 0x7003
  26. #define OSA_ADB_PRINC_VERSION_MASK 0x12345C00
  27. #define OSA_ADB_PRINC_VERSION_1 0x12345C01
  28. #define OSA_ADB_POLICY_VERSION_MASK 0x12345D00
  29. #define OSA_ADB_POLICY_VERSION_1 0x12345D01
  30. typedef struct _osa_adb_db_lock_ent_t {
  31. FILE *lockfile;
  32. char *filename;
  33. int refcnt, lockmode, lockcnt;
  34. krb5_context context;
  35. } osa_adb_lock_ent, *osa_adb_lock_t;
  36. typedef struct _osa_adb_db_ent_t {
  37. int magic;
  38. DB *db;
  39. HASHINFO info;
  40. BTREEINFO btinfo;
  41. char *filename;
  42. osa_adb_lock_t lock;
  43. int opencnt;
  44. } osa_adb_db_ent, *osa_adb_db_t, *osa_adb_princ_t, *osa_adb_policy_t;
  45. /* an osa_pw_hist_ent stores all the key_datas for a single password */
  46. typedef struct _osa_pw_hist_t {
  47. int n_key_data;
  48. krb5_key_data *key_data;
  49. } osa_pw_hist_ent, *osa_pw_hist_t;
  50. typedef struct _osa_princ_ent_t {
  51. int version;
  52. char *policy;
  53. long aux_attributes;
  54. unsigned int old_key_len;
  55. unsigned int old_key_next;
  56. krb5_kvno admin_history_kvno;
  57. osa_pw_hist_ent *old_keys;
  58. } osa_princ_ent_rec, *osa_princ_ent_t;
  59. typedef struct _osa_policy_ent_t {
  60. int version;
  61. char *name;
  62. uint32_t pw_min_life;
  63. uint32_t pw_max_life;
  64. uint32_t pw_min_length;
  65. uint32_t pw_min_classes;
  66. uint32_t pw_history_num;
  67. uint32_t policy_refcnt;
  68. } osa_policy_ent_rec, *osa_policy_ent_t;
  69. typedef void (*osa_adb_iter_policy_func) (void *, osa_policy_ent_t);
  70. /*
  71. * Return Code (the rest are in adb_err.h)
  72. */
  73. #define OSA_ADB_OK 0
  74. /*
  75. * xdr functions
  76. */
  77. bool_t xdr_osa_princ_ent_rec(XDR *xdrs, osa_princ_ent_t objp);
  78. bool_t xdr_osa_policy_ent_rec(XDR *xdrs, osa_policy_ent_t objp);
  79. bool_t xdr_osa_pw_hist_ent(XDR *xdrs, osa_pw_hist_ent *objp);
  80. bool_t xdr_krb5_key_data(XDR *xdrs, krb5_key_data *objp);
  81. /*
  82. * Functions
  83. */
  84. osa_adb_ret_t osa_adb_create_db(char *filename, char *lockfile, int magic);
  85. osa_adb_ret_t osa_adb_destroy_db(char *filename, char *lockfile, int magic);
  86. osa_adb_ret_t osa_adb_rename_db(char *filefrom, char *lockfrom,
  87. char *fileto, char *lockto, int magic);
  88. osa_adb_ret_t osa_adb_rename_policy_db(kadm5_config_params *fromparams,
  89. kadm5_config_params *toparams);
  90. osa_adb_ret_t osa_adb_init_db(osa_adb_db_t *dbp, char *filename,
  91. char *lockfile, int magic);
  92. osa_adb_ret_t osa_adb_fini_db(osa_adb_db_t db, int magic);
  93. osa_adb_ret_t osa_adb_get_lock(osa_adb_db_t db, int mode);
  94. osa_adb_ret_t osa_adb_release_lock(osa_adb_db_t db);
  95. osa_adb_ret_t osa_adb_open_and_lock(osa_adb_princ_t db, int locktype);
  96. osa_adb_ret_t osa_adb_close_and_unlock(osa_adb_princ_t db);
  97. osa_adb_ret_t osa_adb_create_policy_db(kadm5_config_params *params);
  98. osa_adb_ret_t osa_adb_destroy_policy_db(kadm5_config_params *params);
  99. osa_adb_ret_t osa_adb_open_policy(osa_adb_policy_t *db,
  100. kadm5_config_params *rparams);
  101. osa_adb_ret_t osa_adb_close_policy(osa_adb_policy_t db);
  102. osa_adb_ret_t osa_adb_create_policy(osa_adb_policy_t db,
  103. osa_policy_ent_t entry);
  104. osa_adb_ret_t osa_adb_destroy_policy(osa_adb_policy_t db,
  105. kadm5_policy_t name);
  106. osa_adb_ret_t osa_adb_get_policy(osa_adb_policy_t db,
  107. kadm5_policy_t name,
  108. osa_policy_ent_t *entry);
  109. osa_adb_ret_t osa_adb_put_policy(osa_adb_policy_t db,
  110. osa_policy_ent_t entry);
  111. osa_adb_ret_t osa_adb_iter_policy(osa_adb_policy_t db,
  112. osa_adb_iter_policy_func func,
  113. void * data);
  114. void osa_free_policy_ent(osa_policy_ent_t val);
  115. void osa_free_princ_ent(osa_princ_ent_t val);
  116. #endif /* __ADB_H__ */