/*
* Opaque identifier for a key. Use with the krb5_k APIs for better
- * performance for repeated operations with the same key usage.
+ * performance for repeated operations with the same key usage. Key
+ * identifiers must not be used simultaneously within multiple
+ * threads, as they may contain mutable internal state and are not
+ * mutex-protected.
*/
struct krb5_key_st;
typedef struct krb5_key_st *krb5_key;
(krb5_context context, krb5_enctype enctype,
size_t data_length, unsigned int *size);
-/*
- * krb5_k_* functions use opaque key identifiers and should perform
- * better for repeated operations with the same key usage. krb5_keys
- * are immutable once created.
- */
-
krb5_error_code KRB5_CALLCONV
krb5_k_create_key(krb5_context context, const krb5_keyblock *key_data,
krb5_key *out);
-/* Since keys are immutable, they can be "copied" by reference count. */
+/* Keys are logically immutable and can be "copied" by reference count. */
void KRB5_CALLCONV krb5_k_reference_key(krb5_context context, krb5_key key);
/* Decrement the reference count on a key and free it if it hits zero. */