diff --git a/src/gsm/auth_core.c b/src/gsm/auth_core.c
index 5e886ee..5cf8dfc 100644
--- a/src/gsm/auth_core.c
+++ b/src/gsm/auth_core.c
@@ -1,6 +1,6 @@
 /* GSM/GPRS/3G authentication core infrastructure */
 
-/* (C) 2010-2011 by Harald Welte <laforge@gnumonks.org>
+/* (C) 2010-2012 by Harald Welte <laforge@gnumonks.org>
  *
  * All Rights Reserved
  *
@@ -30,11 +30,23 @@
 
 #include <osmocom/crypt/auth.h>
 
+/*! \addtogroup auth
+ *  @{
+ */
+
+/* \file auth_core.c
+ */
+
 static LLIST_HEAD(osmo_auths);
 
 static struct osmo_auth_impl *selected_auths[_OSMO_AUTH_ALG_NUM];
 
-/* register a cipher with the core */
+/*! \brief Register an authentication algorithm implementation with the core
+ *  \param[in] impl Structure describing implementation and it's callbacks
+ *
+ * This function is called by an authentication implementation plugin to
+ * register itself with the authentication core.
+ */
 int osmo_auth_register(struct osmo_auth_impl *impl)
 {
 	if (impl->algo >= ARRAY_SIZE(selected_auths))
@@ -50,13 +62,23 @@
 	return 0;
 }
 
-/* load all available GPRS cipher plugins */
+/*! \brief Load all available authentication plugins from the given path
+ *  \param[in] path Path name of the directory containing the plugins
+ *
+ * This function will load all plugins contained in the specified path.
+ */
 int osmo_auth_load(const char *path)
 {
 	/* load all plugins available from path */
 	return osmo_plugin_load_all(path);
 }
 
+/*! \brief Determine if a given authentication algorithm is supported
+ *  \param[in] algo Algorithm which should be checked
+ *
+ * This function is used by an application to determine at runtime if a
+ * given authentication algorithm is supported or not.
+ */
 int osmo_auth_supported(enum osmo_auth_algo algo)
 {
 	if (algo >= ARRAY_SIZE(selected_auths))
@@ -68,6 +90,17 @@
 	return 0;
 }
 
+/*! \brief Generate authentication vector
+ *  \param[out] vec Generated authentication vector
+ *  \param[in] aud Subscriber-specific key material
+ *  \param[in] rand Random challenge to be used
+ *
+ * This function performs the core cryptographic function of the AUC,
+ * computing authentication triples/quintuples based on the permanent
+ * subscriber data and a random value.  The result is what is forwarded
+ * by the AUC via HLR and VLR to the MSC which will then be able to
+ * invoke authentication with the MS
+ */
 int osmo_auth_gen_vec(struct osmo_auth_vector *vec,
 		      struct osmo_sub_auth_data *aud,
 		      const uint8_t *_rand)
@@ -87,6 +120,20 @@
 	return 0;
 }
 
+/*! \brief Generate authentication vector and re-sync sequence
+ *  \param[out] vec Generated authentication vector
+ *  \param[in] aud Subscriber-specific key material
+ *  \param[in] rand_auts RAND value sent by the SIM/MS
+ *  \param[in] auts AUTS value sent by the SIM/MS
+ *  \param[in] rand Random challenge to be used to generate vector
+ *
+ * This function performs a special variant of the  core cryptographic
+ * function of the AUC: computing authentication triples/quintuples
+ * based on the permanent subscriber data, a random value as well as the
+ * AUTS and RAND values returned by the SIM/MS.  This special variant is
+ * needed if the sequence numbers between MS and AUC have for some
+ * reason become diffrent.
+ */
 int osmo_auth_gen_vec_auts(struct osmo_auth_vector *vec,
 			   struct osmo_sub_auth_data *aud,
 			   const uint8_t *rand_auts, const uint8_t *auts,
@@ -110,12 +157,16 @@
 	{ 0, NULL }
 };
 
+/*! \brief Get human-readable name of authentication algorithm */
 const char *osmo_auth_alg_name(enum osmo_auth_algo alg)
 {
 	return get_value_string(auth_alg_vals, alg);
 }
 
+/*! \brief Parse human-readable name of authentication algorithm */
 enum osmo_auth_algo osmo_auth_alg_parse(const char *name)
 {
 	return get_string_value(auth_alg_vals, name);
 }
+
+/*! @} */
