krb5_deprecated(3)

✨ NAME ✨

krb5_deprecated β€” Heimdal Kerberos 5 deprecated functions

okay so bestie, you've wandered into krb5_deprecated(3) from the Heimdal Kerberos 5 library, and this whole page is basically a ✨nostalgia museum✨. it's the land of the deprecated β€” the functions that Heimdal still keeps around so your old code doesn't just combust πŸ’€. almost every single one of them is stamped with KRB5_DEPRECATED_FUNCTION('Use X instead'), which is the compiler's way of saying "girl, please move on". (the two ...set_error_string ones are the exception, no tag on those, we love a plot twist 🫢)

no cap, everything here still has its full signature listed so you can see exactly what the old shape was. periodt.


πŸŽ€ SYNOPSIS πŸŽ€

🌸 Functions 🌸

okay so here's the full roster, every single one, in order, with the signatures copied exactly as they live in the header. don't skip, there's a quiz later (there is no quiz. but still). πŸ’–

  • krb5_change_password β€” the password-changer, and yes it's wearing the deprecated tag πŸŽ€
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_change_password
    (krb5_context context, krb5_creds *creds, const char *newpw, int
    *result_code, krb5_data *result_code_string, krb5_data
    *result_string) KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_config_parse_string_multi β€” parses a config string into a krb5_config_section **, deprecated vibes only ✨
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_config_parse_string_multi (krb5_context context, const char
    *string, krb5_config_section **res) KRB5_DEPRECATED_FUNCTION('Use X
    instead')
  • krb5_keytype_to_enctypes β€” keytype in, enctypes out, deprecated tag attached 🌸
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes
    (krb5_context context, krb5_keytype keytype, unsigned *len,
    krb5_enctype **val) KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_enctypes_compatible_keys β€” returns a krb5_boolean, so it's giving yes/no energy, and it's deprecated πŸ¦‹
KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
    krb5_enctypes_compatible_keys (krb5_context context, krb5_enctype
    etype1, krb5_enctype etype2) KRB5_DEPRECATED_FUNCTION('Use X
    instead')
  • krb5_free_data_contents β€” void return, so it just frees and leaves, no questions asked πŸ’… deprecated tho
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_data_contents
    (krb5_context context, krb5_data *data)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_keytype_to_enctypes_default β€” the default flavour of the keytype-to-enctypes situation, also deprecated ⭐
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_keytype_to_enctypes_default (krb5_context context, krb5_keytype
    keytype, unsigned *len, krb5_enctype **val)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_keytype_to_string β€” keytype β†’ char **string, deprecated bestie πŸ’œ
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_string
    (krb5_context context, krb5_keytype keytype, char **string)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_string_to_keytype β€” the reverse trip: const char *string β†’ krb5_keytype *keytype, deprecated πŸ™ˆ
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_string_to_keytype
    (krb5_context context, const char *string, krb5_keytype *keytype)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_password_key_proc β€” note the KRB5_CALLCONV on this one, it's fancy, and it's deprecated πŸ”₯
KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_password_key_proc
    (krb5_context context, krb5_enctype type, krb5_salt salt,
    krb5_const_pointer keyseed, krb5_keyblock **key)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_get_in_tkt_with_password β€” the whole nine yards of args, deprecated, slay πŸ’–
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_get_in_tkt_with_password (krb5_context context, krb5_flags
    options, krb5_addresses *addrs, const krb5_enctype *etypes, const
    krb5_preauthtype *pre_auth_types, const char *password, krb5_ccache
    ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_get_in_tkt_with_skey β€” same shape as above but with a const krb5_keyblock *key instead of a password, deprecated πŸŽ€
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_get_in_tkt_with_skey (krb5_context context, krb5_flags options,
    krb5_addresses *addrs, const krb5_enctype *etypes, const
    krb5_preauthtype *pre_auth_types, const krb5_keyblock *key,
    krb5_ccache ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_keytab_key_proc β€” another KRB5_CALLCONV icon, deprecated πŸ‘‘
KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_keytab_key_proc
    (krb5_context context, krb5_enctype enctype, krb5_salt salt,
    krb5_const_pointer keyseed, krb5_keyblock **key)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_get_in_tkt_with_keytab β€” and here's the keytab version of the in_tkt family, deprecated 🌈
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_get_in_tkt_with_keytab (krb5_context context, krb5_flags
    options, krb5_addresses *addrs, const krb5_enctype *etypes, const
    krb5_preauthtype *pre_auth_types, krb5_keytab keytab, krb5_ccache
    ccache, krb5_creds *creds, krb5_kdc_rep *ret_as_reply)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_princ_realm β€” returns a krb5_realm *, deprecated πŸ“
KRB5_LIB_FUNCTION krb5_realm *KRB5_LIB_CALL krb5_princ_realm
    (krb5_context context, krb5_principal principal)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_princ_set_realm β€” void return, takes a krb5_realm *realm, deprecated πŸ’…
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_princ_set_realm (krb5_context
    context, krb5_principal principal, krb5_realm *realm)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_free_creds_contents β€” frees the contents, mind you, deprecated ✨
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_creds_contents
    (krb5_context context, krb5_creds *c) KRB5_DEPRECATED_FUNCTION('Use
    X instead')
  • krb5_free_error_string β€” void, takes a char *str, deprecated πŸ¦‹
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_error_string
    (krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION('Use X
    instead')
  • krb5_set_error_string β€” variadic, fmt,..., and the attribute line is literally cut off mid-paren like that in the source. no, we're not fixing it. we're respecting it. 🫠
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_error_string
    (krb5_context context, const char *fmt,...)
    __attribute__((__format__(__printf__
  • krb5_vset_error_string β€” the va_list args sibling of the one above, same unfinished attribute energy πŸ’€
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_vset_error_string
    (krb5_context context, const char *fmt, va_list args)
    __attribute__((__format__(__printf__
  • krb5_clear_error_string β€” void, deprecated, clears the vibe 😭
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_clear_error_string
    (krb5_context context) KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_get_cred_from_kdc_opt β€” the one with the extra krb5_flags flags at the end, deprecated πŸ’œ
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_get_cred_from_kdc_opt (krb5_context context, krb5_ccache
    ccache, krb5_creds *in_creds, krb5_creds **out_creds, krb5_creds
    ***ret_tgts, krb5_flags flags) KRB5_DEPRECATED_FUNCTION('Use X
    instead')
  • krb5_get_cred_from_kdc β€” same family, no flags, still deprecated 🌸
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc
    (krb5_context context, krb5_ccache ccache, krb5_creds *in_creds,
    krb5_creds **out_creds, krb5_creds ***ret_tgts)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_free_unparsed_name β€” frees an unparsed name, deprecated, we love a specific queen πŸ‘‘
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_unparsed_name
    (krb5_context context, char *str) KRB5_DEPRECATED_FUNCTION('Use X
    instead')
  • krb5_generate_subkey β€” takes a const krb5_keyblock *key, hands back a krb5_keyblock **subkey, deprecated πŸ”‘
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_generate_subkey
    (krb5_context context, const krb5_keyblock *key, krb5_keyblock
    **subkey) KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_auth_getremoteseqnumber β€” remote seq number, int32_t *seqnumber, deprecated ⭐
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_auth_getremoteseqnumber (krb5_context context,
    krb5_auth_context auth_context, int32_t *seqnumber)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_get_init_creds_opt_init β€” void, takes just krb5_get_init_creds_opt *opt, deprecated πŸŽ€
KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_get_init_creds_opt_init
    (krb5_get_init_creds_opt *opt) KRB5_DEPRECATED_FUNCTION('Use X
    instead')
  • krb5_get_init_creds_opt_get_error β€” pulls out a KRB_ERROR **error, deprecated πŸ“
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
    krb5_get_init_creds_opt_get_error (krb5_context context,
    krb5_get_init_creds_opt *opt, KRB_ERROR **error)
    KRB5_DEPRECATED_FUNCTION('Use X instead')
  • krb5_c_enctype_compare β€” compares e1 and e2 into a krb5_boolean *similar, deprecated πŸ’–
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_c_enctype_compare
    (krb5_context context, krb5_enctype e1, krb5_enctype e2,
    krb5_boolean *similar) KRB5_DEPRECATED_FUNCTION('Use X instead')

πŸ’œ Detailed Description πŸ’œ

so like… that's it. that's the whole section in the original. no body text, no paragraphs, no nothing β€” it just says Detailed Description and dips, main character exit πŸšͺπŸ’¨

we're not done though bestie, there's more page coming in the next part, so stay perched 🧚

πŸ’… Function Documentation πŸ’…

okay bestie, this is the part where we go through every single deprecated function in this library one by one. signature, deprecation tea, params, returns β€” nothing gets skipped, no cap. grab a snack πŸ“ because there's like a whole roster here.


πŸ¦‹ krb5_auth_getremoteseqnumber

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_auth_getremoteseqnumber(krb5_context context, krb5_auth_context auth_context, int32_t *seqnumber)
🚫 Deprecated: use krb5_auth_con_getremoteseqnumber()

✨ krb5_c_enctype_compare

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_c_enctype_compare(krb5_context context, krb5_enctype e1, krb5_enctype e2, krb5_boolean *similar)
🚫 Deprecated: keytypes doesn't exists, they are really enctypes.

like… the docs said it themselves and they did not soften it one bit 😭


πŸŽ€ krb5_change_password

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_change_password(krb5_context context, krb5_creds * creds, const char * newpw, int * result_code, krb5_data * result_code_string, krb5_data * result_string)
🚫 Deprecated: krb5_change_password() is deprecated, use krb5_set_password().

Parameters

  • context β€” a Kerberos context
  • creds β€” (no description, the docs left us on read πŸ™ˆ)
  • newpw β€” (no description)
  • result_code β€” (no description)
  • result_code_string β€” (no description)
  • result_string β€” (no description)

Returns

On success the password is changed.

and then there's just a lone @ sitting at the bottom of this entry, no explanation, no context. iconic honestly πŸ’€


🌸 krb5_clear_error_string

KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_clear_error_string(krb5_context context)

Clears the error message that krb5_get_error_string() handed you back. bye bye error text πŸ‘‹

🚫 Deprecated: use krb5_clear_error_message()

Parameters

  • context β€” Kerberos context

🫢 krb5_config_parse_string_multi

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_config_parse_string_multi(krb5_context context, const char * string, krb5_config_section ** res)
🚫 Deprecated: configuration files are not strings

short, blunt, devastating. periodt.


🧚 krb5_enctypes_compatible_keys

KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL krb5_enctypes_compatible_keys(krb5_context context, krb5_enctype etype1, krb5_enctype etype2)
🚫 Deprecated: keytypes doesn't exists, they are really enctypes.

πŸ’œ krb5_free_creds_contents

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_free_creds_contents(krb5_context context, krb5_creds * c)
🚫 Deprecated: use krb5_free_cred_contents()

(one little s away from the cool version, we've all been there πŸ’€)


🌈 krb5_free_data_contents

KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_data_contents(krb5_context context, krb5_data * data)

Same as krb5_data_free(). MIT compat.

🚫 Deprecated: use krb5_data_free().

Parameters

  • context β€” Kerberos 5 context.
  • data β€” krb5_data to free.

⭐ krb5_free_error_string

KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_error_string(krb5_context context, char * str)

Frees the error message that krb5_get_error_string() gave you.

🚫 Deprecated: use krb5_free_error_message()

Parameters

  • context β€” Kerberos context
  • str β€” error message to free

πŸ“ krb5_free_unparsed_name

KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_free_unparsed_name(krb5_context context, char * str)
🚫 Deprecated: use krb5_xfree().

πŸ‘‘ krb5_generate_subkey

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_generate_subkey(krb5_context context, const krb5_keyblock * key, krb5_keyblock ** subkey)
🚫 Deprecated: use krb5_generate_subkey_extended()

πŸ¦‹ krb5_get_cred_from_kdc

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc(krb5_context context, krb5_ccache ccache, krb5_creds * in_creds, krb5_creds ** out_creds, krb5_creds *** ret_tgts)
🚫 Deprecated: use krb5_get_credentials_with_flags().

(that triple-pointer ret_tgts is giving chaos energy and honestly? respect 🫑)


πŸ’– krb5_get_cred_from_kdc_opt

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_cred_from_kdc_opt(krb5_context context, krb5_ccache ccache, krb5_creds * in_creds, krb5_creds ** out_creds, krb5_creds *** ret_tgts, krb5_flags flags)
🚫 Deprecated: use krb5_get_credentials_with_flags().

✨ krb5_get_in_tkt_with_keytab

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_keytab(krb5_context context, krb5_flags options, krb5_addresses * addrs, const krb5_enctype * etypes, const krb5_preauthtype * pre_auth_types, krb5_keytab keytab, krb5_ccache ccache, krb5_creds * creds, krb5_kdc_rep * ret_as_reply)
🚫 Deprecated: use krb5_get_init_creds() and friends.

"and friends" bestie the docs are being so casual about it 😭


πŸŽ€ krb5_get_in_tkt_with_password

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_password(krb5_context context, krb5_flags options, krb5_addresses * addrs, const krb5_enctype * etypes, const krb5_preauthtype * pre_auth_types, const char * password, krb5_ccache ccache, krb5_creds * creds, krb5_kdc_rep * ret_as_reply)
🚫 Deprecated: use krb5_get_init_creds() and friends.

🌸 krb5_get_in_tkt_with_skey

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_in_tkt_with_skey(krb5_context context, krb5_flags options, krb5_addresses * addrs, const krb5_enctype * etypes, const krb5_preauthtype * pre_auth_types, const krb5_keyblock * key, krb5_ccache ccache, krb5_creds * creds, krb5_kdc_rep * ret_as_reply)
🚫 Deprecated: use krb5_get_init_creds() and friends.

🫢 krb5_get_init_creds_opt_get_error

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_get_init_creds_opt_get_error(krb5_context context, krb5_get_init_creds_opt * opt, KRB_ERROR ** error)
🚫 Deprecated: use the new krb5_init_creds_init() and krb5_init_creds_get_error().

🧚 krb5_get_init_creds_opt_init

KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_get_init_creds_opt_init(krb5_get_init_creds_opt * opt)
🚫 Deprecated: use krb5_get_init_creds_opt_alloc().

The reason krb5_get_init_creds_opt_init() is deprecated is that krb5_get_init_creds_opt is a static structure and for ABI reason it can't grow, ie can't add new functionality.

so basically it's trapped in its own shape forever, no glow-up possible, tragic fr πŸ’€


πŸ’œ krb5_keytab_key_proc

KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_keytab_key_proc(krb5_context context, krb5_enctype enctype, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock ** key)
🚫 Deprecated: use krb5_get_init_creds() and friends.

🌈 krb5_keytype_to_enctypes

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes(krb5_context context, krb5_keytype keytype, unsigned * len, krb5_enctype ** val)
🚫 Deprecated: keytypes doesn't exists, they are really enctypes.

⭐ krb5_keytype_to_enctypes_default

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_enctypes_default(krb5_context context, krb5_keytype keytype, unsigned * len, krb5_enctype ** val)
🚫 Deprecated: keytypes doesn't exists, they are really enctypes.

πŸ“ krb5_keytype_to_string

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_keytype_to_string(krb5_context context, krb5_keytype keytype, char ** string)
🚫 Deprecated: keytypes doesn't exists, they are really enctypes in most cases, use krb5_enctype_to_string().

"in most cases" β€” love a confident maybe 😌


πŸ‘‘ krb5_password_key_proc

KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV krb5_password_key_proc(krb5_context context, krb5_enctype type, krb5_salt salt, krb5_const_pointer keyseed, krb5_keyblock ** key)
🚫 Deprecated: use krb5_get_init_creds() and friends.

πŸ¦‹ krb5_princ_realm

KRB5_LIB_FUNCTION krb5_realm* KRB5_LIB_CALL krb5_princ_realm(krb5_context context, krb5_principal principal)
🚫 Deprecated: use krb5_principal_get_realm()

πŸ’– krb5_princ_set_realm

KRB5_LIB_FUNCTION void KRB5_LIB_CALL krb5_princ_set_realm(krb5_context context, krb5_principal principal, krb5_realm * realm)
🚫 Deprecated: use krb5_principal_set_realm()

✨ krb5_set_error_string

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_set_error_string(krb5_context context, const char * fmt, ...)

Sets the error message that krb5_get_error_string() returns.

🚫 Deprecated: use krb5_get_error_message()

Parameters

  • context β€” Kerberos context
  • fmt β€” error message to free

Returns

Return an error code or 0.


πŸŽ€ krb5_string_to_keytype

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_string_to_keytype(krb5_context context, const char * string, krb5_keytype * keytype)
🚫 Deprecated: keytypes doesn't exists, they are really enctypes in most cases, use krb5_string_to_enctype().

🌸 krb5_vset_error_string

KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL krb5_vset_error_string(krb5_context context, const char * fmt, va_list args)

Sets the error message that krb5_get_error_string() returns, deprecated, use krb5_set_error_message().

🚫 Deprecated: use krb5_vset_error_message()

Parameters

  • context β€” Kerberos context
  • fmt β€” error message to free
  • args β€” variable argument list vector

Returns

Return an error code or 0.


πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for Heimdal Kerberos 5 library from the source code.


okay bestie that's the whole roster 🫢 every single deprecated baby accounted for, nothing left behind. this page is from Version 7.8.0, dated Tue Nov 15 2022, and it lives at krb5_deprecated(3) β€” so if you're citing it, that's the receipt πŸ’…βœ¨ go forth and use the non-deprecated versions, ily, bye πŸŽ€

πŸ“¦ where this page comes from