diff options
author | Kevin Coffman <kwc@citi.umich.edu> | 2008-04-30 12:46:08 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2008-06-23 13:47:38 -0400 |
commit | 863a24882ed0a57ff25daaf39885f3a47b706e4b (patch) | |
tree | d36d3829550ba8289a2b3b75cceb187cdb4600b5 /net | |
parent | db8add57898751b9c0ff93ead25f20d21da5ddd0 (diff) |
gss_krb5: Use random value to initialize confounder
Initialize the value used for the confounder to a random value
rather than starting from zero.
Allow for confounders of length 8 or 16 (which will be needed for AES).
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/auth_gss/gss_krb5_wrap.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/net/sunrpc/auth_gss/gss_krb5_wrap.c b/net/sunrpc/auth_gss/gss_krb5_wrap.c index 283cb25c6237..ae8e69b59c4c 100644 --- a/net/sunrpc/auth_gss/gss_krb5_wrap.c +++ b/net/sunrpc/auth_gss/gss_krb5_wrap.c | |||
@@ -87,8 +87,8 @@ out: | |||
87 | return 0; | 87 | return 0; |
88 | } | 88 | } |
89 | 89 | ||
90 | static inline void | 90 | static void |
91 | make_confounder(char *p, int blocksize) | 91 | make_confounder(char *p, u32 conflen) |
92 | { | 92 | { |
93 | static u64 i = 0; | 93 | static u64 i = 0; |
94 | u64 *q = (u64 *)p; | 94 | u64 *q = (u64 *)p; |
@@ -102,8 +102,22 @@ make_confounder(char *p, int blocksize) | |||
102 | * uniqueness would mean worrying about atomicity and rollover, and I | 102 | * uniqueness would mean worrying about atomicity and rollover, and I |
103 | * don't care enough. */ | 103 | * don't care enough. */ |
104 | 104 | ||
105 | BUG_ON(blocksize != 8); | 105 | /* initialize to random value */ |
106 | *q = i++; | 106 | if (i == 0) { |
107 | i = random32(); | ||
108 | i = (i << 32) | random32(); | ||
109 | } | ||
110 | |||
111 | switch (conflen) { | ||
112 | case 16: | ||
113 | *q++ = i++; | ||
114 | /* fall through */ | ||
115 | case 8: | ||
116 | *q++ = i++; | ||
117 | break; | ||
118 | default: | ||
119 | BUG(); | ||
120 | } | ||
107 | } | 121 | } |
108 | 122 | ||
109 | /* Assumptions: the head and tail of inbuf are ours to play with. | 123 | /* Assumptions: the head and tail of inbuf are ours to play with. |