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 /* EXPORT DELETE START */
 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 /* EXPORT DELETE END */
 248 
 249 OM_uint32 dummy_gss_display_status
 250         (
 251                 void *,                 /* dummy context */
 252                 OM_uint32 *,            /* minor_status */
 253                 OM_uint32,              /* status_value */
 254                 int,                    /* status_type */
 255                 gss_OID,                /* mech_type */
 256                 OM_uint32 *,            /* message_context */
 257                 gss_buffer_t            /* status_string */
 258         /* */);
 259 
 260 OM_uint32 dummy_gss_indicate_mechs
 261         (
 262                 void *,                 /* dummy context */
 263                 OM_uint32 *,            /* minor_status */
 264                 gss_OID_set *           /* mech_set */
 265         /* */);
 266 
 267 OM_uint32 dummy_gss_compare_name
 268         (
 269                 void *,                 /* dummy context */
 270                 OM_uint32 *,            /* minor_status */
 271                 gss_name_t,             /* name1 */
 272                 gss_name_t,             /* name2 */
 273                 int *                   /* name_equal */
 274         /* */);
 275 
 276 OM_uint32 dummy_gss_display_name
 277         (
 278                 void *,                 /* dummy context */
 279                 OM_uint32 *,            /* minor_status */
 280                 gss_name_t,             /* input_name */
 281                 gss_buffer_t,           /* output_name_buffer */
 282                 gss_OID *               /* output_name_type */
 283         /* */);
 284 
 285 OM_uint32 dummy_gss_import_name
 286         (
 287                 void *,                 /* dummy context */
 288                 OM_uint32 *,            /* minor_status */
 289                 gss_buffer_t,           /* input_name_buffer */
 290                 gss_OID,                /* input_name_type */
 291                 gss_name_t *            /* output_name */
 292         /* */);
 293 
 294 OM_uint32 dummy_gss_release_name
 295         (
 296                 void *,                 /* dummy context */
 297                 OM_uint32 *,            /* minor_status */
 298                 gss_name_t *            /* input_name */
 299         /* */);
 300 
 301 OM_uint32 dummy_gss_inquire_cred
 302         (
 303                 void *,                 /* dummy context */
 304                 OM_uint32 *,            /* minor_status */
 305                 gss_cred_id_t,          /* cred_handle */
 306                 gss_name_t *,           /* name */
 307                 OM_uint32 *,            /* lifetime */
 308                 gss_cred_usage_t *,     /* cred_usage */
 309                 gss_OID_set *           /* mechanisms */
 310         /* */);
 311 
 312 OM_uint32 dummy_gss_inquire_context
 313         (
 314                 void *,                 /* dummy context */
 315                 OM_uint32 *,            /* minor_status */
 316                 gss_ctx_id_t,           /* context_handle */
 317                 gss_name_t *,           /* initiator_name */
 318                 gss_name_t *,           /* acceptor_name */
 319                 OM_uint32 *,            /* lifetime_rec */
 320                 gss_OID *,              /* mech_type */
 321                 OM_uint32 *,            /* ret_flags */
 322                 int *,                  /* locally_initiated */
 323                 int *                   /* open */
 324         /* */);
 325 
 326 /* New V2 entry points */
 327 OM_uint32 dummy_gss_get_mic
 328         (
 329                 void *,                 /* dummy context */
 330                 OM_uint32 *,            /* minor_status */
 331                 gss_ctx_id_t,           /* context_handle */
 332                 gss_qop_t,              /* qop_req */
 333                 gss_buffer_t,           /* message_buffer */
 334                 gss_buffer_t            /* message_token */
 335         /* */);
 336 
 337 OM_uint32 dummy_gss_verify_mic
 338         (
 339                 void *,                 /* dummy context */
 340                 OM_uint32 *,            /* minor_status */
 341                 gss_ctx_id_t,           /* context_handle */
 342                 gss_buffer_t,           /* message_buffer */
 343                 gss_buffer_t,           /* message_token */
 344                 gss_qop_t *             /* qop_state */
 345         /* */);
 346 
 347 OM_uint32 dummy_gss_wrap
 348         (
 349                 void *,                 /* dummy context */
 350                 OM_uint32 *,            /* minor_status */
 351                 gss_ctx_id_t,           /* context_handle */
 352                 int,                    /* conf_req_flag */
 353                 gss_qop_t,              /* qop_req */
 354                 gss_buffer_t,           /* input_message_buffer */
 355                 int *,                  /* conf_state */
 356                 gss_buffer_t            /* output_message_buffer */
 357         /* */);
 358 
 359 OM_uint32 dummy_gss_unwrap
 360         (
 361                 void *,                 /* dummy context */
 362                 OM_uint32 *,            /* minor_status */
 363                 gss_ctx_id_t,           /* context_handle */
 364                 gss_buffer_t,           /* input_message_buffer */
 365                 gss_buffer_t,           /* output_message_buffer */
 366                 int *,                  /* conf_state */
 367                 gss_qop_t *             /* qop_state */
 368         /* */);
 369 
 370 OM_uint32 dummy_gss_wrap_size_limit
 371         (
 372                 void *,                 /* dummy context */
 373                 OM_uint32 *,            /* minor_status */
 374                 gss_ctx_id_t,           /* context_handle */
 375                 int,                    /* conf_req_flag */
 376                 gss_qop_t,              /* qop_req */
 377                 OM_uint32,              /* req_output_size */
 378                 OM_uint32 *             /* max_input_size */
 379         /* */);
 380 
 381 OM_uint32 dummy_gss_add_cred
 382         (
 383                 void *,                 /* dummy context */
 384                 OM_uint32 *,            /* minor_status */
 385                 gss_cred_id_t,          /* input_cred_handle */
 386                 gss_name_t,             /* desired_name */
 387                 gss_OID,                /* desired_mech */
 388                 gss_cred_usage_t,       /* cred_usage */
 389                 OM_uint32,              /* initiator_time_req */
 390                 OM_uint32,              /* acceptor_time_req */
 391                 gss_cred_id_t *,        /* output_cred_handle */
 392                 gss_OID_set *,          /* actual_mechs */
 393                 OM_uint32 *,            /* initiator_time_rec */
 394                 OM_uint32 *             /* acceptor_time_rec */
 395         /* */);
 396 
 397 OM_uint32 dummy_gss_inquire_cred_by_mech
 398         (
 399                 void *,                 /* dummy context */
 400                 OM_uint32  *,           /* minor_status */
 401                 gss_cred_id_t,          /* cred_handle */
 402                 gss_OID,                /* mech_type */
 403                 gss_name_t *,           /* name */
 404                 OM_uint32 *,            /* initiator_lifetime */
 405                 OM_uint32 *,            /* acceptor_lifetime */
 406                 gss_cred_usage_t *      /* cred_usage */
 407         /* */);
 408 
 409 OM_uint32 dummy_gss_export_sec_context
 410         (
 411                 void *,                 /* dummy context */
 412                 OM_uint32 *,            /* minor_status */
 413                 gss_ctx_id_t *,         /* context_handle */
 414                 gss_buffer_t            /* interprocess_token */
 415         /* */);
 416 
 417 OM_uint32 dummy_gss_import_sec_context
 418         (
 419                 void *,                 /* dummy context */
 420                 OM_uint32 *,            /* minor_status */
 421                 gss_buffer_t,           /* interprocess_token */
 422                 gss_ctx_id_t *          /* context_handle */
 423         /* */);
 424 
 425 #if 0
 426 OM_uint32 dummy_gss_release_oid
 427         (
 428                 OM_uint32 *,            /* minor_status */
 429                 gss_OID *               /* oid */
 430         /* */);
 431 #endif
 432 
 433 OM_uint32 dummy_gss_internal_release_oid
 434         (
 435                 void *,                 /* dummy context  */
 436                 OM_uint32 *,            /* minor_status */
 437                 gss_OID *               /* oid */
 438         /* */);
 439 
 440 OM_uint32 dummy_gss_inquire_names_for_mech
 441         (
 442                 void *,         /* dummy context */
 443                 OM_uint32 *,            /* minor_status */
 444                 gss_OID,                /* mechanism */
 445                 gss_OID_set *           /* name_types */
 446         /* */);
 447 
 448 OM_uint32 dummy_pname_to_uid
 449         (
 450                 void *,                 /* dummy context */
 451                 OM_uint32 *,            /* minor status */
 452                 const gss_name_t,       /* pname */
 453                 uid_t *                 /* uidOut */
 454         /* */);
 455 
 456 
 457 #ifdef  __cplusplus
 458 }
 459 #endif
 460 
 461 #endif /* _GSSAPIP_DUMMY_H */