krb5mech.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* A module for Kerberos V5 security mechanism.
*
*/
#pragma ident "%Z%%M% %I% %E% SMI"
char _depends_on[] = "misc/kgssapi crypto/md5";
#include <mechglueP.h>
#include <gssapiP_krb5.h>
#include <gssapi_err_generic.h>
#include <gssapi/kgssapi_defs.h>
#include <k5-int.h>
static struct gss_config krb5_mechanism =
{{9, "\052\206\110\206\367\022\001\002\002"},
NULL, /* context */
NULL, /* next */
TRUE, /* uses_kmod */
/* EXPORT DELETE START */ /* CRYPT DELETE START */
/* EXPORT DELETE END */ /* CRYPT DELETE END */
/* EXPORT DELETE START */ /* CRYPT DELETE START */
/* EXPORT DELETE END */ /* CRYPT DELETE END */
/* EXPORT DELETE START */
/* CRYPT DELETE START */
#if 0
/* CRYPT DELETE END */
/* CRYPT DELETE START */
#endif
/* CRYPT DELETE END */
/* EXPORT DELETE END */
};
static gss_mechanism
{
return (&krb5_mechanism);
}
/*
* Module linkage information for the kernel.
*/
extern struct mod_ops mod_miscops;
#if defined(sun4u)
&mod_miscops, "Krb5 GSS mech, sun4u optimized"
};
#else
&mod_miscops, "Krb5 GSS mechanism"
};
#endif
static struct modlinkage modlinkage = {
(void *)&modlmisc,
};
static int krb5_fini_code = EBUSY;
int
_init()
{
int retval;
return (retval);
mech = gss_mech_initialize();
"KRB5 GSS mechanism: mechanism already in table.\n");
"table supports kernel operations!\n");
}
/*
* keep us loaded, but let us be unloadable. This
* will give the developer time to trouble shoot
*/
krb5_fini_code = 0;
} else {
}
return (0);
}
int
_fini()
{
int ret = krb5_fini_code;
if (ret == 0) {
}
return (ret);
}
int
{
}
void ** context;
{
OM_uint32 major_status = 0;
{
goto unlock;
}
if (kg_context) {
*context = kg_context;
goto unlock;
}
if (krb5_init_context(&kg_context))
{
goto unlock;
}
{
kg_context = 0;
goto unlock;
}
*context = kg_context;
return (major_status);
}