aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/linux/sunrpc/gss_api.h22
-rw-r--r--net/sunrpc/auth_gss/gss_mech_switch.c22
2 files changed, 44 insertions, 0 deletions
diff --git a/include/linux/sunrpc/gss_api.h b/include/linux/sunrpc/gss_api.h
index 689262f6305..e896752ffbf 100644
--- a/include/linux/sunrpc/gss_api.h
+++ b/include/linux/sunrpc/gss_api.h
@@ -48,6 +48,17 @@ u32 gss_verify_mic(
struct xdr_buf *message,
struct xdr_netobj *mic_token,
u32 *qstate);
+u32 gss_wrap(
+ struct gss_ctx *ctx_id,
+ u32 qop,
+ int offset,
+ struct xdr_buf *outbuf,
+ struct page **inpages);
+u32 gss_unwrap(
+ struct gss_ctx *ctx_id,
+ u32 *qop,
+ int offset,
+ struct xdr_buf *inbuf);
u32 gss_delete_sec_context(
struct gss_ctx **ctx_id);
@@ -93,6 +104,17 @@ struct gss_api_ops {
struct xdr_buf *message,
struct xdr_netobj *mic_token,
u32 *qstate);
+ u32 (*gss_wrap)(
+ struct gss_ctx *ctx_id,
+ u32 qop,
+ int offset,
+ struct xdr_buf *outbuf,
+ struct page **inpages);
+ u32 (*gss_unwrap)(
+ struct gss_ctx *ctx_id,
+ u32 *qop,
+ int offset,
+ struct xdr_buf *buf);
void (*gss_delete_sec_context)(
void *internal_ctx_id);
};
diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c
index 58aeaddd8c7..06d97cb3481 100644
--- a/net/sunrpc/auth_gss/gss_mech_switch.c
+++ b/net/sunrpc/auth_gss/gss_mech_switch.c
@@ -276,6 +276,28 @@ gss_verify_mic(struct gss_ctx *context_handle,
qstate);
}
+u32
+gss_wrap(struct gss_ctx *ctx_id,
+ u32 qop,
+ int offset,
+ struct xdr_buf *buf,
+ struct page **inpages)
+{
+ return ctx_id->mech_type->gm_ops
+ ->gss_wrap(ctx_id, qop, offset, buf, inpages);
+}
+
+u32
+gss_unwrap(struct gss_ctx *ctx_id,
+ u32 *qop,
+ int offset,
+ struct xdr_buf *buf)
+{
+ return ctx_id->mech_type->gm_ops
+ ->gss_unwrap(ctx_id, qop, offset, buf);
+}
+
+
/* gss_delete_sec_context: free all resources associated with context_handle.
* Note this differs from the RFC 2744-specified prototype in that we don't
* bother returning an output token, since it would never be used anyway. */