1 #include "ppport.h"
2 GSSAPI::OID_out
3 new(class)
4 	char *		class
5     CODE:
6 	RETVAL = NULL;
7     OUTPUT:
8 	RETVAL
9 
10 void
11 DESTROY(oid)
12 	GSSAPI::OID	oid
13     PREINIT:
14 	OM_uint32	minor;
15     PPCODE:
16 #if !defined(HEIMDAL)
17 	if (oid != NULL &&
18 	    oid != __KRB5_MECHTYPE_OID &&
19 	    oid != __KRB5_OLD_MECHTYPE_OID &&
20 	    oid != __GSS_KRB5_NT_USER_NAME &&
21 	    oid != __GSS_KRB5_NT_PRINCIPAL_NAME &&
22 	    oid != __SPNEGO_MECHTYPE_OID &&
23 	    oid != __gss_mech_krb5_v2  ) {
24 	    (void)gss_release_oid(&minor, &oid);
25 	}
26 #endif
27 #if defined(HEIMDAL)
28 #    warn("gss_release_oid is unsupported and not Part of the API!");
29 #endif
30 
31 GSSAPI::Status
32 from_str(class, oid, str)
33 	char *		class
34 	GSSAPI::OID_out	oid
35 	gss_buffer_str	str
36     CODE:
37 #if !defined(HEIMDAL)
38 	RETVAL.major = gss_str_to_oid(&RETVAL.minor, &str, &oid);
39 #endif
40 #if defined(HEIMDAL)
41 	croak("gss_str_to_oid() is not defined in Heimdal API!");
42 #endif
43     OUTPUT:
44 	RETVAL
45 	oid
46 
47 GSSAPI::Status
48 to_str(oid, str)
49 	GSSAPI::OID		oid
50 	gss_oidstr_out	str
51     CODE:
52 	if (oid == NULL) {
53 	    sv_setsv_mg(ST(1), &PL_sv_undef);
54 	    XSRETURN_UNDEF;
55 	}
56 #if !defined(HEIMDAL)
57 	RETVAL.major = gss_oid_to_str(&RETVAL.minor, oid, &str);
58 #endif
59 #if defined(HEIMDAL)
60 	croak("gss_oid_to_str() is not defined in Heimdal API!");
61 #endif
62     OUTPUT:
63 	RETVAL
64 	str
65 
66 GSSAPI::Status
67 inquire_names(oid, oidset)
68 	GSSAPI::OID		oid
69 	GSSAPI::OID::Set_out	oidset
70     CODE:
71 	RETVAL.major =
72 		gss_inquire_names_for_mech(&RETVAL.minor, oid, &oidset);
73     OUTPUT:
74 	RETVAL
75 	oidset
76 
77 
78 #
79 #	generic OIDs
80 #
81 
82 GSSAPI::OID_const
83 gss_nt_user_name()
84     CODE:
85 	RETVAL = GSS_C_NT_USER_NAME;
86     OUTPUT:
87 	RETVAL
88 
89 GSSAPI::OID_const
90 gss_nt_machine_uid_name()
91     CODE:
92 	RETVAL = GSS_C_NT_MACHINE_UID_NAME;
93     OUTPUT:
94 	RETVAL
95 
96 GSSAPI::OID_const
97 gss_nt_string_uid_name()
98     CODE:
99 	RETVAL =  GSS_C_NT_STRING_UID_NAME;
100     OUTPUT:
101 	RETVAL
102 
103 GSSAPI::OID_const
104 gss_nt_service_name()
105     CODE:
106 	RETVAL = GSS_C_NT_HOSTBASED_SERVICE;
107     OUTPUT:
108 	RETVAL
109 
110 GSSAPI::OID_const
111 gss_nt_exported_name()
112     CODE:
113 	RETVAL = GSS_C_NT_EXPORT_NAME;
114     OUTPUT:
115 	RETVAL
116 
117 GSSAPI::OID_const
118 gss_nt_service_name_v2()
119     CODE:
120 	RETVAL = GSS_C_NT_HOSTBASED_SERVICE;
121     OUTPUT:
122 	RETVAL
123 
124 
125 #
126 #	Kerberos OIDs
127 #
128 
129 GSSAPI::OID_const
130 gss_nt_krb5_name()
131     CODE:
132 	RETVAL = __GSS_KRB5_NT_USER_NAME;
133     OUTPUT:
134 	RETVAL
135 
136 GSSAPI::OID_const
137 gss_nt_krb5_principal()
138     CODE:
139 	RETVAL = __GSS_KRB5_NT_PRINCIPAL_NAME;
140     OUTPUT:
141 	RETVAL
142 
143 GSSAPI::OID_const
144 gss_mech_krb5()
145     CODE:
146 	RETVAL = __KRB5_MECHTYPE_OID;
147     OUTPUT:
148 	RETVAL
149 
150 GSSAPI::OID_const
151 gss_mech_spnego()
152     CODE:
153 	RETVAL = __SPNEGO_MECHTYPE_OID;
154     OUTPUT:
155 	RETVAL
156 
157 GSSAPI::OID_const
158 gss_mech_krb5_old()
159     CODE:
160 	RETVAL = __KRB5_OLD_MECHTYPE_OID;
161     OUTPUT:
162 	RETVAL
163 
164 GSSAPI::OID_const
165 gss_mech_krb5_v2()
166     CODE:
167 	RETVAL = __gss_mech_krb5_v2;
168     OUTPUT:
169 	RETVAL
170 
171 GSSAPI::OID_const
172 gss_nt_hostbased_service()
173      CODE:
174         RETVAL = GSS_C_NT_HOSTBASED_SERVICE;
175      OUTPUT:
176         RETVAL
177