Lines Matching refs:ctx
52 ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) in ssh_gssapi_check_oid() argument
54 return (ctx != NULL && ctx->oid != GSS_C_NO_OID && in ssh_gssapi_check_oid()
55 ctx->oid->length == len && in ssh_gssapi_check_oid()
56 memcmp(ctx->oid->elements, data, len) == 0); in ssh_gssapi_check_oid()
61 ssh_gssapi_set_oid_data(Gssctxt *ctx, void *data, size_t len) in ssh_gssapi_set_oid_data() argument
63 if (ctx->oid != GSS_C_NO_OID) { in ssh_gssapi_set_oid_data()
64 free(ctx->oid->elements); in ssh_gssapi_set_oid_data()
65 free(ctx->oid); in ssh_gssapi_set_oid_data()
67 ctx->oid = xcalloc(1, sizeof(gss_OID_desc)); in ssh_gssapi_set_oid_data()
68 ctx->oid->length = len; in ssh_gssapi_set_oid_data()
69 ctx->oid->elements = xmalloc(len); in ssh_gssapi_set_oid_data()
70 memcpy(ctx->oid->elements, data, len); in ssh_gssapi_set_oid_data()
75 ssh_gssapi_set_oid(Gssctxt *ctx, gss_OID oid) in ssh_gssapi_set_oid() argument
77 ssh_gssapi_set_oid_data(ctx, oid->elements, oid->length); in ssh_gssapi_set_oid()
97 OM_uint32 ctx; in ssh_gssapi_last_error() local
108 ctx = 0; in ssh_gssapi_last_error()
112 GSS_C_GSS_CODE, ctxt->oid, &ctx, &msg); in ssh_gssapi_last_error()
118 } while (ctx != 0); in ssh_gssapi_last_error()
123 GSS_C_MECH_CODE, ctxt->oid, &ctx, &msg); in ssh_gssapi_last_error()
129 } while (ctx != 0); in ssh_gssapi_last_error()
145 ssh_gssapi_build_ctx(Gssctxt **ctx) in ssh_gssapi_build_ctx() argument
147 *ctx = xcalloc(1, sizeof (Gssctxt)); in ssh_gssapi_build_ctx()
148 (*ctx)->context = GSS_C_NO_CONTEXT; in ssh_gssapi_build_ctx()
149 (*ctx)->name = GSS_C_NO_NAME; in ssh_gssapi_build_ctx()
150 (*ctx)->oid = GSS_C_NO_OID; in ssh_gssapi_build_ctx()
151 (*ctx)->creds = GSS_C_NO_CREDENTIAL; in ssh_gssapi_build_ctx()
152 (*ctx)->client = GSS_C_NO_NAME; in ssh_gssapi_build_ctx()
153 (*ctx)->client_creds = GSS_C_NO_CREDENTIAL; in ssh_gssapi_build_ctx()
158 ssh_gssapi_delete_ctx(Gssctxt **ctx) in ssh_gssapi_delete_ctx() argument
162 if ((*ctx) == NULL) in ssh_gssapi_delete_ctx()
164 if ((*ctx)->context != GSS_C_NO_CONTEXT) in ssh_gssapi_delete_ctx()
165 gss_delete_sec_context(&ms, &(*ctx)->context, GSS_C_NO_BUFFER); in ssh_gssapi_delete_ctx()
166 if ((*ctx)->name != GSS_C_NO_NAME) in ssh_gssapi_delete_ctx()
167 gss_release_name(&ms, &(*ctx)->name); in ssh_gssapi_delete_ctx()
168 if ((*ctx)->oid != GSS_C_NO_OID) { in ssh_gssapi_delete_ctx()
169 free((*ctx)->oid->elements); in ssh_gssapi_delete_ctx()
170 free((*ctx)->oid); in ssh_gssapi_delete_ctx()
171 (*ctx)->oid = GSS_C_NO_OID; in ssh_gssapi_delete_ctx()
173 if ((*ctx)->creds != GSS_C_NO_CREDENTIAL) in ssh_gssapi_delete_ctx()
174 gss_release_cred(&ms, &(*ctx)->creds); in ssh_gssapi_delete_ctx()
175 if ((*ctx)->client != GSS_C_NO_NAME) in ssh_gssapi_delete_ctx()
176 gss_release_name(&ms, &(*ctx)->client); in ssh_gssapi_delete_ctx()
177 if ((*ctx)->client_creds != GSS_C_NO_CREDENTIAL) in ssh_gssapi_delete_ctx()
178 gss_release_cred(&ms, &(*ctx)->client_creds); in ssh_gssapi_delete_ctx()
180 free(*ctx); in ssh_gssapi_delete_ctx()
181 *ctx = NULL; in ssh_gssapi_delete_ctx()
191 ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok, in ssh_gssapi_init_ctx() argument
201 ctx->major = gss_init_sec_context(&ctx->minor, in ssh_gssapi_init_ctx()
202 GSS_C_NO_CREDENTIAL, &ctx->context, ctx->name, ctx->oid, in ssh_gssapi_init_ctx()
206 if (GSS_ERROR(ctx->major)) in ssh_gssapi_init_ctx()
207 ssh_gssapi_error(ctx); in ssh_gssapi_init_ctx()
209 return (ctx->major); in ssh_gssapi_init_ctx()
214 ssh_gssapi_import_name(Gssctxt *ctx, const char *host) in ssh_gssapi_import_name() argument
223 if ((ctx->major = gss_import_name(&ctx->minor, in ssh_gssapi_import_name()
224 &gssbuf, GSS_C_NT_HOSTBASED_SERVICE, &ctx->name))) in ssh_gssapi_import_name()
225 ssh_gssapi_error(ctx); in ssh_gssapi_import_name()
228 return (ctx->major); in ssh_gssapi_import_name()
232 ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) in ssh_gssapi_sign() argument
234 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, in ssh_gssapi_sign()
236 ssh_gssapi_error(ctx); in ssh_gssapi_sign()
238 return (ctx->major); in ssh_gssapi_sign()
254 ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) in ssh_gssapi_check_mechanism() argument
265 ssh_gssapi_build_ctx(ctx); in ssh_gssapi_check_mechanism()
266 ssh_gssapi_set_oid(*ctx, oid); in ssh_gssapi_check_mechanism()
267 major = ssh_gssapi_import_name(*ctx, host); in ssh_gssapi_check_mechanism()
269 major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token, in ssh_gssapi_check_mechanism()
272 if ((*ctx)->context != GSS_C_NO_CONTEXT) in ssh_gssapi_check_mechanism()
273 gss_delete_sec_context(&minor, &(*ctx)->context, in ssh_gssapi_check_mechanism()
278 ssh_gssapi_delete_ctx(ctx); in ssh_gssapi_check_mechanism()