Crate kadmin_sys

Crate kadmin_sys 

Source
Expand description

§Raw bindings to libkadm5

This crate providers raw bindings to libkadm5.

These bindings are generated by bindgen by including kadm5/admin.h. The types provided are filtered to only import required symbols for kadm5. In the future, this crate may also allow for more symbols that may be useful, such as error types.

This crate links against libkrb5 plus the required kadm5 library depending on the feature selected (see below).

By default, those include headers and libraries are found using pkg-config. You can override this behavior with the following environment variables (which must be paths to directories containing the required libraries and header files):

  • SYSTEM_DEPS_KRB5_SEARCH_NATIVE
  • SYSTEM_DEPS_KRB5_INCLUDE
  • SYSTEM_DEPS_KADM5CLNT_SEARCH_NATIVE
  • SYSTEM_DEPS_KADM5CLNT_INCLUDE
  • SYSTEM_DEPS_KADM5SRV_SEARCH_NATIVE
  • SYSTEM_DEPS_KADM5SRV_INCLUDE

You can read more about this in the system-deps documentation.

§Features

This crate offers two features, client and server. You must choose one of them depending on how your application is going to interact with the KDC. By default, client is enabled.

  • client: links against kadm5clnt. Use this is you plan to remotely access the KDC, using kadmind’s GSS-API RPC interface, like the CLI tool kadmin does.
  • server: links against kadm5srv. Use this is you plan to directly edit the KDB from the machine where the KDC is running, like the CLI tool kadmin.local does.

Structs§

__krb5_key_salt_tuple
_kadm5_config_params
Data structure returned by kadm5_get_config_params()
_kadm5_key_data
_kadm5_policy_ent_t
_kadm5_principal_ent_t
_krb5_ccache
_krb5_context
end “hostaddr.h”
_krb5_data
_krb5_key_data
If this ever changes up the version number and make the arrays be as big as necessary.
_krb5_keyblock
Exposed contents of a key.
_krb5_keysalt
_krb5_tl_data
Note — these structures cannot be modified without changing the database version number in libkdb.a, but should be expandable by adding new tl_data types.
krb5_principal_data
krb5_string_attr_st
String attributes (currently stored inside tl-data) map C string keys to values. They can be set via kadmin and consumed by KDC plugins.

Constants§

ENCTYPE_AES128_CTS_HMAC_SHA1_96
ENCTYPE_AES128_CTS_HMAC_SHA256_128
ENCTYPE_AES256_CTS_HMAC_SHA1_96
ENCTYPE_AES256_CTS_HMAC_SHA384_192
ENCTYPE_ARCFOUR_HMAC
ENCTYPE_ARCFOUR_HMAC_EXP
ENCTYPE_CAMELLIA128_CTS_CMAC
ENCTYPE_CAMELLIA256_CTS_CMAC
ENCTYPE_DES3_CBC_ENV
ENCTYPE_DES3_CBC_RAW
ENCTYPE_DES3_CBC_SHA
ENCTYPE_DES3_CBC_SHA1
ENCTYPE_DES_CBC_CRC
ENCTYPE_DES_CBC_MD4
ENCTYPE_DES_CBC_MD5
ENCTYPE_DES_CBC_RAW
ENCTYPE_DES_HMAC_SHA1
ENCTYPE_DSA_SHA1_CMS
ENCTYPE_MD5_RSA_CMS
ENCTYPE_NULL
ENCTYPE_RC2_CBC_ENV
ENCTYPE_RSA_ENV
ENCTYPE_RSA_ES_OAEP_ENV
ENCTYPE_SHA1_RSA_CMS
ENCTYPE_UNKNOWN
KADM5_ADMIN_SERVICE
KADM5_API_VERSION_2
KADM5_API_VERSION_3
KADM5_API_VERSION_4
KADM5_API_VERSION_MASK
KADM5_ATTRIBUTES
KADM5_AUTH_ADD
KADM5_AUTH_CHANGEPW
KADM5_AUTH_DELETE
KADM5_AUTH_EXTRACT
KADM5_AUTH_GET
KADM5_AUTH_INITIAL
KADM5_AUTH_INSUFFICIENT
KADM5_AUTH_LIST
KADM5_AUTH_MODIFY
KADM5_AUTH_SETKEY
KADM5_AUX_ATTRIBUTES
KADM5_BAD_API_VERSION
KADM5_BAD_AUX_ATTR
KADM5_BAD_CLASS
KADM5_BAD_CLIENT_PARAMS
KADM5_BAD_DB
KADM5_BAD_HISTORY
KADM5_BAD_HIST_KEY
KADM5_BAD_KEYSALTS
KADM5_BAD_LENGTH
KADM5_BAD_MASK
KADM5_BAD_MIN_PASS_LIFE
KADM5_BAD_PASSWORD
KADM5_BAD_POLICY
KADM5_BAD_PRINCIPAL
KADM5_BAD_SERVER_HANDLE
KADM5_BAD_SERVER_NAME
KADM5_BAD_SERVER_PARAMS
KADM5_BAD_STRUCT_VERSION
KADM5_BAD_TL_TYPE
KADM5_CANT_RESOLVE
KADM5_CHANGEPW_SERVICE
KADM5_CONFIG_ACL_FILE
KADM5_CONFIG_ADBNAME
KADM5_CONFIG_ADB_LOCKFILE
KADM5_CONFIG_ADMIN_SERVER
KADM5_CONFIG_AUTH_NOFALLBACK
KADM5_CONFIG_DBNAME
KADM5_CONFIG_DICT_FILE
KADM5_CONFIG_ENCTYPE
KADM5_CONFIG_ENCTYPES
KADM5_CONFIG_EXPIRATION
KADM5_CONFIG_FLAGS
KADM5_CONFIG_IPROP_ENABLED
KADM5_CONFIG_IPROP_LISTEN
KADM5_CONFIG_IPROP_LOGFILE
KADM5_CONFIG_IPROP_PORT
KADM5_CONFIG_IPROP_RESYNC_TIMEOUT
KADM5_CONFIG_KADMIND_LISTEN
KADM5_CONFIG_KADMIND_PORT
KADM5_CONFIG_KPASSWD_LISTEN
KADM5_CONFIG_KPASSWD_PORT
KADM5_CONFIG_KVNO
KADM5_CONFIG_MAX_LIFE
KADM5_CONFIG_MAX_RLIFE
KADM5_CONFIG_MKEY_FROM_KBD
KADM5_CONFIG_MKEY_NAME
KADM5_CONFIG_NO_AUTH
KADM5_CONFIG_OLD_AUTH_GSSAPI
KADM5_CONFIG_POLL_TIME
KADM5_CONFIG_REALM
KADM5_CONFIG_STASH_FILE
KADM5_CONFIG_ULOG_SIZE
KADM5_DUP
KADM5_FAILURE
KADM5_FAIL_AUTH_COUNT
KADM5_GSS_ERROR
KADM5_HIST_PRINCIPAL
KADM5_INIT
KADM5_KEY_DATA
KADM5_KEY_HIST
KADM5_KIPROP_HOST_SERVICE
KADM5_KVNO
KADM5_LAST_FAILED
KADM5_LAST_PWD_CHANGE
KADM5_LAST_SUCCESS
KADM5_LOAD
KADM5_MASK_BITS
KADM5_MAX_LIFE
KADM5_MAX_RLIFE
KADM5_MISSING_CONF_PARAMS
KADM5_MISSING_KRB5_CONF_PARAMS
KADM5_MKVNO
KADM5_MOD_NAME
KADM5_MOD_TIME
KADM5_NEW_LIB_API_VERSION
KADM5_NEW_SERVER_API_VERSION
KADM5_NEW_STRUCT_VERSION
KADM5_NOT_INIT
KADM5_NO_RENAME_SALT
KADM5_NO_SRV
KADM5_OK
KADM5_OLD_LIB_API_VERSION
KADM5_OLD_SERVER_API_VERSION
KADM5_OLD_STRUCT_VERSION
KADM5_PASS_Q_CLASS
KADM5_PASS_Q_DICT
KADM5_PASS_Q_GENERIC
KADM5_PASS_Q_TOOSHORT
KADM5_PASS_REUSE
KADM5_PASS_TOOSOON
KADM5_POLICY
KADM5_POLICY_ALLOWED_KEYSALTS
KADM5_POLICY_ATTRIBUTES
KADM5_POLICY_CLR
KADM5_POLICY_MAX_LIFE
KADM5_POLICY_MAX_RLIFE
KADM5_POLICY_REF
KADM5_POLICY_TL_DATA
KADM5_PRINCIPAL
KADM5_PRINCIPAL_NORMAL_MASK
KADM5_PRINC_EXPIRE_TIME
KADM5_PRIV_ADD
KADM5_PRIV_DELETE
KADM5_PRIV_GET
KADM5_PRIV_MODIFY
KADM5_PROTECT_KEYS
KADM5_PROTECT_PRINCIPAL
KADM5_PW_EXPIRATION
KADM5_PW_FAILURE_COUNT_INTERVAL
KADM5_PW_HISTORY_NUM
KADM5_PW_LOCKOUT_DURATION
KADM5_PW_MAX_FAILURE
KADM5_PW_MAX_LIFE
KADM5_PW_MIN_CLASSES
KADM5_PW_MIN_LENGTH
KADM5_PW_MIN_LIFE
KADM5_REF_COUNT
KADM5_RPC_ERROR
KADM5_SECURE_PRINC_MISSING
KADM5_SETKEY3_ETYPE_MISMATCH
KADM5_SETKEY_BAD_KVNO
KADM5_SETKEY_DUP_ENCTYPES
KADM5_SETV4KEY_INVAL_ENCTYPE
KADM5_STRUCT_VERSION
KADM5_STRUCT_VERSION_1
KADM5_STRUCT_VERSION_MASK
KADM5_TL_DATA
KADM5_UNK_POLICY
KADM5_UNK_PRINC
KADM5_XDR_FAILURE
KRB5_KDB_DISALLOW_ALL_TIX
KRB5_KDB_DISALLOW_DUP_SKEY
KRB5_KDB_DISALLOW_FORWARDABLE
KRB5_KDB_DISALLOW_POSTDATED
KRB5_KDB_DISALLOW_PROXIABLE
KRB5_KDB_DISALLOW_RENEWABLE
KRB5_KDB_DISALLOW_SVR
KRB5_KDB_DISALLOW_TGT_BASED
KRB5_KDB_LOCKDOWN_KEYS
KRB5_KDB_NEW_PRINC
KRB5_KDB_NO_AUTH_DATA_REQUIRED
KRB5_KDB_OK_AS_DELEGATE
KRB5_KDB_OK_TO_AUTH_AS_DELEGATE
KRB5_KDB_PWCHANGE_SERVICE
KRB5_KDB_REQUIRES_HW_AUTH
KRB5_KDB_REQUIRES_PRE_AUTH
KRB5_KDB_REQUIRES_PWCHANGE
KRB5_KDB_SALTTYPE_CERTHASH
KRB5_KDB_SALTTYPE_NOREALM
KRB5_KDB_SALTTYPE_NORMAL
KRB5_KDB_SALTTYPE_ONLYREALM
KRB5_KDB_SALTTYPE_SPECIAL
KRB5_KDB_SUPPORT_DESMD5
KRB5_NT_SRV_HST
KRB5_OK
KRB5_TL_LAST_ADMIN_UNLOCK

Functions§

kadm5_chpass_principal
kadm5_chpass_principal_3
kadm5_chpass_principal_util
kadm5_create_policy
kadm5_create_principal
kadm5_create_principal_3
kadm5_decrypt_key
kadm5_delete_policy
kadm5_delete_principal
kadm5_destroy
kadm5_flush
kadm5_free_config_params
kadm5_free_kadm5_key_data
kadm5_free_key_data
kadm5_free_name_list
kadm5_free_policy_ent
kadm5_free_principal_ent
kadm5_free_strings
kadm5_get_admin_service_name
kadm5_get_config_params
functions
kadm5_get_policies
kadm5_get_policy
kadm5_get_principal
kadm5_get_principal_keys
kadm5_get_principals
kadm5_get_privs
kadm5_get_strings
kadm5_init
For all initialization functions, the caller must first initialize a context with kadm5_init_krb5_context which will survive as long as the resulting handle. The caller should free the context with krb5_free_context.
kadm5_init_anonymous
kadm5_init_iprop
kadm5_init_krb5_context
kadm5_init_with_creds
kadm5_init_with_password
kadm5_init_with_skey
kadm5_lock
kadm5_modify_policy
kadm5_modify_principal
kadm5_purgekeys
kadm5_randkey_principal
kadm5_randkey_principal_3
kadm5_rename_principal
kadm5_set_string
kadm5_setkey_principal
kadm5_setkey_principal_3
kadm5_setkey_principal_4
kadm5_unlock
krb5_cc_close
Close a credential cache handle.
krb5_cc_default
Resolve the default credential cache name.
krb5_cc_get_principal
Get the default principal of a credential cache.
krb5_cc_resolve
Resolve a credential cache name.
krb5_enctype_to_string
Convert an encryption type to a string.
krb5_free_context
Free a krb5 library context.
krb5_free_default_realm
Free a default realm string returned by krb5_get_default_realm().
krb5_free_error_message
Free an error message generated by krb5_get_error_message().
krb5_free_principal
krb5_free.c / /* Free the storage assigned to a principal.
krb5_free_unparsed_name
Free a string representation of a principal.
krb5_get_default_realm
Retrieve the default realm.
krb5_get_error_message
Get the (possibly extended) error message for a code.
krb5_init_context
Create a krb5 library context.
krb5_parse_name
Convert a string principal name to a krb5_principal structure.
krb5_salttype_to_string
Convert a salt type to a string.
krb5_sname_to_principal
Generate a full principal name from a service name.
krb5_string_to_enctype
str_conv.c / /* Convert a string to an encryption type.
krb5_string_to_salttype
Convert a string to a salt type.
krb5_unparse_name
Convert a krb5_principal structure to a string representation.

Type Aliases§

bool_t
kadm5_config_params
Data structure returned by kadm5_get_config_params()
kadm5_key_data
kadm5_policy_ent_rec
kadm5_policy_ent_t
kadm5_policy_t
kadm5_princ_t
kadm5_principal_ent_rec
kadm5_principal_ent_t
kadm5_ret_t
krb5_boolean
krb5_ccache
krb5_const_principal
Constant version of krb5_principal_data.
krb5_context
krb5_data
krb5_deltat
krb5_enctype
krb5_error_code
Used to convey an operation status. The value 0 indicates success; any other values are com_err codes. Use krb5_get_error_message() to obtain a string describing the error.
krb5_flags
krb5_int16
krb5_int32
krb5_key_data
If this ever changes up the version number and make the arrays be as big as necessary.
krb5_key_salt_tuple
krb5_keyblock
Exposed contents of a key.
krb5_keysalt
krb5_kvno
krb5_magic
krb5_octet
Word-size related definition.
krb5_principal
krb5_string_attr
String attributes (currently stored inside tl-data) map C string keys to values. They can be set via kadmin and consumed by KDC plugins.
krb5_timestamp
Represents a timestamp in seconds since the POSIX epoch. This legacy type is used frequently in the ABI, but cannot represent timestamps after 2038 as a positive number. Code which uses this type should cast values of it to uint32_t so that negative values are treated as timestamps between 2038 and 2106 on platforms with 64-bit time_t.
krb5_tl_data
Note — these structures cannot be modified without changing the database version number in libkdb.a, but should be expandable by adding new tl_data types.
krb5_ui_2
krb5_ui_4