|
Packit Service |
9f2c4a |
/* Copyright (C) 2012 the GSS-PROXY contributors, see COPYING for license */
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
#include "gss_plugin.h"
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_wrap(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
int conf_req_flag,
|
|
Packit Service |
9f2c4a |
gss_qop_t qop_req,
|
|
Packit Service |
9f2c4a |
gss_buffer_t input_message_buffer,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_buffer_t output_message_buffer)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_wrap(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
conf_req_flag, qop_req,
|
|
Packit Service |
9f2c4a |
input_message_buffer, conf_state,
|
|
Packit Service |
9f2c4a |
output_message_buffer);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_wrap_size_limit(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
int conf_req_flag,
|
|
Packit Service |
9f2c4a |
gss_qop_t qop_req,
|
|
Packit Service |
9f2c4a |
OM_uint32 req_output_size,
|
|
Packit Service |
9f2c4a |
OM_uint32 *max_input_size)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_wrap_size_limit(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
conf_req_flag, qop_req,
|
|
Packit Service |
9f2c4a |
req_output_size, max_input_size);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_wrap_iov(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
int conf_req_flag,
|
|
Packit Service |
9f2c4a |
gss_qop_t qop_req,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_iov_buffer_desc *iov,
|
|
Packit Service |
9f2c4a |
int iov_count)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_wrap_iov(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
conf_req_flag, qop_req, conf_state,
|
|
Packit Service |
9f2c4a |
iov, iov_count);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_wrap_iov_length(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
int conf_req_flag,
|
|
Packit Service |
9f2c4a |
gss_qop_t qop_req,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_iov_buffer_desc *iov,
|
|
Packit Service |
9f2c4a |
int iov_count)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_wrap_iov_length(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
conf_req_flag, qop_req, conf_state,
|
|
Packit Service |
9f2c4a |
iov, iov_count);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_wrap_aead(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
int conf_req_flag,
|
|
Packit Service |
9f2c4a |
gss_qop_t qop_req,
|
|
Packit Service |
9f2c4a |
gss_buffer_t input_assoc_buffer,
|
|
Packit Service |
9f2c4a |
gss_buffer_t input_payload_buffer,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_buffer_t output_message_buffer)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_wrap_aead(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
conf_req_flag, qop_req,
|
|
Packit Service |
9f2c4a |
input_assoc_buffer, input_payload_buffer,
|
|
Packit Service |
9f2c4a |
conf_state, output_message_buffer);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_unwrap(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
gss_buffer_t input_message_buffer,
|
|
Packit Service |
9f2c4a |
gss_buffer_t output_message_buffer,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_qop_t *qop_state)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_unwrap(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
input_message_buffer, output_message_buffer,
|
|
Packit Service |
9f2c4a |
conf_state, qop_state);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_unwrap_iov(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_qop_t *qop_state,
|
|
Packit Service |
9f2c4a |
gss_iov_buffer_desc *iov,
|
|
Packit Service |
9f2c4a |
int iov_count)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_unwrap_iov(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
conf_state, qop_state, iov, iov_count);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_unwrap_aead(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
gss_buffer_t input_message_buffer,
|
|
Packit Service |
9f2c4a |
gss_buffer_t input_assoc_buffer,
|
|
Packit Service |
9f2c4a |
gss_buffer_t output_payload_buffer,
|
|
Packit Service |
9f2c4a |
int *conf_state,
|
|
Packit Service |
9f2c4a |
gss_qop_t *qop_state)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_unwrap_aead(minor_status, ctx_handle->local,
|
|
Packit Service |
9f2c4a |
input_message_buffer, input_assoc_buffer,
|
|
Packit Service |
9f2c4a |
output_payload_buffer,
|
|
Packit Service |
9f2c4a |
conf_state, qop_state);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_get_mic(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
gss_qop_t qop_req,
|
|
Packit Service |
9f2c4a |
gss_buffer_t message_buffer,
|
|
Packit Service |
9f2c4a |
gss_buffer_t message_token)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_get_mic(minor_status,
|
|
Packit Service |
9f2c4a |
ctx_handle->local,
|
|
Packit Service |
9f2c4a |
qop_req,
|
|
Packit Service |
9f2c4a |
message_buffer,
|
|
Packit Service |
9f2c4a |
message_token);
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
OM_uint32 gssi_verify_mic(OM_uint32 *minor_status,
|
|
Packit Service |
9f2c4a |
gss_ctx_id_t context_handle,
|
|
Packit Service |
9f2c4a |
gss_buffer_t message_buffer,
|
|
Packit Service |
9f2c4a |
gss_buffer_t message_token,
|
|
Packit Service |
9f2c4a |
gss_qop_t *qop_state)
|
|
Packit Service |
9f2c4a |
{
|
|
Packit Service |
9f2c4a |
struct gpp_context_handle *ctx_handle;
|
|
Packit Service |
9f2c4a |
OM_uint32 maj, min;
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
GSSI_TRACE();
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
ctx_handle = (struct gpp_context_handle *)context_handle;
|
|
Packit Service |
9f2c4a |
if (!ctx_handle) {
|
|
Packit Service |
9f2c4a |
return GSS_S_CALL_INACCESSIBLE_READ;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
/* for now we do encryption only locally and only for specific known
|
|
Packit Service |
9f2c4a |
* mechanisms for which we can export/import the context */
|
|
Packit Service |
9f2c4a |
if (ctx_handle->remote && !ctx_handle->local) {
|
|
Packit Service |
9f2c4a |
maj = gpp_remote_to_local_ctx(&min, &ctx_handle->remote,
|
|
Packit Service |
9f2c4a |
&ctx_handle->local);
|
|
Packit Service |
9f2c4a |
if (maj != GSS_S_COMPLETE) {
|
|
Packit Service |
9f2c4a |
*minor_status = gpp_map_error(min);
|
|
Packit Service |
9f2c4a |
return maj;
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
}
|
|
Packit Service |
9f2c4a |
|
|
Packit Service |
9f2c4a |
return gss_verify_mic(minor_status,
|
|
Packit Service |
9f2c4a |
ctx_handle->local,
|
|
Packit Service |
9f2c4a |
message_buffer,
|
|
Packit Service |
9f2c4a |
message_token,
|
|
Packit Service |
9f2c4a |
qop_state);
|
|
Packit Service |
9f2c4a |
}
|