1 /*
2 * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
3 * All rights reserved.
4 */
5
6 #pragma ident "@(#)g_sign.c 1.15 04/09/08 SMI"
7
8 /*
9 * glue routine gss_sign
10 */
11
12 #include <mechglueP.h>
13
14 OM_uint32
15 gss_sign(minor_status,
16 context_handle,
17 qop_req,
18 message_buffer,
19 msg_token)
20
21 OM_uint32 * minor_status;
22 gss_ctx_id_t context_handle;
23 int qop_req;
24 gss_buffer_t message_buffer;
25 gss_buffer_t msg_token;
26
27 {
28 OM_uint32 status;
29 gss_union_ctx_id_t ctx;
30 gss_mechanism mech;
31
32 gss_initialize();
33
34 /*
35 * select the approprate underlying mechanism routine and
36 * call it.
37 */
38
39 ctx = (gss_union_ctx_id_t) context_handle;
40 mech = __gss_get_mechanism(ctx->mech_type);
41
42 if (mech) {
43 if (mech->gss_sign)
44 status = mech->gss_sign(
45 mech->context,
46 minor_status,
47 ctx->internal_ctx_id,
48 qop_req,
49 message_buffer,
50 msg_token);
51 else
52 status = GSS_S_BAD_BINDINGS;
53
54 return (status);
55 }
56
57 return (GSS_S_NO_CONTEXT);
58 }
59
60 OM_uint32
61 gss_get_mic(minor_status,
62 context_handle,
63 qop_req,
64 message_buffer,
65 msg_token)
66
67 OM_uint32 * minor_status;
68 const gss_ctx_id_t context_handle;
69 gss_qop_t qop_req;
70 const gss_buffer_t message_buffer;
71 gss_buffer_t msg_token;
72
73 {
74 return (gss_sign(minor_status, (gss_ctx_id_t)context_handle,
75 (int) qop_req, (gss_buffer_t)message_buffer, msg_token));
76 }
|
1 /*
2 * Copyright (c) 1996,1997, by Sun Microsystems, Inc.
3 * All rights reserved.
4 */
5
6 #pragma ident "@(#)g_sign.c 1.14 98/04/23 SMI"
7
8 /*
9 * glue routine gss_sign
10 */
11
12 #include <mechglueP.h>
13
14 OM_uint32
15 gss_sign(minor_status,
16 context_handle,
17 qop_req,
18 message_buffer,
19 msg_token)
20
21 OM_uint32 * minor_status;
22 gss_ctx_id_t context_handle;
23 int qop_req;
24 gss_buffer_t message_buffer;
25 gss_buffer_t msg_token;
26
27 {
28 OM_uint32 status;
29 gss_union_ctx_id_t ctx;
30 gss_mechanism mech;
31
32 if (minor_status == NULL)
33 return (GSS_S_CALL_INACCESSIBLE_WRITE);
34 *minor_status = 0;
35
36 if (context_handle == GSS_C_NO_CONTEXT)
37 return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
38
39 if (message_buffer == NULL)
40 return (GSS_S_CALL_INACCESSIBLE_READ);
41
42 if (msg_token == NULL)
43 return (GSS_S_CALL_INACCESSIBLE_WRITE);
44
45 msg_token->value = NULL;
46 msg_token->length = 0;
47 /*
48 * select the approprate underlying mechanism routine and
49 * call it.
50 */
51
52 ctx = (gss_union_ctx_id_t) context_handle;
53 mech = __gss_get_mechanism(ctx->mech_type);
54
55 if (mech) {
56 if (mech->gss_sign)
57 status = mech->gss_sign(
58 mech->context,
59 minor_status,
60 ctx->internal_ctx_id,
61 qop_req,
62 message_buffer,
63 msg_token);
64 else
65 status = GSS_S_UNAVAILABLE;
66
67 return (status);
68 }
69
70 return (GSS_S_BAD_MECH);
71 }
72
73 OM_uint32
74 gss_get_mic(minor_status,
75 context_handle,
76 qop_req,
77 message_buffer,
78 msg_token)
79
80 OM_uint32 * minor_status;
81 const gss_ctx_id_t context_handle;
82 gss_qop_t qop_req;
83 const gss_buffer_t message_buffer;
84 gss_buffer_t msg_token;
85
86 {
87 return (gss_sign(minor_status, (gss_ctx_id_t)context_handle,
88 (int) qop_req, (gss_buffer_t)message_buffer, msg_token));
89 }
|