1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 #ifndef _GSSAPIP_DUMMY_H
  28 #define _GSSAPIP_DUMMY_H
  29 
  30 #pragma ident   "%Z%%M% %I%     %E% SMI"
  31 
  32 #ifdef  __cplusplus
  33 extern "C" {
  34 #endif
  35 
  36 #include <gssapi/gssapi.h>
  37 
  38 #define SEC_CONTEXT_TOKEN 1
  39 #define DUMMY_SIZE_OF_INT 4
  40 
  41 typedef void * dummy_token_t;
  42 
  43 /* dummy name structure for internal representation. */
  44 typedef struct {
  45         gss_OID type;
  46         gss_buffer_t buffer;
  47 } dummy_name_desc, *dummy_name_t;
  48 
  49 /* Structure for context handle */
  50 typedef struct {
  51         OM_uint32 last_stat;
  52         int token_number;
  53         int established;
  54 } dummy_gss_ctx_id_rec, *dummy_gss_ctx_id_t;
  55 
  56 /* Dummy oid structure */
  57 static const gss_OID_desc dummy_oids[] = {
  58         {10, "\053\006\001\004\001\052\002\032\001\002"},
  59 };
  60 const gss_OID_desc * const gss_mech_dummy = dummy_oids+0;
  61 static const gss_OID_set_desc dummy_oidsets[] = {
  62         {1, (gss_OID) dummy_oids+0},
  63 };
  64 const gss_OID_set_desc * const gss_mech_set_dummy = dummy_oidsets+0;
  65 
  66 #define TWRITE_STR(ptr, str, len) \
  67         (void) memcpy((ptr), (char *) (str), (len)); \
  68         (ptr) += (len);
  69 #ifndef _KERNEL
  70 
  71 #ifdef DEBUG_ON
  72 
  73 #define dprintf(a) printf(a)
  74 #define dprintf1(a, b) printf(a, b)
  75 
  76 #else
  77 
  78 #define dprintf(a)
  79 #define dprintf1(a, b)
  80 #define DUMMY_STATIC
  81 
  82 #endif  /* DEBUG_ON */
  83 
  84 #else   /* _KERNEL */
  85 
  86 #if defined(DEBUG) && !defined(DUMMY_MECH_DEBUG)
  87 #define DUMMY_MECH_DEBUG
  88 #endif
  89 
  90 #ifdef DUMMY_MECH_DEBUG
  91 #define DUMMY_MECH_LOG(A, B, C) \
  92         ((void)((dummy_mech_log & (A)) && (printf((B), (C)), TRUE)))
  93 #define DUMMY_MECH_LOG0(A, B)   \
  94         ((void)((dummy_mech_log & (A)) && (printf(B), TRUE)))
  95 #else
  96 #define DUMMY_MECH_LOG(A, B, C)
  97 #define DUMMY_MECH_LOG0(A, B)
  98 
  99 #endif
 100 
 101 #define dprintf(a)      DUMMY_MECH_LOG0(8, a)
 102 #define dprintf1(a, b)  DUMMY_MECH_LOG(8, a, b)
 103 #define DUMMY_STATIC    static
 104 
 105 #endif  /* _KERNEL */
 106 
 107 /*
 108  * declarations of internal name mechanism functions
 109  */
 110 
 111 OM_uint32 dummy_gss_acquire_cred
 112         (
 113                 void *,                 /* dummy context */
 114                 OM_uint32 *,            /* minor_status */
 115                 gss_name_t,             /* desired_name */
 116                 OM_uint32,              /* time_req */
 117                 gss_OID_set,            /* desired_mechs */
 118                 gss_cred_usage_t,       /* cred_usage */
 119                 gss_cred_id_t *,        /* output_cred_handle */
 120                 gss_OID_set *,          /* actual_mechs */
 121                 OM_uint32 *             /* time_rec */
 122         /* */);
 123 
 124 OM_uint32 dummy_gss_release_cred
 125         (
 126                 void *,                 /* dummy context */
 127                 OM_uint32 *,            /* minor_status */
 128                 gss_cred_id_t *         /* cred_handle */
 129         /* */);
 130 
 131 OM_uint32 dummy_gss_init_sec_context
 132         (
 133                 void *,                 /* dummy context */
 134                 OM_uint32 *,            /* minor_status */
 135                 gss_cred_id_t,          /* claimant_cred_handle */
 136                 gss_ctx_id_t *,         /* context_handle */
 137                 gss_name_t,             /* target_name */
 138                 gss_OID,                /* mech_type */
 139                 OM_uint32,              /* req_flags */
 140                 OM_uint32,              /* time_req */
 141                 gss_channel_bindings_t, /* input_chan_bindings */
 142                 gss_buffer_t,           /* input_token */
 143                 gss_OID *,              /* actual_mech_type */
 144                 gss_buffer_t,           /* output_token */
 145                 OM_uint32 *,            /* ret_flags */
 146                 OM_uint32 *             /* time_rec */
 147         /* */);
 148 
 149 OM_uint32 dummy_gss_accept_sec_context
 150         (
 151                 void *,                 /* dummy context */
 152                 OM_uint32 *,            /* minor_status */
 153                 gss_ctx_id_t *,         /* context_handle */
 154                 gss_cred_id_t,          /* verifier_cred_handle */
 155                 gss_buffer_t,           /* input_token_buffer */
 156                 gss_channel_bindings_t, /* input_chan_bindings */
 157                 gss_name_t *,           /* src_name */
 158                 gss_OID *,              /* mech_type */
 159                 gss_buffer_t,           /* output_token */
 160                 OM_uint32 *,            /* ret_flags */
 161                 OM_uint32 *,            /* time_rec */
 162                 gss_cred_id_t *         /* delegated_cred_handle */
 163         /* */);
 164 
 165 OM_uint32 dummy_gss_process_context_token
 166         (
 167                 void *,                 /* dummy context */
 168                 OM_uint32 *,            /* minor_status */
 169                 gss_ctx_id_t,           /* context_handle */
 170                 gss_buffer_t            /* token_buffer */
 171         /* */);
 172 
 173 DUMMY_STATIC OM_uint32 dummy_gss_delete_sec_context
 174         (
 175                 void *,                 /* dummy context */
 176                 OM_uint32 *,            /* minor_status */
 177                 gss_ctx_id_t *,         /* context_handle */
 178                 gss_buffer_t            /* output_token */
 179 #ifdef  _KERNEL
 180         /* */, OM_uint32
 181 #endif
 182         /* */);
 183 
 184 OM_uint32 dummy_gss_context_time
 185         (
 186                 void *,                 /* dummy context */
 187                 OM_uint32 *,            /* minor_status */
 188                 gss_ctx_id_t,           /* context_handle */
 189                 OM_uint32 *             /* time_rec */
 190         /* */);
 191 
 192 DUMMY_STATIC OM_uint32 dummy_gss_sign
 193         (
 194                 void *,                 /* dummy context */
 195                 OM_uint32 *,            /* minor_status */
 196                 gss_ctx_id_t,           /* context_handle */
 197                 int,                    /* qop_req */
 198                 gss_buffer_t,           /* message_buffer */
 199                 gss_buffer_t            /* message_token */
 200 #ifdef  _KERNEL
 201         /* */, OM_uint32
 202 #endif
 203         /* */);
 204 
 205 DUMMY_STATIC OM_uint32 dummy_gss_verify
 206         (
 207                 void *,                 /* dummy context */
 208                 OM_uint32 *,            /* minor_status */
 209                 gss_ctx_id_t,           /* context_handle */
 210                 gss_buffer_t,           /* message_buffer */
 211                 gss_buffer_t,           /* token_buffer */
 212                 int *                   /* qop_state */
 213 #ifdef  _KERNEL
 214         /* */, OM_uint32
 215 
 216 #endif
 217         /* */);
 218 
 219 DUMMY_STATIC OM_uint32 dummy_gss_seal
 220         (
 221                 void *,                 /* dummy context */
 222                 OM_uint32 *,            /* minor_status */
 223                 gss_ctx_id_t,           /* context_handle */
 224                 int,                    /* conf_req_flag */
 225                 int,                    /* qop_req */
 226                 gss_buffer_t,           /* input_message_buffer */
 227                 int *,                  /* conf_state */
 228                 gss_buffer_t            /* output_message_buffer */
 229 #ifdef  _KERNEL
 230         /* */, OM_uint32
 231 #endif
 232         /* */);
 233 
 234 DUMMY_STATIC OM_uint32 dummy_gss_unseal
 235         (
 236                 void *,                 /* dummy context */
 237                 OM_uint32 *,            /* minor_status */
 238                 gss_ctx_id_t,           /* context_handle */
 239                 gss_buffer_t,           /* input_message_buffer */
 240                 gss_buffer_t,           /* output_message_buffer */
 241                 int *,                  /* conf_state */
 242                 int *                   /* qop_state */
 243 #ifdef  _KERNEL
 244         /* */, OM_uint32
 245 #endif
 246         /* */);
 247 
 248 OM_uint32 dummy_gss_display_status
 249         (
 250                 void *,                 /* dummy context */
 251                 OM_uint32 *,            /* minor_status */
 252                 OM_uint32,              /* status_value */
 253                 int,                    /* status_type */
 254                 gss_OID,                /* mech_type */
 255                 OM_uint32 *,            /* message_context */
 256                 gss_buffer_t            /* status_string */
 257         /* */);
 258 
 259 OM_uint32 dummy_gss_indicate_mechs
 260         (
 261                 void *,                 /* dummy context */
 262                 OM_uint32 *,            /* minor_status */
 263                 gss_OID_set *           /* mech_set */
 264         /* */);
 265 
 266 OM_uint32 dummy_gss_compare_name
 267         (
 268                 void *,                 /* dummy context */
 269                 OM_uint32 *,            /* minor_status */
 270                 gss_name_t,             /* name1 */
 271                 gss_name_t,             /* name2 */
 272                 int *                   /* name_equal */
 273         /* */);
 274 
 275 OM_uint32 dummy_gss_display_name
 276         (
 277                 void *,                 /* dummy context */
 278                 OM_uint32 *,            /* minor_status */
 279                 gss_name_t,             /* input_name */
 280                 gss_buffer_t,           /* output_name_buffer */
 281                 gss_OID *               /* output_name_type */
 282         /* */);
 283 
 284 OM_uint32 dummy_gss_import_name
 285         (
 286                 void *,                 /* dummy context */
 287                 OM_uint32 *,            /* minor_status */
 288                 gss_buffer_t,           /* input_name_buffer */
 289                 gss_OID,                /* input_name_type */
 290                 gss_name_t *            /* output_name */
 291         /* */);
 292 
 293 OM_uint32 dummy_gss_release_name
 294         (
 295                 void *,                 /* dummy context */
 296                 OM_uint32 *,            /* minor_status */
 297                 gss_name_t *            /* input_name */
 298         /* */);
 299 
 300 OM_uint32 dummy_gss_inquire_cred
 301         (
 302                 void *,                 /* dummy context */
 303                 OM_uint32 *,            /* minor_status */
 304                 gss_cred_id_t,          /* cred_handle */
 305                 gss_name_t *,           /* name */
 306                 OM_uint32 *,            /* lifetime */
 307                 gss_cred_usage_t *,     /* cred_usage */
 308                 gss_OID_set *           /* mechanisms */
 309         /* */);
 310 
 311 OM_uint32 dummy_gss_inquire_context
 312         (
 313                 void *,                 /* dummy context */
 314                 OM_uint32 *,            /* minor_status */
 315                 gss_ctx_id_t,           /* context_handle */
 316                 gss_name_t *,           /* initiator_name */
 317                 gss_name_t *,           /* acceptor_name */
 318                 OM_uint32 *,            /* lifetime_rec */
 319                 gss_OID *,              /* mech_type */
 320                 OM_uint32 *,            /* ret_flags */
 321                 int *,                  /* locally_initiated */
 322                 int *                   /* open */
 323         /* */);
 324 
 325 /* New V2 entry points */
 326 OM_uint32 dummy_gss_get_mic
 327         (
 328                 void *,                 /* dummy context */
 329                 OM_uint32 *,            /* minor_status */
 330                 gss_ctx_id_t,           /* context_handle */
 331                 gss_qop_t,              /* qop_req */
 332                 gss_buffer_t,           /* message_buffer */
 333                 gss_buffer_t            /* message_token */
 334         /* */);
 335 
 336 OM_uint32 dummy_gss_verify_mic
 337         (
 338                 void *,                 /* dummy context */
 339                 OM_uint32 *,            /* minor_status */
 340                 gss_ctx_id_t,           /* context_handle */
 341                 gss_buffer_t,           /* message_buffer */
 342                 gss_buffer_t,           /* message_token */
 343                 gss_qop_t *             /* qop_state */
 344         /* */);
 345 
 346 OM_uint32 dummy_gss_wrap
 347         (
 348                 void *,                 /* dummy context */
 349                 OM_uint32 *,            /* minor_status */
 350                 gss_ctx_id_t,           /* context_handle */
 351                 int,                    /* conf_req_flag */
 352                 gss_qop_t,              /* qop_req */
 353                 gss_buffer_t,           /* input_message_buffer */
 354                 int *,                  /* conf_state */
 355                 gss_buffer_t            /* output_message_buffer */
 356         /* */);
 357 
 358 OM_uint32 dummy_gss_unwrap
 359         (
 360                 void *,                 /* dummy context */
 361                 OM_uint32 *,            /* minor_status */
 362                 gss_ctx_id_t,           /* context_handle */
 363                 gss_buffer_t,           /* input_message_buffer */
 364                 gss_buffer_t,           /* output_message_buffer */
 365                 int *,                  /* conf_state */
 366                 gss_qop_t *             /* qop_state */
 367         /* */);
 368 
 369 OM_uint32 dummy_gss_wrap_size_limit
 370         (
 371                 void *,                 /* dummy context */
 372                 OM_uint32 *,            /* minor_status */
 373                 gss_ctx_id_t,           /* context_handle */
 374                 int,                    /* conf_req_flag */
 375                 gss_qop_t,              /* qop_req */
 376                 OM_uint32,              /* req_output_size */
 377                 OM_uint32 *             /* max_input_size */
 378         /* */);
 379 
 380 OM_uint32 dummy_gss_add_cred
 381         (
 382                 void *,                 /* dummy context */
 383                 OM_uint32 *,            /* minor_status */
 384                 gss_cred_id_t,          /* input_cred_handle */
 385                 gss_name_t,             /* desired_name */
 386                 gss_OID,                /* desired_mech */
 387                 gss_cred_usage_t,       /* cred_usage */
 388                 OM_uint32,              /* initiator_time_req */
 389                 OM_uint32,              /* acceptor_time_req */
 390                 gss_cred_id_t *,        /* output_cred_handle */
 391                 gss_OID_set *,          /* actual_mechs */
 392                 OM_uint32 *,            /* initiator_time_rec */
 393                 OM_uint32 *             /* acceptor_time_rec */
 394         /* */);
 395 
 396 OM_uint32 dummy_gss_inquire_cred_by_mech
 397         (
 398                 void *,                 /* dummy context */
 399                 OM_uint32  *,           /* minor_status */
 400                 gss_cred_id_t,          /* cred_handle */
 401                 gss_OID,                /* mech_type */
 402                 gss_name_t *,           /* name */
 403                 OM_uint32 *,            /* initiator_lifetime */
 404                 OM_uint32 *,            /* acceptor_lifetime */
 405                 gss_cred_usage_t *      /* cred_usage */
 406         /* */);
 407 
 408 OM_uint32 dummy_gss_export_sec_context
 409         (
 410                 void *,                 /* dummy context */
 411                 OM_uint32 *,            /* minor_status */
 412                 gss_ctx_id_t *,         /* context_handle */
 413                 gss_buffer_t            /* interprocess_token */
 414         /* */);
 415 
 416 OM_uint32 dummy_gss_import_sec_context
 417         (
 418                 void *,                 /* dummy context */
 419                 OM_uint32 *,            /* minor_status */
 420                 gss_buffer_t,           /* interprocess_token */
 421                 gss_ctx_id_t *          /* context_handle */
 422         /* */);
 423 
 424 #if 0
 425 OM_uint32 dummy_gss_release_oid
 426         (
 427                 OM_uint32 *,            /* minor_status */
 428                 gss_OID *               /* oid */
 429         /* */);
 430 #endif
 431 
 432 OM_uint32 dummy_gss_internal_release_oid
 433         (
 434                 void *,                 /* dummy context  */
 435                 OM_uint32 *,            /* minor_status */
 436                 gss_OID *               /* oid */
 437         /* */);
 438 
 439 OM_uint32 dummy_gss_inquire_names_for_mech
 440         (
 441                 void *,         /* dummy context */
 442                 OM_uint32 *,            /* minor_status */
 443                 gss_OID,                /* mechanism */
 444                 gss_OID_set *           /* name_types */
 445         /* */);
 446 
 447 OM_uint32 dummy_pname_to_uid
 448         (
 449                 void *,                 /* dummy context */
 450                 OM_uint32 *,            /* minor status */
 451                 const gss_name_t,       /* pname */
 452                 uid_t *                 /* uidOut */
 453         /* */);
 454 
 455 
 456 #ifdef  __cplusplus
 457 }
 458 #endif
 459 
 460 #endif /* _GSSAPIP_DUMMY_H */