diff options
author | Steve French <sfrench@us.ibm.com> | 2006-06-05 12:26:05 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2006-06-05 12:26:05 -0400 |
commit | 6d027cfdb19c26df3151a519ed55acfe2c4cb7c3 (patch) | |
tree | c40004c2518013409bd0f701eca868fd14c74e7f /fs/cifs/cifsencrypt.c | |
parent | f64b23ae4aef9f69d71ea41529a188acd5ab4930 (diff) |
[CIFS] NTLMv2 support part 3
Response struct filled in exacty for 16 byte hash which we need to check
more to make sure it works.
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/cifsencrypt.c')
-rw-r--r-- | fs/cifs/cifsencrypt.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/fs/cifs/cifsencrypt.c b/fs/cifs/cifsencrypt.c index 24ab770f60d..09f94617e53 100644 --- a/fs/cifs/cifsencrypt.c +++ b/fs/cifs/cifsencrypt.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "cifs_unicode.h" | 27 | #include "cifs_unicode.h" |
28 | #include "cifsproto.h" | 28 | #include "cifsproto.h" |
29 | #include <linux/ctype.h> | 29 | #include <linux/ctype.h> |
30 | #include <linux/random.h> | ||
30 | 31 | ||
31 | /* Calculate and return the CIFS signature based on the mac key and the smb pdu */ | 32 | /* Calculate and return the CIFS signature based on the mac key and the smb pdu */ |
32 | /* the 16 byte signature must be allocated by the caller */ | 33 | /* the 16 byte signature must be allocated by the caller */ |
@@ -304,10 +305,22 @@ void calc_lanman_hash(struct cifsSesInfo * ses, char * lnm_session_key) | |||
304 | } | 305 | } |
305 | #endif /* CIFS_WEAK_PW_HASH */ | 306 | #endif /* CIFS_WEAK_PW_HASH */ |
306 | 307 | ||
308 | void setup_ntlmv2_rsp(const struct cifsSesInfo * ses, char * resp_buf) | ||
309 | { | ||
310 | struct ntlmv2_resp * buf = (struct ntlmv2_resp *)resp_buf; | ||
311 | |||
312 | buf->blob_signature = cpu_to_le32(0x00000101); | ||
313 | buf->reserved = 0; | ||
314 | buf->time = cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
315 | get_random_bytes(&buf->client_chal, sizeof(buf->client_chal)); | ||
316 | buf->reserved2 = 0; | ||
317 | buf->names[0].type = 0; | ||
318 | buf->names[0].length = 0; | ||
319 | /* calculate buf->ntlmv2_hash */ | ||
320 | } | ||
321 | |||
307 | void CalcNTLMv2_response(const struct cifsSesInfo * ses,char * v2_session_response) | 322 | void CalcNTLMv2_response(const struct cifsSesInfo * ses,char * v2_session_response) |
308 | { | 323 | { |
309 | /* BB FIXME - update struct ntlmv2_response and change calling convention | ||
310 | of this function */ | ||
311 | struct HMACMD5Context context; | 324 | struct HMACMD5Context context; |
312 | memcpy(v2_session_response + 8, ses->server->cryptKey,8); | 325 | memcpy(v2_session_response + 8, ses->server->cryptKey,8); |
313 | /* gen_blob(v2_session_response + 16); */ | 326 | /* gen_blob(v2_session_response + 16); */ |