1889 message_buffer.value = (void *)argp->message_buffer.GSS_BUFFER_T_val;
1890
1891 token_buffer.length = (size_t)argp->token_buffer.GSS_BUFFER_T_len;
1892 token_buffer.value = (void *)argp->token_buffer.GSS_BUFFER_T_val;
1893
1894 /* call the gssapi routine */
1895
1896 res->status = (OM_uint32)gss_verify(&res->minor_status,
1897 context_handle,
1898 &message_buffer,
1899 &token_buffer,
1900 &res->qop_state);
1901
1902 if (GSS_ERROR(res->status))
1903 syslog_gss_error(res->status, res->minor_status, "verify");
1904
1905 /* return to caller */
1906 return (TRUE);
1907 }
1908
1909 /* EXPORT DELETE START */
1910
1911 bool_t
1912 gss_seal_1_svc(argp, res, rqstp)
1913 gss_seal_arg *argp;
1914 gss_seal_res *res;
1915 struct svc_req *rqstp;
1916 {
1917 uid_t uid;
1918
1919 gss_buffer_desc input_message_buffer;
1920 gss_buffer_desc output_message_buffer;
1921 gss_ctx_id_t context_handle;
1922 bool_t context_verf_ok;
1923
1924 memset(res, 0, sizeof (*res));
1925
1926 if (gssd_debug)
1927 fprintf(stderr, gettext("gss_seal\n"));
1928
1929 gssd_convert_context_handle(&argp->context_handle, &context_handle,
1930 argp->gssd_context_verifier, &context_verf_ok, NULL);
2055
2056 /*
2057 * convert the output args from the parameter given in the call to the
2058 * variable in the XDR result
2059 */
2060
2061 if (res->status == GSS_S_COMPLETE) {
2062 res->output_message_buffer.GSS_BUFFER_T_len =
2063 (uint_t)output_message_buffer.length;
2064 res->output_message_buffer.GSS_BUFFER_T_val =
2065 (char *)output_message_buffer.value;
2066 } else
2067 syslog_gss_error(res->status, res->minor_status, "unseal");
2068
2069
2070 /* return to caller */
2071
2072 return (TRUE);
2073 }
2074
2075 /* EXPORT DELETE END */
2076
2077 bool_t
2078 gss_display_status_1_svc(argp, res, rqstp)
2079 gss_display_status_arg *argp;
2080 gss_display_status_res *res;
2081 struct svc_req *rqstp;
2082 {
2083 uid_t uid;
2084 gss_OID mech_type;
2085 gss_OID_desc mech_type_desc;
2086 gss_buffer_desc status_string;
2087
2088 memset(res, 0, sizeof (*res));
2089
2090 if (gssd_debug)
2091 fprintf(stderr, gettext("gss_display_status\n"));
2092
2093 /*
2094 * if the request isn't from root, null out the result pointer
2095 * entries, so the next time through xdr_free won't try to
2096 * free unmalloc'd memory and then return NULL
|
1889 message_buffer.value = (void *)argp->message_buffer.GSS_BUFFER_T_val;
1890
1891 token_buffer.length = (size_t)argp->token_buffer.GSS_BUFFER_T_len;
1892 token_buffer.value = (void *)argp->token_buffer.GSS_BUFFER_T_val;
1893
1894 /* call the gssapi routine */
1895
1896 res->status = (OM_uint32)gss_verify(&res->minor_status,
1897 context_handle,
1898 &message_buffer,
1899 &token_buffer,
1900 &res->qop_state);
1901
1902 if (GSS_ERROR(res->status))
1903 syslog_gss_error(res->status, res->minor_status, "verify");
1904
1905 /* return to caller */
1906 return (TRUE);
1907 }
1908
1909 bool_t
1910 gss_seal_1_svc(argp, res, rqstp)
1911 gss_seal_arg *argp;
1912 gss_seal_res *res;
1913 struct svc_req *rqstp;
1914 {
1915 uid_t uid;
1916
1917 gss_buffer_desc input_message_buffer;
1918 gss_buffer_desc output_message_buffer;
1919 gss_ctx_id_t context_handle;
1920 bool_t context_verf_ok;
1921
1922 memset(res, 0, sizeof (*res));
1923
1924 if (gssd_debug)
1925 fprintf(stderr, gettext("gss_seal\n"));
1926
1927 gssd_convert_context_handle(&argp->context_handle, &context_handle,
1928 argp->gssd_context_verifier, &context_verf_ok, NULL);
2053
2054 /*
2055 * convert the output args from the parameter given in the call to the
2056 * variable in the XDR result
2057 */
2058
2059 if (res->status == GSS_S_COMPLETE) {
2060 res->output_message_buffer.GSS_BUFFER_T_len =
2061 (uint_t)output_message_buffer.length;
2062 res->output_message_buffer.GSS_BUFFER_T_val =
2063 (char *)output_message_buffer.value;
2064 } else
2065 syslog_gss_error(res->status, res->minor_status, "unseal");
2066
2067
2068 /* return to caller */
2069
2070 return (TRUE);
2071 }
2072
2073 bool_t
2074 gss_display_status_1_svc(argp, res, rqstp)
2075 gss_display_status_arg *argp;
2076 gss_display_status_res *res;
2077 struct svc_req *rqstp;
2078 {
2079 uid_t uid;
2080 gss_OID mech_type;
2081 gss_OID_desc mech_type_desc;
2082 gss_buffer_desc status_string;
2083
2084 memset(res, 0, sizeof (*res));
2085
2086 if (gssd_debug)
2087 fprintf(stderr, gettext("gss_display_status\n"));
2088
2089 /*
2090 * if the request isn't from root, null out the result pointer
2091 * entries, so the next time through xdr_free won't try to
2092 * free unmalloc'd memory and then return NULL
|