aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sunrpc
diff options
context:
space:
mode:
authorKevin Coffman <kwc@citi.umich.edu>2010-03-17 13:02:51 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-05-14 15:09:16 -0400
commit81d4a4333a1dfd6070f046265d928bb4c79aff88 (patch)
tree652fce6cd75be7388f0cd5c45aec653814710791 /include/linux/sunrpc
parenta8cc1cb7d7a12b0e2855832d10cfbfaffebfad6c (diff)
gss_krb5: introduce encryption type framework
Add enctype framework and change functions to use the generic values from it rather than the values hard-coded for des. 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.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/include/linux/sunrpc/gss_krb5.h b/include/linux/sunrpc/gss_krb5.h
index 5378e455482c..f94935599d13 100644
--- a/include/linux/sunrpc/gss_krb5.h
+++ b/include/linux/sunrpc/gss_krb5.h
@@ -4,7 +4,7 @@
4 * Adapted from MIT Kerberos 5-1.2.1 lib/include/krb5.h, 4 * Adapted from MIT Kerberos 5-1.2.1 lib/include/krb5.h,
5 * lib/gssapi/krb5/gssapiP_krb5.h, and others 5 * lib/gssapi/krb5/gssapiP_krb5.h, and others
6 * 6 *
7 * Copyright (c) 2000 The Regents of the University of Michigan. 7 * Copyright (c) 2000-2008 The Regents of the University of Michigan.
8 * All rights reserved. 8 * All rights reserved.
9 * 9 *
10 * Andy Adamson <andros@umich.edu> 10 * Andy Adamson <andros@umich.edu>
@@ -36,6 +36,7 @@
36 * 36 *
37 */ 37 */
38 38
39#include <linux/crypto.h>
39#include <linux/sunrpc/auth_gss.h> 40#include <linux/sunrpc/auth_gss.h>
40#include <linux/sunrpc/gss_err.h> 41#include <linux/sunrpc/gss_err.h>
41#include <linux/sunrpc/gss_asn1.h> 42#include <linux/sunrpc/gss_asn1.h>
@@ -46,9 +47,31 @@
46/* Maximum blocksize for the supported crypto algorithms */ 47/* Maximum blocksize for the supported crypto algorithms */
47#define GSS_KRB5_MAX_BLOCKSIZE (16) 48#define GSS_KRB5_MAX_BLOCKSIZE (16)
48 49
50struct gss_krb5_enctype {
51 const u32 etype; /* encryption (key) type */
52 const u32 ctype; /* checksum type */
53 const char *name; /* "friendly" name */
54 const char *encrypt_name; /* crypto encrypt name */
55 const char *cksum_name; /* crypto checksum name */
56 const u16 signalg; /* signing algorithm */
57 const u16 sealalg; /* sealing algorithm */
58 const u32 blocksize; /* encryption blocksize */
59 const u32 cksumlength; /* checksum length */
60 const u32 keyed_cksum; /* is it a keyed cksum? */
61 const u32 keybytes; /* raw key len, in bytes */
62 const u32 keylength; /* final key len, in bytes */
63 u32 (*encrypt) (struct crypto_blkcipher *tfm,
64 void *iv, void *in, void *out,
65 int length); /* encryption function */
66 u32 (*decrypt) (struct crypto_blkcipher *tfm,
67 void *iv, void *in, void *out,
68 int length); /* decryption function */
69};
70
49struct krb5_ctx { 71struct krb5_ctx {
50 int initiate; /* 1 = initiating, 0 = accepting */ 72 int initiate; /* 1 = initiating, 0 = accepting */
51 u32 enctype; 73 u32 enctype;
74 const struct gss_krb5_enctype *gk5e; /* enctype-specific info */
52 struct crypto_blkcipher *enc; 75 struct crypto_blkcipher *enc;
53 struct crypto_blkcipher *seq; 76 struct crypto_blkcipher *seq;
54 s32 endtime; 77 s32 endtime;