Print this page
first pass


  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 #pragma ident   "%Z%%M% %I%     %E% SMI"
  22 
  23 /*
  24  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  25  * Use is subject to license terms.
  26  *
  27  * A module that implements a dummy security mechanism.
  28  * It's mainly used to test GSS-API application. Multiple tokens
  29  * exchanged during security context establishment can be
  30  * specified through dummy_mech.conf located in /etc.
  31  *
  32  */
  33 /* EXPORT DELETE START */ /* CRYPT DELETE START */
  34 #ifndef lint
  35 #define dummy_gss_accept_sec_context \
  36                 dummy_867227349
  37 #define dummy_gss_acquire_cred \
  38                 dummy_352458907
  39 #define dummy_gss_add_cred \
  40                 dummy_911432290
  41 #define dummy_gss_compare_name \
  42                 dummy_396663848
  43 #define dummy_gss_context_time \
  44                 dummy_955669998
  45 #define dummy_gss_delete_sec_context \
  46                 dummy_440868788
  47 #define dummy_gss_display_name \
  48                 dummy_999874939
  49 #define dummy_gss_display_status \
  50                 dummy_485073729
  51 #define dummy_gss_export_sec_context \
  52                 dummy_1044079879
  53 #define dummy_gss_import_name \


  70                 dummy_706163968
  71 #define dummy_gss_process_context_token \
  72                 dummy_191395526
  73 #define dummy_gss_release_cred \
  74                 dummy_750368909
  75 #define dummy_gss_release_name \
  76                 dummy_235600467
  77 #define dummy_gss_seal \
  78                 dummy_794573849
  79 #define dummy_gss_sign \
  80                 dummy_279838176
  81 #define dummy_gss_unseal \
  82                 dummy_838778790
  83 #define dummy_gss_verify \
  84                 dummy_324010348
  85 #define dummy_gss_wrap_size_limit \
  86                 dummy_882983731
  87 #define dummy_pname_to_uid \
  88                 dummy_345475423
  89 #endif
  90 /* EXPORT DELETE END */ /* CRYPT DELETE END */
  91 
  92 #include <stdio.h>
  93 #include <stdlib.h>
  94 #include <gssapiP_dummy.h>
  95 #include <mechglueP.h>
  96 #include <gssapi_err_generic.h>
  97 
  98 #define dummy_context_name_len  19
  99 /* private routines for dummy_mechanism */
 100 static dummy_token_t make_dummy_token(char *name);
 101 static void free_dummy_token(dummy_token_t *token);
 102 static gss_buffer_desc make_dummy_token_buffer(char *name);
 103 static gss_buffer_desc make_dummy_token_msg(void *data, int datalen);
 104 static int der_length_size(int length);
 105 static void der_write_length(unsigned char ** buf, int length);
 106 static int der_read_length(unsigned char **buf, int *bufsize);
 107 static int g_token_size(gss_OID mech, unsigned int body_size);
 108 static void g_make_token_header(gss_OID mech, int body_size,
 109                                 unsigned char **buf, int tok_type);
 110 static int g_verify_token_header(gss_OID mech, int *body_size,


 112                                 int toksize);
 113 
 114 
 115 /* private global variables */
 116 static char dummy_srcname[] = "dummy source";
 117 static OM_uint32 dummy_flags;
 118 static int token_nums;
 119 
 120 /*
 121  * The Mech OID:
 122  * { iso(1) org(3) internet(6) dod(1) private(4) enterprises(1) sun(42)
 123  *  products(2) gssapi(26) mechtypes(1) dummy(2) }
 124  */
 125 static struct gss_config dummy_mechanism =
 126         {{10, "\053\006\001\004\001\052\002\032\001\002"},
 127         NULL,
 128         dummy_gss_acquire_cred,
 129         dummy_gss_release_cred,
 130         dummy_gss_init_sec_context,
 131         dummy_gss_accept_sec_context,
 132 /* EXPORT DELETE START */ /* CRYPT DELETE START */
 133         dummy_gss_unseal,
 134 /* EXPORT DELETE END */ /* CRYPT DELETE END */
 135         dummy_gss_process_context_token,
 136         dummy_gss_delete_sec_context,
 137         dummy_gss_context_time,
 138         dummy_gss_display_status,
 139         dummy_gss_indicate_mechs,
 140         dummy_gss_compare_name,
 141         dummy_gss_display_name,
 142         dummy_gss_import_name,
 143         dummy_gss_release_name,
 144         dummy_gss_inquire_cred,
 145         dummy_gss_add_cred,
 146 /* EXPORT DELETE START */ /* CRYPT DELETE START */
 147         dummy_gss_seal,
 148 /* EXPORT DELETE END */ /* CRYPT DELETE END */
 149         dummy_gss_export_sec_context,
 150         dummy_gss_import_sec_context,
 151         dummy_gss_inquire_cred_by_mech,
 152         dummy_gss_inquire_names_for_mech,
 153         dummy_gss_inquire_context,
 154         dummy_gss_internal_release_oid,
 155         dummy_gss_wrap_size_limit,
 156         dummy_pname_to_uid,
 157         NULL,   /* __gss_userok */
 158         NULL,   /* _export name */
 159 /* EXPORT DELETE START */
 160 /* CRYPT DELETE START */
 161 #if 0
 162 /* CRYPT DELETE END */
 163         dummy_gss_seal,
 164         dummy_gss_unseal,
 165 /* CRYPT DELETE START */
 166 #endif
 167 /* CRYPT DELETE END */
 168 /* EXPORT DELETE END */
 169         dummy_gss_sign,
 170         dummy_gss_verify,
 171         NULL,   /* _store_cred */
 172 };
 173 
 174 gss_mechanism
 175 gss_mech_initialize(oid)
 176 const gss_OID oid;
 177 {
 178         FILE *fp;
 179 
 180         dprintf("Entering gss_mech_initialize\n");
 181 
 182         if (oid == NULL ||
 183                 !g_OID_equal(oid, &dummy_mechanism.mech_type)) {
 184                 fprintf(stderr, "invalid dummy mechanism oid.\n");
 185                 return (NULL);
 186         }
 187 
 188         fp = fopen("/etc/dummy_mech_token.conf", "rF");




  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 #pragma ident   "%Z%%M% %I%     %E% SMI"
  22 
  23 /*
  24  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  25  * Use is subject to license terms.
  26  *
  27  * A module that implements a dummy security mechanism.
  28  * It's mainly used to test GSS-API application. Multiple tokens
  29  * exchanged during security context establishment can be
  30  * specified through dummy_mech.conf located in /etc.
  31  *
  32  */

  33 #ifndef lint
  34 #define dummy_gss_accept_sec_context \
  35                 dummy_867227349
  36 #define dummy_gss_acquire_cred \
  37                 dummy_352458907
  38 #define dummy_gss_add_cred \
  39                 dummy_911432290
  40 #define dummy_gss_compare_name \
  41                 dummy_396663848
  42 #define dummy_gss_context_time \
  43                 dummy_955669998
  44 #define dummy_gss_delete_sec_context \
  45                 dummy_440868788
  46 #define dummy_gss_display_name \
  47                 dummy_999874939
  48 #define dummy_gss_display_status \
  49                 dummy_485073729
  50 #define dummy_gss_export_sec_context \
  51                 dummy_1044079879
  52 #define dummy_gss_import_name \


  69                 dummy_706163968
  70 #define dummy_gss_process_context_token \
  71                 dummy_191395526
  72 #define dummy_gss_release_cred \
  73                 dummy_750368909
  74 #define dummy_gss_release_name \
  75                 dummy_235600467
  76 #define dummy_gss_seal \
  77                 dummy_794573849
  78 #define dummy_gss_sign \
  79                 dummy_279838176
  80 #define dummy_gss_unseal \
  81                 dummy_838778790
  82 #define dummy_gss_verify \
  83                 dummy_324010348
  84 #define dummy_gss_wrap_size_limit \
  85                 dummy_882983731
  86 #define dummy_pname_to_uid \
  87                 dummy_345475423
  88 #endif

  89 
  90 #include <stdio.h>
  91 #include <stdlib.h>
  92 #include <gssapiP_dummy.h>
  93 #include <mechglueP.h>
  94 #include <gssapi_err_generic.h>
  95 
  96 #define dummy_context_name_len  19
  97 /* private routines for dummy_mechanism */
  98 static dummy_token_t make_dummy_token(char *name);
  99 static void free_dummy_token(dummy_token_t *token);
 100 static gss_buffer_desc make_dummy_token_buffer(char *name);
 101 static gss_buffer_desc make_dummy_token_msg(void *data, int datalen);
 102 static int der_length_size(int length);
 103 static void der_write_length(unsigned char ** buf, int length);
 104 static int der_read_length(unsigned char **buf, int *bufsize);
 105 static int g_token_size(gss_OID mech, unsigned int body_size);
 106 static void g_make_token_header(gss_OID mech, int body_size,
 107                                 unsigned char **buf, int tok_type);
 108 static int g_verify_token_header(gss_OID mech, int *body_size,


 110                                 int toksize);
 111 
 112 
 113 /* private global variables */
 114 static char dummy_srcname[] = "dummy source";
 115 static OM_uint32 dummy_flags;
 116 static int token_nums;
 117 
 118 /*
 119  * The Mech OID:
 120  * { iso(1) org(3) internet(6) dod(1) private(4) enterprises(1) sun(42)
 121  *  products(2) gssapi(26) mechtypes(1) dummy(2) }
 122  */
 123 static struct gss_config dummy_mechanism =
 124         {{10, "\053\006\001\004\001\052\002\032\001\002"},
 125         NULL,
 126         dummy_gss_acquire_cred,
 127         dummy_gss_release_cred,
 128         dummy_gss_init_sec_context,
 129         dummy_gss_accept_sec_context,

 130         dummy_gss_unseal,

 131         dummy_gss_process_context_token,
 132         dummy_gss_delete_sec_context,
 133         dummy_gss_context_time,
 134         dummy_gss_display_status,
 135         dummy_gss_indicate_mechs,
 136         dummy_gss_compare_name,
 137         dummy_gss_display_name,
 138         dummy_gss_import_name,
 139         dummy_gss_release_name,
 140         dummy_gss_inquire_cred,
 141         dummy_gss_add_cred,

 142         dummy_gss_seal,

 143         dummy_gss_export_sec_context,
 144         dummy_gss_import_sec_context,
 145         dummy_gss_inquire_cred_by_mech,
 146         dummy_gss_inquire_names_for_mech,
 147         dummy_gss_inquire_context,
 148         dummy_gss_internal_release_oid,
 149         dummy_gss_wrap_size_limit,
 150         dummy_pname_to_uid,
 151         NULL,   /* __gss_userok */
 152         NULL,   /* _export name */










 153         dummy_gss_sign,
 154         dummy_gss_verify,
 155         NULL,   /* _store_cred */
 156 };
 157 
 158 gss_mechanism
 159 gss_mech_initialize(oid)
 160 const gss_OID oid;
 161 {
 162         FILE *fp;
 163 
 164         dprintf("Entering gss_mech_initialize\n");
 165 
 166         if (oid == NULL ||
 167                 !g_OID_equal(oid, &dummy_mechanism.mech_type)) {
 168                 fprintf(stderr, "invalid dummy mechanism oid.\n");
 169                 return (NULL);
 170         }
 171 
 172         fp = fopen("/etc/dummy_mech_token.conf", "rF");