Deleted Added
full compact
gss-genr.c (197679) gss-genr.c (255767)
1/* $OpenBSD: gss-genr.c,v 1.20 2009/06/22 05:39:28 dtucker Exp $ */
1/* $OpenBSD: gss-genr.c,v 1.21 2013/05/17 00:13:13 djm Exp $ */
2
3/*
4 * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright

--- 44 unchanged lines hidden (view full) ---

54 memcmp(ctx->oid->elements, data, len) == 0);
55}
56
57/* Set the contexts OID from a data stream */
58void
59ssh_gssapi_set_oid_data(Gssctxt *ctx, void *data, size_t len)
60{
61 if (ctx->oid != GSS_C_NO_OID) {
2
3/*
4 * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright

--- 44 unchanged lines hidden (view full) ---

54 memcmp(ctx->oid->elements, data, len) == 0);
55}
56
57/* Set the contexts OID from a data stream */
58void
59ssh_gssapi_set_oid_data(Gssctxt *ctx, void *data, size_t len)
60{
61 if (ctx->oid != GSS_C_NO_OID) {
62 xfree(ctx->oid->elements);
63 xfree(ctx->oid);
62 free(ctx->oid->elements);
63 free(ctx->oid);
64 }
65 ctx->oid = xmalloc(sizeof(gss_OID_desc));
66 ctx->oid->length = len;
67 ctx->oid->elements = xmalloc(len);
68 memcpy(ctx->oid->elements, data, len);
69}
70
71/* Set the contexts OID */

--- 6 unchanged lines hidden (view full) ---

78/* All this effort to report an error ... */
79void
80ssh_gssapi_error(Gssctxt *ctxt)
81{
82 char *s;
83
84 s = ssh_gssapi_last_error(ctxt, NULL, NULL);
85 debug("%s", s);
64 }
65 ctx->oid = xmalloc(sizeof(gss_OID_desc));
66 ctx->oid->length = len;
67 ctx->oid->elements = xmalloc(len);
68 memcpy(ctx->oid->elements, data, len);
69}
70
71/* Set the contexts OID */

--- 6 unchanged lines hidden (view full) ---

78/* All this effort to report an error ... */
79void
80ssh_gssapi_error(Gssctxt *ctxt)
81{
82 char *s;
83
84 s = ssh_gssapi_last_error(ctxt, NULL, NULL);
85 debug("%s", s);
86 xfree(s);
86 free(s);
87}
88
89char *
90ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status,
91 OM_uint32 *minor_status)
92{
93 OM_uint32 lmin;
94 gss_buffer_desc msg = GSS_C_EMPTY_BUFFER;

--- 64 unchanged lines hidden (view full) ---

159
160 if ((*ctx) == NULL)
161 return;
162 if ((*ctx)->context != GSS_C_NO_CONTEXT)
163 gss_delete_sec_context(&ms, &(*ctx)->context, GSS_C_NO_BUFFER);
164 if ((*ctx)->name != GSS_C_NO_NAME)
165 gss_release_name(&ms, &(*ctx)->name);
166 if ((*ctx)->oid != GSS_C_NO_OID) {
87}
88
89char *
90ssh_gssapi_last_error(Gssctxt *ctxt, OM_uint32 *major_status,
91 OM_uint32 *minor_status)
92{
93 OM_uint32 lmin;
94 gss_buffer_desc msg = GSS_C_EMPTY_BUFFER;

--- 64 unchanged lines hidden (view full) ---

159
160 if ((*ctx) == NULL)
161 return;
162 if ((*ctx)->context != GSS_C_NO_CONTEXT)
163 gss_delete_sec_context(&ms, &(*ctx)->context, GSS_C_NO_BUFFER);
164 if ((*ctx)->name != GSS_C_NO_NAME)
165 gss_release_name(&ms, &(*ctx)->name);
166 if ((*ctx)->oid != GSS_C_NO_OID) {
167 xfree((*ctx)->oid->elements);
168 xfree((*ctx)->oid);
167 free((*ctx)->oid->elements);
168 free((*ctx)->oid);
169 (*ctx)->oid = GSS_C_NO_OID;
170 }
171 if ((*ctx)->creds != GSS_C_NO_CREDENTIAL)
172 gss_release_cred(&ms, &(*ctx)->creds);
173 if ((*ctx)->client != GSS_C_NO_NAME)
174 gss_release_name(&ms, &(*ctx)->client);
175 if ((*ctx)->client_creds != GSS_C_NO_CREDENTIAL)
176 gss_release_cred(&ms, &(*ctx)->client_creds);
177
169 (*ctx)->oid = GSS_C_NO_OID;
170 }
171 if ((*ctx)->creds != GSS_C_NO_CREDENTIAL)
172 gss_release_cred(&ms, &(*ctx)->creds);
173 if ((*ctx)->client != GSS_C_NO_NAME)
174 gss_release_name(&ms, &(*ctx)->client);
175 if ((*ctx)->client_creds != GSS_C_NO_CREDENTIAL)
176 gss_release_cred(&ms, &(*ctx)->client_creds);
177
178 xfree(*ctx);
178 free(*ctx);
179 *ctx = NULL;
180}
181
182/*
183 * Wrapper to init_sec_context
184 * Requires that the context contains:
185 * oid
186 * server name (from ssh_gssapi_import_name)

--- 30 unchanged lines hidden (view full) ---

217 xasprintf(&val, "host@%s", host);
218 gssbuf.value = val;
219 gssbuf.length = strlen(gssbuf.value);
220
221 if ((ctx->major = gss_import_name(&ctx->minor,
222 &gssbuf, GSS_C_NT_HOSTBASED_SERVICE, &ctx->name)))
223 ssh_gssapi_error(ctx);
224
179 *ctx = NULL;
180}
181
182/*
183 * Wrapper to init_sec_context
184 * Requires that the context contains:
185 * oid
186 * server name (from ssh_gssapi_import_name)

--- 30 unchanged lines hidden (view full) ---

217 xasprintf(&val, "host@%s", host);
218 gssbuf.value = val;
219 gssbuf.length = strlen(gssbuf.value);
220
221 if ((ctx->major = gss_import_name(&ctx->minor,
222 &gssbuf, GSS_C_NT_HOSTBASED_SERVICE, &ctx->name)))
223 ssh_gssapi_error(ctx);
224
225 xfree(gssbuf.value);
225 free(gssbuf.value);
226 return (ctx->major);
227}
228
229OM_uint32
230ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash)
231{
232 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context,
233 GSS_C_QOP_DEFAULT, buffer, hash)))

--- 48 unchanged lines hidden ---
226 return (ctx->major);
227}
228
229OM_uint32
230ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash)
231{
232 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context,
233 GSS_C_QOP_DEFAULT, buffer, hash)))

--- 48 unchanged lines hidden ---