Lines Matching refs:ctx
50 ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) in ssh_gssapi_check_oid() argument
52 return (ctx != NULL && ctx->oid != GSS_C_NO_OID && in ssh_gssapi_check_oid()
53 ctx->oid->length == len && in ssh_gssapi_check_oid()
54 memcmp(ctx->oid->elements, data, len) == 0); in ssh_gssapi_check_oid()
59 ssh_gssapi_set_oid_data(Gssctxt *ctx, void *data, size_t len) in ssh_gssapi_set_oid_data() argument
61 if (ctx->oid != GSS_C_NO_OID) { in ssh_gssapi_set_oid_data()
62 xfree(ctx->oid->elements); in ssh_gssapi_set_oid_data()
63 xfree(ctx->oid); in ssh_gssapi_set_oid_data()
65 ctx->oid = xmalloc(sizeof(gss_OID_desc)); in ssh_gssapi_set_oid_data()
66 ctx->oid->length = len; in ssh_gssapi_set_oid_data()
67 ctx->oid->elements = xmalloc(len); in ssh_gssapi_set_oid_data()
68 memcpy(ctx->oid->elements, data, len); in ssh_gssapi_set_oid_data()
73 ssh_gssapi_set_oid(Gssctxt *ctx, gss_OID oid) in ssh_gssapi_set_oid() argument
75 ssh_gssapi_set_oid_data(ctx, oid->elements, oid->length); in ssh_gssapi_set_oid()
95 OM_uint32 ctx; in ssh_gssapi_last_error() local
106 ctx = 0; in ssh_gssapi_last_error()
110 GSS_C_GSS_CODE, ctxt->oid, &ctx, &msg); in ssh_gssapi_last_error()
116 } while (ctx != 0); in ssh_gssapi_last_error()
121 GSS_C_MECH_CODE, ctxt->oid, &ctx, &msg); in ssh_gssapi_last_error()
127 } while (ctx != 0); in ssh_gssapi_last_error()
143 ssh_gssapi_build_ctx(Gssctxt **ctx) in ssh_gssapi_build_ctx() argument
145 *ctx = xcalloc(1, sizeof (Gssctxt)); in ssh_gssapi_build_ctx()
146 (*ctx)->context = GSS_C_NO_CONTEXT; in ssh_gssapi_build_ctx()
147 (*ctx)->name = GSS_C_NO_NAME; in ssh_gssapi_build_ctx()
148 (*ctx)->oid = GSS_C_NO_OID; in ssh_gssapi_build_ctx()
149 (*ctx)->creds = GSS_C_NO_CREDENTIAL; in ssh_gssapi_build_ctx()
150 (*ctx)->client = GSS_C_NO_NAME; in ssh_gssapi_build_ctx()
151 (*ctx)->client_creds = GSS_C_NO_CREDENTIAL; in ssh_gssapi_build_ctx()
156 ssh_gssapi_delete_ctx(Gssctxt **ctx) in ssh_gssapi_delete_ctx() argument
160 if ((*ctx) == NULL) in ssh_gssapi_delete_ctx()
162 if ((*ctx)->context != GSS_C_NO_CONTEXT) in ssh_gssapi_delete_ctx()
163 gss_delete_sec_context(&ms, &(*ctx)->context, GSS_C_NO_BUFFER); in ssh_gssapi_delete_ctx()
164 if ((*ctx)->name != GSS_C_NO_NAME) in ssh_gssapi_delete_ctx()
165 gss_release_name(&ms, &(*ctx)->name); in ssh_gssapi_delete_ctx()
166 if ((*ctx)->oid != GSS_C_NO_OID) { in ssh_gssapi_delete_ctx()
167 xfree((*ctx)->oid->elements); in ssh_gssapi_delete_ctx()
168 xfree((*ctx)->oid); in ssh_gssapi_delete_ctx()
169 (*ctx)->oid = GSS_C_NO_OID; in ssh_gssapi_delete_ctx()
171 if ((*ctx)->creds != GSS_C_NO_CREDENTIAL) in ssh_gssapi_delete_ctx()
172 gss_release_cred(&ms, &(*ctx)->creds); in ssh_gssapi_delete_ctx()
173 if ((*ctx)->client != GSS_C_NO_NAME) in ssh_gssapi_delete_ctx()
174 gss_release_name(&ms, &(*ctx)->client); in ssh_gssapi_delete_ctx()
175 if ((*ctx)->client_creds != GSS_C_NO_CREDENTIAL) in ssh_gssapi_delete_ctx()
176 gss_release_cred(&ms, &(*ctx)->client_creds); in ssh_gssapi_delete_ctx()
178 xfree(*ctx); in ssh_gssapi_delete_ctx()
179 *ctx = NULL; in ssh_gssapi_delete_ctx()
189 ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok, in ssh_gssapi_init_ctx() argument
199 ctx->major = gss_init_sec_context(&ctx->minor, in ssh_gssapi_init_ctx()
200 GSS_C_NO_CREDENTIAL, &ctx->context, ctx->name, ctx->oid, in ssh_gssapi_init_ctx()
204 if (GSS_ERROR(ctx->major)) in ssh_gssapi_init_ctx()
205 ssh_gssapi_error(ctx); in ssh_gssapi_init_ctx()
207 return (ctx->major); in ssh_gssapi_init_ctx()
212 ssh_gssapi_import_name(Gssctxt *ctx, const char *host) in ssh_gssapi_import_name() argument
221 if ((ctx->major = gss_import_name(&ctx->minor, in ssh_gssapi_import_name()
222 &gssbuf, GSS_C_NT_HOSTBASED_SERVICE, &ctx->name))) in ssh_gssapi_import_name()
223 ssh_gssapi_error(ctx); in ssh_gssapi_import_name()
226 return (ctx->major); in ssh_gssapi_import_name()
230 ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) in ssh_gssapi_sign() argument
232 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, in ssh_gssapi_sign()
234 ssh_gssapi_error(ctx); in ssh_gssapi_sign()
236 return (ctx->major); in ssh_gssapi_sign()
252 ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) in ssh_gssapi_check_mechanism() argument
263 ssh_gssapi_build_ctx(ctx); in ssh_gssapi_check_mechanism()
264 ssh_gssapi_set_oid(*ctx, oid); in ssh_gssapi_check_mechanism()
265 major = ssh_gssapi_import_name(*ctx, host); in ssh_gssapi_check_mechanism()
267 major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token, in ssh_gssapi_check_mechanism()
270 if ((*ctx)->context != GSS_C_NO_CONTEXT) in ssh_gssapi_check_mechanism()
271 gss_delete_sec_context(&minor, &(*ctx)->context, in ssh_gssapi_check_mechanism()
276 ssh_gssapi_delete_ctx(ctx); in ssh_gssapi_check_mechanism()