98 gss_ctx_id_t, /* context_handle */
99 OM_uint32* /* time_rec */
100 );
101
102 static OM_uint32 k5glue_sign
103 (void *, OM_uint32*, /* minor_status */
104 gss_ctx_id_t, /* context_handle */
105 int, /* qop_req */
106 gss_buffer_t, /* message_buffer */
107 gss_buffer_t /* message_token */
108 );
109
110 static OM_uint32 k5glue_verify
111 (void *, OM_uint32*, /* minor_status */
112 gss_ctx_id_t, /* context_handle */
113 gss_buffer_t, /* message_buffer */
114 gss_buffer_t, /* token_buffer */
115 int* /* qop_state */
116 );
117
118 /* EXPORT DELETE START */
119 static OM_uint32 k5glue_seal
120 (void *, OM_uint32*, /* minor_status */
121 gss_ctx_id_t, /* context_handle */
122 int, /* conf_req_flag */
123 int, /* qop_req */
124 gss_buffer_t, /* input_message_buffer */
125 int*, /* conf_state */
126 gss_buffer_t /* output_message_buffer */
127 );
128
129 static OM_uint32 k5glue_unseal
130 (void *, OM_uint32*, /* minor_status */
131 gss_ctx_id_t, /* context_handle */
132 gss_buffer_t, /* input_message_buffer */
133 gss_buffer_t, /* output_message_buffer */
134 int*, /* conf_state */
135 int* /* qop_state */
136 );
137 /* EXPORT DELETE END */
138
139 static OM_uint32 k5glue_display_status
140 (void *, OM_uint32*, /* minor_status */
141 OM_uint32, /* status_value */
142 int, /* status_type */
143 gss_OID, /* mech_type */
144 OM_uint32*, /* message_context */
145 gss_buffer_t /* status_string */
146 );
147
148 static OM_uint32 k5glue_indicate_mechs
149 (void *, OM_uint32*, /* minor_status */
150 gss_OID_set* /* mech_set */
151 );
152
153 static OM_uint32 k5glue_compare_name
154 (void *, OM_uint32*, /* minor_status */
155 gss_name_t, /* name1 */
156 gss_name_t, /* name2 */
157 int* /* name_equal */
392 * The krb5 mechanism provides two mech OIDs; use this initializer to
393 * ensure that both dispatch tables contain identical function
394 * pointers.
395 */
396 #define KRB5_GSS_CONFIG_INIT \
397 NULL, \
398 ...
399 #endif
400
401
402 static struct gss_config krb5_mechanism = {
403 #if 0 /* Solaris Kerberos */
404 100, "kerberos_v5",
405 #endif
406 { GSS_MECH_KRB5_OID_LENGTH, GSS_MECH_KRB5_OID },
407 NULL,
408 k5glue_acquire_cred,
409 k5glue_release_cred,
410 k5glue_init_sec_context,
411 k5glue_accept_sec_context,
412 /* EXPORT DELETE START */ /* CRYPT DELETE START */
413 k5glue_unseal,
414 /* EXPORT DELETE END */ /* CRYPT DELETE END */
415 k5glue_process_context_token,
416 k5glue_delete_sec_context,
417 k5glue_context_time,
418 k5glue_display_status,
419 k5glue_indicate_mechs,
420 k5glue_compare_name,
421 k5glue_display_name,
422 k5glue_import_name,
423 k5glue_release_name,
424 k5glue_inquire_cred,
425 k5glue_add_cred,
426 /* EXPORT DELETE START */ /* CRYPT DELETE START */
427 k5glue_seal,
428 /* EXPORT DELETE END */ /* CRYPT DELETE END */
429 k5glue_export_sec_context,
430 k5glue_import_sec_context,
431 k5glue_inquire_cred_by_mech,
432 k5glue_inquire_names_for_mech,
433 k5glue_inquire_context,
434 k5glue_internal_release_oid,
435 k5glue_wrap_size_limit,
436 k5glue_pname_to_uid,
437 k5glue_userok,
438 k5glue_export_name,
439 /* EXPORT DELETE START */
440 /* CRYPT DELETE START */
441 #if 0
442 /* CRYPT DELETE END */
443 k5glue_seal,
444 k5glue_unseal,
445 /* CRYPT DELETE START */
446 #endif
447 /* CRYPT DELETE END */
448 /* EXPORT DELETE END */
449 k5glue_sign,
450 k5glue_verify,
451 k5glue_store_cred,
452 krb5_gss_inquire_sec_context_by_oid
453 };
454
455 static struct gss_config krb5_mechanism_old = {
456 #if 0 /* Solaris Kerberos */
457 200, "kerberos_v5 (pre-RFC OID)",
458 #endif
459 { GSS_MECH_KRB5_OLD_OID_LENGTH, GSS_MECH_KRB5_OLD_OID },
460 NULL,
461 k5glue_acquire_cred,
462 k5glue_release_cred,
463 k5glue_init_sec_context,
464 k5glue_accept_sec_context,
465 /* EXPORT DELETE START */ /* CRYPT DELETE START */
466 k5glue_unseal,
467 /* EXPORT DELETE END */ /* CRYPT DELETE END */
468 k5glue_process_context_token,
469 k5glue_delete_sec_context,
470 k5glue_context_time,
471 k5glue_display_status,
472 k5glue_indicate_mechs,
473 k5glue_compare_name,
474 k5glue_display_name,
475 k5glue_import_name,
476 k5glue_release_name,
477 k5glue_inquire_cred,
478 k5glue_add_cred,
479 /* EXPORT DELETE START */ /* CRYPT DELETE START */
480 k5glue_seal,
481 /* EXPORT DELETE END */ /* CRYPT DELETE END */
482 k5glue_export_sec_context,
483 k5glue_import_sec_context,
484 k5glue_inquire_cred_by_mech,
485 k5glue_inquire_names_for_mech,
486 k5glue_inquire_context,
487 k5glue_internal_release_oid,
488 k5glue_wrap_size_limit,
489 k5glue_pname_to_uid,
490 k5glue_userok,
491 k5glue_export_name,
492 /* EXPORT DELETE START */
493 /* CRYPT DELETE START */
494 #if 0
495 /* CRYPT DELETE END */
496 k5glue_seal,
497 k5glue_unseal,
498 /* CRYPT DELETE START */
499 #endif
500 /* CRYPT DELETE END */
501 /* EXPORT DELETE END */
502 k5glue_sign,
503 k5glue_verify,
504 k5glue_store_cred,
505 krb5_gss_inquire_sec_context_by_oid
506 };
507
508 static struct gss_config krb5_mechanism_wrong = {
509 #if 0 /* Solaris Kerberos */
510 300, "kerberos_v5 (wrong OID)",
511 #endif
512 { GSS_MECH_KRB5_WRONG_OID_LENGTH, GSS_MECH_KRB5_WRONG_OID },
513 NULL,
514 k5glue_acquire_cred,
515 k5glue_release_cred,
516 k5glue_init_sec_context,
517 k5glue_accept_sec_context,
518 /* EXPORT DELETE START */ /* CRYPT DELETE START */
519 k5glue_unseal,
520 /* EXPORT DELETE END */ /* CRYPT DELETE END */
521 k5glue_process_context_token,
522 k5glue_delete_sec_context,
523 k5glue_context_time,
524 k5glue_display_status,
525 k5glue_indicate_mechs,
526 k5glue_compare_name,
527 k5glue_display_name,
528 k5glue_import_name,
529 k5glue_release_name,
530 k5glue_inquire_cred,
531 k5glue_add_cred,
532 /* EXPORT DELETE START */ /* CRYPT DELETE START */
533 k5glue_seal,
534 /* EXPORT DELETE END */ /* CRYPT DELETE END */
535 k5glue_export_sec_context,
536 k5glue_import_sec_context,
537 k5glue_inquire_cred_by_mech,
538 k5glue_inquire_names_for_mech,
539 k5glue_inquire_context,
540 k5glue_internal_release_oid,
541 k5glue_wrap_size_limit,
542 k5glue_pname_to_uid,
543 k5glue_userok,
544 k5glue_export_name,
545 /* EXPORT DELETE START */
546 /* CRYPT DELETE START */
547 #if 0
548 /* CRYPT DELETE END */
549 k5glue_seal,
550 k5glue_unseal,
551 /* CRYPT DELETE START */
552 #endif
553 /* CRYPT DELETE END */
554 /* EXPORT DELETE END */
555 k5glue_sign,
556 k5glue_verify,
557 k5glue_store_cred,
558 krb5_gss_inquire_sec_context_by_oid
559 };
560
561 static gss_mechanism krb5_mech_configs[] = {
562 &krb5_mechanism, &krb5_mechanism_old, &krb5_mechanism_wrong, NULL
563 };
564
565 #ifdef MS_BUG_TEST
566 static gss_mechanism krb5_mech_configs_hack[] = {
567 &krb5_mechanism, &krb5_mechanism_old, NULL
568 };
569 #endif
570
571 #if 1
572 #define gssint_get_mech_configs krb5_gss_get_mech_configs
573 #endif
574
976 static OM_uint32
977 k5glue_internal_release_oid(ctx, minor_status, oid)
978 void *ctx;
979 OM_uint32 *minor_status;
980 gss_OID *oid;
981 {
982 return(krb5_gss_internal_release_oid(minor_status, oid));
983 }
984
985 #if 0
986 static OM_uint32
987 k5glue_release_oid_set(ctx, minor_status, set)
988 void *ctx;
989 OM_uint32 * minor_status;
990 gss_OID_set *set;
991 {
992 return(generic_gss_release_oid_set(minor_status, set));
993 }
994 #endif
995
996 /* EXPORT DELETE START */
997 /* V1 only */
998 static OM_uint32
999 k5glue_seal(ctx, minor_status, context_handle, conf_req_flag, qop_req,
1000 input_message_buffer, conf_state, output_message_buffer)
1001 void *ctx;
1002 OM_uint32 *minor_status;
1003 gss_ctx_id_t context_handle;
1004 int conf_req_flag;
1005 int qop_req;
1006 gss_buffer_t input_message_buffer;
1007 int *conf_state;
1008 gss_buffer_t output_message_buffer;
1009 {
1010 return(krb5_gss_seal(minor_status, context_handle,
1011 conf_req_flag, qop_req, input_message_buffer,
1012 conf_state, output_message_buffer));
1013 }
1014 /* EXPORT DELETE END */
1015
1016 static OM_uint32
1017 k5glue_sign(ctx, minor_status, context_handle,
1018 qop_req, message_buffer,
1019 message_token)
1020 void *ctx;
1021 OM_uint32 *minor_status;
1022 gss_ctx_id_t context_handle;
1023 int qop_req;
1024 gss_buffer_t message_buffer;
1025 gss_buffer_t message_token;
1026 {
1027 return(krb5_gss_sign(minor_status, context_handle,
1028 qop_req, message_buffer, message_token));
1029 }
1030
1031 #if 0
1032 /* V2 */
1033 static OM_uint32
1034 k5glue_verify_mic(ctx, minor_status, context_handle,
1070 gss_buffer_t oid_str;
1071 gss_OID *oid;
1072 {
1073 return(generic_gss_str_to_oid(minor_status, oid_str, oid));
1074 }
1075
1076 /* V2 */
1077 static OM_uint32
1078 k5glue_test_oid_set_member(ctx, minor_status, member, set, present)
1079 void *ctx;
1080 OM_uint32 *minor_status;
1081 gss_OID member;
1082 gss_OID_set set;
1083 int *present;
1084 {
1085 return(generic_gss_test_oid_set_member(minor_status, member, set,
1086 present));
1087 }
1088 #endif
1089
1090 /* EXPORT DELETE START */
1091 /* V1 only */
1092 static OM_uint32
1093 k5glue_unseal(ctx, minor_status, context_handle, input_message_buffer,
1094 output_message_buffer, conf_state, qop_state)
1095 void *ctx;
1096 OM_uint32 *minor_status;
1097 gss_ctx_id_t context_handle;
1098 gss_buffer_t input_message_buffer;
1099 gss_buffer_t output_message_buffer;
1100 int *conf_state;
1101 int *qop_state;
1102 {
1103 return(krb5_gss_unseal(minor_status, context_handle,
1104 input_message_buffer, output_message_buffer,
1105 conf_state, qop_state));
1106 }
1107 /* EXPORT DELETE END */
1108
1109 #if 0
1110 /* V2 */
1111 static OM_uint32
1112 k5glue_unwrap(ctx, minor_status, context_handle, input_message_buffer,
1113 output_message_buffer, conf_state, qop_state)
1114 void *ctx;
1115 OM_uint32 *minor_status;
1116 gss_ctx_id_t context_handle;
1117 gss_buffer_t input_message_buffer;
1118 gss_buffer_t output_message_buffer;
1119 int *conf_state;
1120 gss_qop_t *qop_state;
1121 {
1122 return(krb5_gss_unwrap(minor_status, context_handle, input_message_buffer,
1123 output_message_buffer, conf_state, qop_state));
1124 }
1125 #endif
1126
1127 /* V1 only */
|
98 gss_ctx_id_t, /* context_handle */
99 OM_uint32* /* time_rec */
100 );
101
102 static OM_uint32 k5glue_sign
103 (void *, OM_uint32*, /* minor_status */
104 gss_ctx_id_t, /* context_handle */
105 int, /* qop_req */
106 gss_buffer_t, /* message_buffer */
107 gss_buffer_t /* message_token */
108 );
109
110 static OM_uint32 k5glue_verify
111 (void *, OM_uint32*, /* minor_status */
112 gss_ctx_id_t, /* context_handle */
113 gss_buffer_t, /* message_buffer */
114 gss_buffer_t, /* token_buffer */
115 int* /* qop_state */
116 );
117
118 static OM_uint32 k5glue_seal
119 (void *, OM_uint32*, /* minor_status */
120 gss_ctx_id_t, /* context_handle */
121 int, /* conf_req_flag */
122 int, /* qop_req */
123 gss_buffer_t, /* input_message_buffer */
124 int*, /* conf_state */
125 gss_buffer_t /* output_message_buffer */
126 );
127
128 static OM_uint32 k5glue_unseal
129 (void *, OM_uint32*, /* minor_status */
130 gss_ctx_id_t, /* context_handle */
131 gss_buffer_t, /* input_message_buffer */
132 gss_buffer_t, /* output_message_buffer */
133 int*, /* conf_state */
134 int* /* qop_state */
135 );
136
137 static OM_uint32 k5glue_display_status
138 (void *, OM_uint32*, /* minor_status */
139 OM_uint32, /* status_value */
140 int, /* status_type */
141 gss_OID, /* mech_type */
142 OM_uint32*, /* message_context */
143 gss_buffer_t /* status_string */
144 );
145
146 static OM_uint32 k5glue_indicate_mechs
147 (void *, OM_uint32*, /* minor_status */
148 gss_OID_set* /* mech_set */
149 );
150
151 static OM_uint32 k5glue_compare_name
152 (void *, OM_uint32*, /* minor_status */
153 gss_name_t, /* name1 */
154 gss_name_t, /* name2 */
155 int* /* name_equal */
390 * The krb5 mechanism provides two mech OIDs; use this initializer to
391 * ensure that both dispatch tables contain identical function
392 * pointers.
393 */
394 #define KRB5_GSS_CONFIG_INIT \
395 NULL, \
396 ...
397 #endif
398
399
400 static struct gss_config krb5_mechanism = {
401 #if 0 /* Solaris Kerberos */
402 100, "kerberos_v5",
403 #endif
404 { GSS_MECH_KRB5_OID_LENGTH, GSS_MECH_KRB5_OID },
405 NULL,
406 k5glue_acquire_cred,
407 k5glue_release_cred,
408 k5glue_init_sec_context,
409 k5glue_accept_sec_context,
410 k5glue_unseal,
411 k5glue_process_context_token,
412 k5glue_delete_sec_context,
413 k5glue_context_time,
414 k5glue_display_status,
415 k5glue_indicate_mechs,
416 k5glue_compare_name,
417 k5glue_display_name,
418 k5glue_import_name,
419 k5glue_release_name,
420 k5glue_inquire_cred,
421 k5glue_add_cred,
422 k5glue_seal,
423 k5glue_export_sec_context,
424 k5glue_import_sec_context,
425 k5glue_inquire_cred_by_mech,
426 k5glue_inquire_names_for_mech,
427 k5glue_inquire_context,
428 k5glue_internal_release_oid,
429 k5glue_wrap_size_limit,
430 k5glue_pname_to_uid,
431 k5glue_userok,
432 k5glue_export_name,
433 k5glue_sign,
434 k5glue_verify,
435 k5glue_store_cred,
436 krb5_gss_inquire_sec_context_by_oid
437 };
438
439 static struct gss_config krb5_mechanism_old = {
440 #if 0 /* Solaris Kerberos */
441 200, "kerberos_v5 (pre-RFC OID)",
442 #endif
443 { GSS_MECH_KRB5_OLD_OID_LENGTH, GSS_MECH_KRB5_OLD_OID },
444 NULL,
445 k5glue_acquire_cred,
446 k5glue_release_cred,
447 k5glue_init_sec_context,
448 k5glue_accept_sec_context,
449 k5glue_unseal,
450 k5glue_process_context_token,
451 k5glue_delete_sec_context,
452 k5glue_context_time,
453 k5glue_display_status,
454 k5glue_indicate_mechs,
455 k5glue_compare_name,
456 k5glue_display_name,
457 k5glue_import_name,
458 k5glue_release_name,
459 k5glue_inquire_cred,
460 k5glue_add_cred,
461 k5glue_seal,
462 k5glue_export_sec_context,
463 k5glue_import_sec_context,
464 k5glue_inquire_cred_by_mech,
465 k5glue_inquire_names_for_mech,
466 k5glue_inquire_context,
467 k5glue_internal_release_oid,
468 k5glue_wrap_size_limit,
469 k5glue_pname_to_uid,
470 k5glue_userok,
471 k5glue_export_name,
472 k5glue_sign,
473 k5glue_verify,
474 k5glue_store_cred,
475 krb5_gss_inquire_sec_context_by_oid
476 };
477
478 static struct gss_config krb5_mechanism_wrong = {
479 #if 0 /* Solaris Kerberos */
480 300, "kerberos_v5 (wrong OID)",
481 #endif
482 { GSS_MECH_KRB5_WRONG_OID_LENGTH, GSS_MECH_KRB5_WRONG_OID },
483 NULL,
484 k5glue_acquire_cred,
485 k5glue_release_cred,
486 k5glue_init_sec_context,
487 k5glue_accept_sec_context,
488 k5glue_unseal,
489 k5glue_process_context_token,
490 k5glue_delete_sec_context,
491 k5glue_context_time,
492 k5glue_display_status,
493 k5glue_indicate_mechs,
494 k5glue_compare_name,
495 k5glue_display_name,
496 k5glue_import_name,
497 k5glue_release_name,
498 k5glue_inquire_cred,
499 k5glue_add_cred,
500 k5glue_seal,
501 k5glue_export_sec_context,
502 k5glue_import_sec_context,
503 k5glue_inquire_cred_by_mech,
504 k5glue_inquire_names_for_mech,
505 k5glue_inquire_context,
506 k5glue_internal_release_oid,
507 k5glue_wrap_size_limit,
508 k5glue_pname_to_uid,
509 k5glue_userok,
510 k5glue_export_name,
511 k5glue_sign,
512 k5glue_verify,
513 k5glue_store_cred,
514 krb5_gss_inquire_sec_context_by_oid
515 };
516
517 static gss_mechanism krb5_mech_configs[] = {
518 &krb5_mechanism, &krb5_mechanism_old, &krb5_mechanism_wrong, NULL
519 };
520
521 #ifdef MS_BUG_TEST
522 static gss_mechanism krb5_mech_configs_hack[] = {
523 &krb5_mechanism, &krb5_mechanism_old, NULL
524 };
525 #endif
526
527 #if 1
528 #define gssint_get_mech_configs krb5_gss_get_mech_configs
529 #endif
530
932 static OM_uint32
933 k5glue_internal_release_oid(ctx, minor_status, oid)
934 void *ctx;
935 OM_uint32 *minor_status;
936 gss_OID *oid;
937 {
938 return(krb5_gss_internal_release_oid(minor_status, oid));
939 }
940
941 #if 0
942 static OM_uint32
943 k5glue_release_oid_set(ctx, minor_status, set)
944 void *ctx;
945 OM_uint32 * minor_status;
946 gss_OID_set *set;
947 {
948 return(generic_gss_release_oid_set(minor_status, set));
949 }
950 #endif
951
952 /* V1 only */
953 static OM_uint32
954 k5glue_seal(ctx, minor_status, context_handle, conf_req_flag, qop_req,
955 input_message_buffer, conf_state, output_message_buffer)
956 void *ctx;
957 OM_uint32 *minor_status;
958 gss_ctx_id_t context_handle;
959 int conf_req_flag;
960 int qop_req;
961 gss_buffer_t input_message_buffer;
962 int *conf_state;
963 gss_buffer_t output_message_buffer;
964 {
965 return(krb5_gss_seal(minor_status, context_handle,
966 conf_req_flag, qop_req, input_message_buffer,
967 conf_state, output_message_buffer));
968 }
969
970 static OM_uint32
971 k5glue_sign(ctx, minor_status, context_handle,
972 qop_req, message_buffer,
973 message_token)
974 void *ctx;
975 OM_uint32 *minor_status;
976 gss_ctx_id_t context_handle;
977 int qop_req;
978 gss_buffer_t message_buffer;
979 gss_buffer_t message_token;
980 {
981 return(krb5_gss_sign(minor_status, context_handle,
982 qop_req, message_buffer, message_token));
983 }
984
985 #if 0
986 /* V2 */
987 static OM_uint32
988 k5glue_verify_mic(ctx, minor_status, context_handle,
1024 gss_buffer_t oid_str;
1025 gss_OID *oid;
1026 {
1027 return(generic_gss_str_to_oid(minor_status, oid_str, oid));
1028 }
1029
1030 /* V2 */
1031 static OM_uint32
1032 k5glue_test_oid_set_member(ctx, minor_status, member, set, present)
1033 void *ctx;
1034 OM_uint32 *minor_status;
1035 gss_OID member;
1036 gss_OID_set set;
1037 int *present;
1038 {
1039 return(generic_gss_test_oid_set_member(minor_status, member, set,
1040 present));
1041 }
1042 #endif
1043
1044 /* V1 only */
1045 static OM_uint32
1046 k5glue_unseal(ctx, minor_status, context_handle, input_message_buffer,
1047 output_message_buffer, conf_state, qop_state)
1048 void *ctx;
1049 OM_uint32 *minor_status;
1050 gss_ctx_id_t context_handle;
1051 gss_buffer_t input_message_buffer;
1052 gss_buffer_t output_message_buffer;
1053 int *conf_state;
1054 int *qop_state;
1055 {
1056 return(krb5_gss_unseal(minor_status, context_handle,
1057 input_message_buffer, output_message_buffer,
1058 conf_state, qop_state));
1059 }
1060
1061 #if 0
1062 /* V2 */
1063 static OM_uint32
1064 k5glue_unwrap(ctx, minor_status, context_handle, input_message_buffer,
1065 output_message_buffer, conf_state, qop_state)
1066 void *ctx;
1067 OM_uint32 *minor_status;
1068 gss_ctx_id_t context_handle;
1069 gss_buffer_t input_message_buffer;
1070 gss_buffer_t output_message_buffer;
1071 int *conf_state;
1072 gss_qop_t *qop_state;
1073 {
1074 return(krb5_gss_unwrap(minor_status, context_handle, input_message_buffer,
1075 output_message_buffer, conf_state, qop_state));
1076 }
1077 #endif
1078
1079 /* V1 only */
|