aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sunrpc
diff options
context:
space:
mode:
authorKevin Coffman <kwc@citi.umich.edu>2010-03-17 13:02:52 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-05-14 15:09:16 -0400
commite1f6c07b1160ef28e8754d12e6c03288dd9d5ca8 (patch)
tree5be1f97a1a51feaed4bed2b4a83a568c94921faf /include/linux/sunrpc
parent81d4a4333a1dfd6070f046265d928bb4c79aff88 (diff)
gss_krb5: add ability to have a keyed checksum (hmac)
Encryption types besides DES may use a keyed checksum (hmac). Modify the make_checksum() function to allow for a key and take care of enctype-specific processing such as truncating the resulting hash. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r--include/linux/sunrpc/gss_krb5.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/include/linux/sunrpc/gss_krb5.h b/include/linux/sunrpc/gss_krb5.h
index f94935599d13..abf26efd44ac 100644
--- a/include/linux/sunrpc/gss_krb5.h
+++ b/include/linux/sunrpc/gss_krb5.h
@@ -41,6 +41,9 @@
41#include <linux/sunrpc/gss_err.h> 41#include <linux/sunrpc/gss_err.h>
42#include <linux/sunrpc/gss_asn1.h> 42#include <linux/sunrpc/gss_asn1.h>
43 43
44/* Maximum key length (in bytes) for the supported crypto algorithms*/
45#define GSS_KRB5_MAX_KEYLEN (32)
46
44/* Maximum checksum function output for the supported crypto algorithms */ 47/* Maximum checksum function output for the supported crypto algorithms */
45#define GSS_KRB5_MAX_CKSUM_LEN (20) 48#define GSS_KRB5_MAX_CKSUM_LEN (20)
46 49
@@ -74,6 +77,7 @@ struct krb5_ctx {
74 const struct gss_krb5_enctype *gk5e; /* enctype-specific info */ 77 const struct gss_krb5_enctype *gk5e; /* enctype-specific info */
75 struct crypto_blkcipher *enc; 78 struct crypto_blkcipher *enc;
76 struct crypto_blkcipher *seq; 79 struct crypto_blkcipher *seq;
80 u8 cksum[GSS_KRB5_MAX_KEYLEN];
77 s32 endtime; 81 s32 endtime;
78 u32 seq_send; 82 u32 seq_send;
79 struct xdr_netobj mech_used; 83 struct xdr_netobj mech_used;
@@ -159,9 +163,10 @@ enum seal_alg {
159 + GSS_KRB5_TOK_HDR_LEN \ 163 + GSS_KRB5_TOK_HDR_LEN \
160 + GSS_KRB5_MAX_CKSUM_LEN) 164 + GSS_KRB5_MAX_CKSUM_LEN)
161 165
162s32 166u32
163make_checksum(char *, char *header, int hdrlen, struct xdr_buf *body, 167make_checksum(struct krb5_ctx *kctx, char *header, int hdrlen,
164 int body_offset, struct xdr_netobj *cksum); 168 struct xdr_buf *body, int body_offset, u8 *cksumkey,
169 struct xdr_netobj *cksumout);
165 170
166u32 gss_get_mic_kerberos(struct gss_ctx *, struct xdr_buf *, 171u32 gss_get_mic_kerberos(struct gss_ctx *, struct xdr_buf *,
167 struct xdr_netobj *); 172 struct xdr_netobj *);