1/* 2 * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26#ifndef NATIVE_FUNC_H 27#define NATIVE_FUNC_H 28 29#include "gssapi.h" 30 31#ifndef TRUE 32#define TRUE 1 33#endif 34 35#ifndef FALSE 36#define FALSE 0 37#endif 38 39char* loadNative(const char *libName); 40 41/* function pointer definitions */ 42typedef OM_uint32 (*RELEASE_NAME_FN_PTR) 43 (OM_uint32 *minor_status, 44 gss_name_t *name); 45 46typedef OM_uint32 (*IMPORT_NAME_FN_PTR) 47 (OM_uint32 *minor_status, 48 gss_buffer_t input_name_buffer, 49 gss_OID input_name_type, 50 gss_name_t *output_name); 51 52typedef OM_uint32 (*COMPARE_NAME_FN_PTR) 53 (OM_uint32 *minor_status, 54 gss_name_t name1, 55 gss_name_t name2, 56 int *name_equal); 57 58typedef OM_uint32 (*CANONICALIZE_NAME_FN_PTR) 59 (OM_uint32 *minor_status, 60 gss_name_t input_name, 61 gss_OID mech_type, 62 gss_name_t *output_name); 63 64typedef OM_uint32 (*EXPORT_NAME_FN_PTR) 65 (OM_uint32 *minor_status, 66 gss_name_t input_name, 67 gss_buffer_t exported_name); 68 69typedef OM_uint32 (*DISPLAY_NAME_FN_PTR) 70 (OM_uint32 *minor_status, 71 gss_name_t input_name, 72 gss_buffer_t output_name_buffer, 73 gss_OID *output_name_type); 74 75typedef OM_uint32 (*ACQUIRE_CRED_FN_PTR) 76 (OM_uint32 *minor_status, 77 gss_name_t desired_name, 78 OM_uint32 time_req, 79 gss_OID_set desired_mech, 80 gss_cred_usage_t cred_usage, 81 gss_cred_id_t *output_cred_handle, 82 gss_OID_set *actual_mechs, 83 OM_uint32 *time_rec); 84 85typedef OM_uint32 (*RELEASE_CRED_FN_PTR) 86 (OM_uint32 *minor_status, 87 gss_cred_id_t *cred_handle); 88 89typedef OM_uint32 (*INQUIRE_CRED_FN_PTR) 90 (OM_uint32 *minor_status, 91 gss_cred_id_t cred_handle, 92 gss_name_t *name, 93 OM_uint32 *lifetime, 94 gss_cred_usage_t *cred_usage, 95 gss_OID_set *mechanisms); 96 97typedef OM_uint32 (*IMPORT_SEC_CONTEXT_FN_PTR) 98 (OM_uint32 *minor_status, 99 gss_buffer_t interprocess_token, 100 gss_ctx_id_t *context_handle); 101 102typedef OM_uint32 (*INIT_SEC_CONTEXT_FN_PTR) 103 (OM_uint32 *minor_status, 104 gss_cred_id_t initiator_cred_handle, 105 gss_ctx_id_t *context_handle, 106 gss_name_t *target_name, 107 gss_OID mech_type, 108 OM_uint32 req_flags, 109 OM_uint32 time_req, 110 gss_channel_bindings_t input_chan_bindings, 111 gss_buffer_t input_token, 112 gss_OID *actual_mech_type, 113 gss_buffer_t output_token, 114 OM_uint32 *ret_flags, 115 OM_uint32 *time_rec); 116 117typedef OM_uint32 (*ACCEPT_SEC_CONTEXT_FN_PTR) 118 (OM_uint32 *minor_status, 119 gss_ctx_id_t *context_handle, 120 gss_cred_id_t acceptor_cred_handle, 121 gss_buffer_t input_token, 122 gss_channel_bindings_t input_chan_bindings, 123 gss_name_t *src_name, 124 gss_OID *mech_type, 125 gss_buffer_t output_token, 126 OM_uint32 *ret_flags, 127 OM_uint32 *time_rec, 128 gss_cred_id_t *delegated_cred_handle); 129 130typedef OM_uint32 (*INQUIRE_CONTEXT_FN_PTR) 131 (OM_uint32 *minor_status, 132 gss_ctx_id_t context_handle, 133 gss_name_t *src_name, 134 gss_name_t *targ_name, 135 OM_uint32 *lifetime_rec, 136 gss_OID *mech_type, 137 OM_uint32 *ctx_flags, 138 int *locally_initiated, 139 int *open); 140 141typedef OM_uint32 (*DELETE_SEC_CONTEXT_FN_PTR) 142 (OM_uint32 *minor_status, 143 gss_ctx_id_t *context_handle, 144 gss_buffer_t output_token); 145 146typedef OM_uint32 (*CONTEXT_TIME_FN_PTR) 147 (OM_uint32 *minor_status, 148 gss_ctx_id_t *context_handle, 149 OM_uint32 *time_rec); 150 151typedef OM_uint32 (*WRAP_SIZE_LIMIT_FN_PTR) 152 (OM_uint32 *minor_status, 153 gss_ctx_id_t context_handle, 154 int conf_req_flag, 155 gss_qop_t qop_req, 156 OM_uint32 req_output_size, 157 OM_uint32 *max_input_size); 158 159typedef OM_uint32 (*EXPORT_SEC_CONTEXT_FN_PTR) 160 (OM_uint32 *minor_status, 161 gss_ctx_id_t *context_handle, 162 gss_buffer_t interprocess_token); 163 164typedef OM_uint32 (*GET_MIC_FN_PTR) 165 (OM_uint32 *minor_status, 166 gss_ctx_id_t context_handle, 167 gss_qop_t qop_req, 168 gss_buffer_t message_buffer, 169 gss_buffer_t msg_token); 170 171typedef OM_uint32 (*VERIFY_MIC_FN_PTR) 172 (OM_uint32 *minor_status, 173 gss_ctx_id_t context_handle, 174 gss_buffer_t message_buffer, 175 gss_buffer_t token_buffer, 176 gss_qop_t *qop_state); 177 178typedef OM_uint32 (*WRAP_FN_PTR) 179 (OM_uint32 *minor_status, 180 gss_ctx_id_t context_handle, 181 int conf_req_flag, 182 gss_qop_t qop_req, 183 gss_buffer_t input_message_buffer, 184 int *conf_state, 185 gss_buffer_t output_message_buffer); 186 187typedef OM_uint32 (*UNWRAP_FN_PTR) 188 (OM_uint32 *minor_status, 189 gss_ctx_id_t context_handle, 190 gss_buffer_t input_message_buffer, 191 gss_buffer_t output_message_buffer, 192 int *conf_state, 193 gss_qop_t *qop_state); 194 195typedef OM_uint32 (*INDICATE_MECHS_FN_PTR) 196 (OM_uint32 *minor_status, 197 gss_OID_set *mech_set); 198 199typedef OM_uint32 (*INQUIRE_NAMES_FOR_MECH_FN_PTR) 200 (OM_uint32 *minor_status, 201 const gss_OID mechanism, 202 gss_OID_set *name_types); 203 204typedef OM_uint32 (*ADD_OID_SET_MEMBER_FN_PTR) 205 (OM_uint32 *minor_status, 206 gss_OID member_oid, 207 gss_OID_set *oid_set); 208 209typedef OM_uint32 (*DISPLAY_STATUS_FN_PTR) 210 (OM_uint32 *minor_status, 211 OM_uint32 status_value, 212 int status_type, 213 gss_OID mech_type, 214 OM_uint32 *message_context, 215 gss_buffer_t status_string); 216 217typedef OM_uint32 (*CREATE_EMPTY_OID_SET_FN_PTR) 218 (OM_uint32 *minor_status, 219 gss_OID_set *oid_set); 220 221typedef OM_uint32 (*RELEASE_OID_SET_FN_PTR) 222 (OM_uint32 *minor_status, 223 gss_OID_set *set); 224 225typedef OM_uint32 (*RELEASE_BUFFER_FN_PTR) 226 (OM_uint32 *minor_status, 227 gss_buffer_t buffer); 228 229 230/* dynamically resolved functions from gss library */ 231 232typedef struct GSS_FUNCTION_TABLE { 233 gss_OID_set mechs; 234 RELEASE_NAME_FN_PTR releaseName; 235 IMPORT_NAME_FN_PTR importName; 236 COMPARE_NAME_FN_PTR compareName; 237 CANONICALIZE_NAME_FN_PTR canonicalizeName; 238 EXPORT_NAME_FN_PTR exportName; 239 DISPLAY_NAME_FN_PTR displayName; 240 ACQUIRE_CRED_FN_PTR acquireCred; 241 RELEASE_CRED_FN_PTR releaseCred; 242 INQUIRE_CRED_FN_PTR inquireCred; 243 IMPORT_SEC_CONTEXT_FN_PTR importSecContext; 244 INIT_SEC_CONTEXT_FN_PTR initSecContext; 245 ACCEPT_SEC_CONTEXT_FN_PTR acceptSecContext; 246 INQUIRE_CONTEXT_FN_PTR inquireContext; 247 DELETE_SEC_CONTEXT_FN_PTR deleteSecContext; 248 CONTEXT_TIME_FN_PTR contextTime; 249 WRAP_SIZE_LIMIT_FN_PTR wrapSizeLimit; 250 EXPORT_SEC_CONTEXT_FN_PTR exportSecContext; 251 GET_MIC_FN_PTR getMic; 252 VERIFY_MIC_FN_PTR verifyMic; 253 WRAP_FN_PTR wrap; 254 UNWRAP_FN_PTR unwrap; 255 INDICATE_MECHS_FN_PTR indicateMechs; 256 INQUIRE_NAMES_FOR_MECH_FN_PTR inquireNamesForMech; 257 ADD_OID_SET_MEMBER_FN_PTR addOidSetMember; 258 DISPLAY_STATUS_FN_PTR displayStatus; 259 CREATE_EMPTY_OID_SET_FN_PTR createEmptyOidSet; 260 RELEASE_OID_SET_FN_PTR releaseOidSet; 261 RELEASE_BUFFER_FN_PTR releaseBuffer; 262 263} GSS_FUNCTION_TABLE; 264 265typedef GSS_FUNCTION_TABLE *GSS_FUNCTION_TABLE_PTR; 266 267/* global GSS function table */ 268GSS_FUNCTION_TABLE_PTR ftab; 269 270#endif 271