24 * Use is subject to license terms.
25 */
26
27 #pragma ident "%Z%%M% %I% %E% SMI"
28
29 #include "dh_gssapi.h"
30 #include <stdlib.h>
31
32 /*
33 * gss_config structure for Diffie-Hellman family of mechanisms.
34 * This structure is defined in mechglueP.h and defines the entry points
35 * that libgss uses to call a backend.
36 */
37 static struct gss_config dh_mechanism = {
38 {0, 0}, /* OID for mech type. */
39 0,
40 __dh_gss_acquire_cred,
41 __dh_gss_release_cred,
42 __dh_gss_init_sec_context,
43 __dh_gss_accept_sec_context,
44 /* EXPORT DELETE START */ /* CRYPT DELETE START */
45 __dh_gss_unseal,
46 /* EXPORT DELETE END */ /* CRYPT DELETE END */
47 __dh_gss_process_context_token,
48 __dh_gss_delete_sec_context,
49 __dh_gss_context_time,
50 __dh_gss_display_status,
51 NULL, /* Back ends don't implement this */
52 __dh_gss_compare_name,
53 __dh_gss_display_name,
54 __dh_gss_import_name,
55 __dh_gss_release_name,
56 __dh_gss_inquire_cred,
57 NULL, /* Back ends don't implement this */
58 /* EXPORT DELETE START */ /* CRYPT DELETE START */
59 __dh_gss_seal,
60 /* EXPORT DELETE END */ /* CRYPT DELETE END */
61 __dh_gss_export_sec_context,
62 __dh_gss_import_sec_context,
63 __dh_gss_inquire_cred_by_mech,
64 __dh_gss_inquire_names_for_mech,
65 __dh_gss_inquire_context,
66 __dh_gss_internal_release_oid,
67 __dh_gss_wrap_size_limit,
68 __dh_pname_to_uid,
69 NULL, /* __gss_userok */
70 __dh_gss_export_name,
71 /* EXPORT DELETE START */
72 /* CRYPT DELETE START */
73 /*
74 * This block comment is Sun Proprietary: Need-To-Know.
75 * What we are doing is leaving the seal and unseal entry points
76 * in an obvious place before sign and unsign for the Domestic customer
77 * of the Solaris Source Product. The Domestic customer of the Solaris Source
78 * Product will have to deal with the problem of creating exportable libgss
79 * binaries.
80 * In the binary product that Sun builds, these entry points are elsewhere,
81 * and bracketed with special comments so that the CRYPT_SRC and EXPORT_SRC
82 * targets delete them.
83 */
84 #if 0
85 /* CRYPT DELETE END */
86 __dh_gss_seal,
87 __dh_gss_unseal,
88 /* CRYPT DELETE START */
89 #endif /* 0 */
90 /* CRYPT DELETE END */
91 /* EXPORT DELETE END */
92 __dh_gss_sign,
93 __dh_gss_verify,
94 NULL, /* gss_store_cred() -- DH lacks this for now */
95 };
96
97 /*
98 * __dh_gss_initialize:
99 * Each mechanism in the Diffie-Hellman family of mechanisms calls this
100 * routine passing a pointer to a gss_config structure. This routine will
101 * then check that the mech is not already initialized (If so just return
102 * the mech). It will then assign the entry points that are common to the
103 * mechanism family to the uninitialized mech. After which, it allocate space
104 * for that mechanism's context. It will be up to the caller to fill in
105 * its mechanism OID and fill in the corresponding fields in mechanism
106 * specific context.
107 */
108 gss_mechanism
109 __dh_gss_initialize(gss_mechanism mech)
110 {
111 if (mech->context != NULL)
|
24 * Use is subject to license terms.
25 */
26
27 #pragma ident "%Z%%M% %I% %E% SMI"
28
29 #include "dh_gssapi.h"
30 #include <stdlib.h>
31
32 /*
33 * gss_config structure for Diffie-Hellman family of mechanisms.
34 * This structure is defined in mechglueP.h and defines the entry points
35 * that libgss uses to call a backend.
36 */
37 static struct gss_config dh_mechanism = {
38 {0, 0}, /* OID for mech type. */
39 0,
40 __dh_gss_acquire_cred,
41 __dh_gss_release_cred,
42 __dh_gss_init_sec_context,
43 __dh_gss_accept_sec_context,
44 __dh_gss_unseal,
45 __dh_gss_process_context_token,
46 __dh_gss_delete_sec_context,
47 __dh_gss_context_time,
48 __dh_gss_display_status,
49 NULL, /* Back ends don't implement this */
50 __dh_gss_compare_name,
51 __dh_gss_display_name,
52 __dh_gss_import_name,
53 __dh_gss_release_name,
54 __dh_gss_inquire_cred,
55 NULL, /* Back ends don't implement this */
56 __dh_gss_seal,
57 __dh_gss_export_sec_context,
58 __dh_gss_import_sec_context,
59 __dh_gss_inquire_cred_by_mech,
60 __dh_gss_inquire_names_for_mech,
61 __dh_gss_inquire_context,
62 __dh_gss_internal_release_oid,
63 __dh_gss_wrap_size_limit,
64 __dh_pname_to_uid,
65 NULL, /* __gss_userok */
66 __dh_gss_export_name,
67 __dh_gss_sign,
68 __dh_gss_verify,
69 NULL, /* gss_store_cred() -- DH lacks this for now */
70 };
71
72 /*
73 * __dh_gss_initialize:
74 * Each mechanism in the Diffie-Hellman family of mechanisms calls this
75 * routine passing a pointer to a gss_config structure. This routine will
76 * then check that the mech is not already initialized (If so just return
77 * the mech). It will then assign the entry points that are common to the
78 * mechanism family to the uninitialized mech. After which, it allocate space
79 * for that mechanism's context. It will be up to the caller to fill in
80 * its mechanism OID and fill in the corresponding fields in mechanism
81 * specific context.
82 */
83 gss_mechanism
84 __dh_gss_initialize(gss_mechanism mech)
85 {
86 if (mech->context != NULL)
|