/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2008 Isilon Inc http://www.isilon.com/4* Authors: Doug Rabson <[email protected]>5* Developed with Red Inc: Alfred Perlstein <[email protected]>6*7* Redistribution and use in source and binary forms, with or without8* modification, are permitted provided that the following conditions9* are met:10* 1. Redistributions of source code must retain the above copyright11* notice, this list of conditions and the following disclaimer.12* 2. Redistributions in binary form must reproduce the above copyright13* notice, this list of conditions and the following disclaimer in the14* documentation and/or other materials provided with the distribution.15*16* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND17* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE18* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE19* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE20* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL21* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS22* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)23* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT24* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY25* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF26* SUCH DAMAGE.27*/2829#include "gssd.h"3031MALLOC_DECLARE(M_GSSAPI);3233struct _gss_ctx_id_t {34KOBJ_FIELDS;35gssd_ctx_id_t handle;36};3738struct _gss_cred_id_t {39gssd_cred_id_t handle;40};4142struct _gss_name_t {43gssd_name_t handle;44};4546struct kgss_mech {47LIST_ENTRY(kgss_mech) km_link;48gss_OID km_mech_type;49const char *km_mech_name;50struct kobj_class *km_class;51};52LIST_HEAD(kgss_mech_list, kgss_mech);5354/* Macros for VIMAGE. */55/* Just define the KGSS_VNETxxx() macros as VNETxxx() macros. */56#define KGSS_VNET_DEFINE(t, n) VNET_DEFINE(t, n)57#define KGSS_VNET_DEFINE_STATIC(t, n) VNET_DEFINE_STATIC(t, n)58#define KGSS_VNET_DECLARE(t, n) VNET_DECLARE(t, n)59#define KGSS_VNET(n) VNET(n)6061#define KGSS_CURVNET_SET(n) CURVNET_SET(n)62#define KGSS_CURVNET_SET_QUIET(n) CURVNET_SET_QUIET(n)63#define KGSS_CURVNET_RESTORE() CURVNET_RESTORE()64#define KGSS_TD_TO_VNET(n) TD_TO_VNET(n)6566extern struct mtx kgss_gssd_lock;67extern struct kgss_mech_list kgss_mechs;6869KGSS_VNET_DECLARE(CLIENT *, kgss_gssd_handle);7071CLIENT *kgss_gssd_client(void);72int kgss_oid_equal(const gss_OID oid1, const gss_OID oid2);73extern void kgss_install_mech(gss_OID mech_type, const char *name,74struct kobj_class *cls);75extern void kgss_uninstall_mech(gss_OID mech_type);76extern gss_OID kgss_find_mech_by_name(const char *name);77extern const char *kgss_find_mech_by_oid(const gss_OID oid);78extern gss_ctx_id_t kgss_create_context(gss_OID mech_type);79extern void kgss_delete_context(gss_ctx_id_t ctx, gss_buffer_t output_token);80extern OM_uint32 kgss_transfer_context(gss_ctx_id_t ctx, void *lctx);81extern void kgss_copy_buffer(const gss_buffer_t from, gss_buffer_t to);828384