diff options
author | Steve French <sfrench@us.ibm.com> | 2010-08-20 16:42:26 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2010-08-20 16:42:26 -0400 |
commit | 9fbc590860e75785bdaf8b83e48fabfe4d4f7d58 (patch) | |
tree | dccc154927cf1e12c702537b5bc028158b938e21 /fs/cifs/cifsglob.h | |
parent | bf4f12113812ac5be76c5590c6f50c8346f784a4 (diff) |
[CIFS] Fix ntlmv2 auth with ntlmssp
Make ntlmv2 as an authentication mechanism within ntlmssp
instead of ntlmv1.
Parse type 2 response in ntlmssp negotiation to pluck
AV pairs and use them to calculate ntlmv2 response token.
Also, assign domain name from the sever response in type 2
packet of ntlmssp and use that (netbios) domain name in
calculation of response.
Enable cifs/smb signing using rc4 and md5.
Changed name of the structure mac_key to session_key to reflect
the type of key it holds.
Use kernel crypto_shash_* APIs instead of the equivalent cifs functions.
Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 0cdfb8c32ac6..49563e0c1725 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h | |||
@@ -25,6 +25,9 @@ | |||
25 | #include <linux/workqueue.h> | 25 | #include <linux/workqueue.h> |
26 | #include "cifs_fs_sb.h" | 26 | #include "cifs_fs_sb.h" |
27 | #include "cifsacl.h" | 27 | #include "cifsacl.h" |
28 | #include <crypto/internal/hash.h> | ||
29 | #include <linux/scatterlist.h> | ||
30 | |||
28 | /* | 31 | /* |
29 | * The sizes of various internal tables and strings | 32 | * The sizes of various internal tables and strings |
30 | */ | 33 | */ |
@@ -97,7 +100,7 @@ enum protocolEnum { | |||
97 | /* Netbios frames protocol not supported at this time */ | 100 | /* Netbios frames protocol not supported at this time */ |
98 | }; | 101 | }; |
99 | 102 | ||
100 | struct mac_key { | 103 | struct session_key { |
101 | unsigned int len; | 104 | unsigned int len; |
102 | union { | 105 | union { |
103 | char ntlm[CIFS_SESS_KEY_SIZE + 16]; | 106 | char ntlm[CIFS_SESS_KEY_SIZE + 16]; |
@@ -120,6 +123,14 @@ struct cifs_cred { | |||
120 | struct cifs_ace *aces; | 123 | struct cifs_ace *aces; |
121 | }; | 124 | }; |
122 | 125 | ||
126 | struct ntlmssp_auth { | ||
127 | __u32 client_flags; | ||
128 | __u32 server_flags; | ||
129 | unsigned char ciphertext[CIFS_CPHTXT_SIZE]; | ||
130 | struct crypto_shash *hmacmd5; | ||
131 | struct crypto_shash *md5; | ||
132 | }; | ||
133 | |||
123 | /* | 134 | /* |
124 | ***************************************************************** | 135 | ***************************************************************** |
125 | * Except the CIFS PDUs themselves all the | 136 | * Except the CIFS PDUs themselves all the |
@@ -182,11 +193,14 @@ struct TCP_Server_Info { | |||
182 | /* 16th byte of RFC1001 workstation name is always null */ | 193 | /* 16th byte of RFC1001 workstation name is always null */ |
183 | char workstation_RFC1001_name[RFC1001_NAME_LEN_WITH_NULL]; | 194 | char workstation_RFC1001_name[RFC1001_NAME_LEN_WITH_NULL]; |
184 | __u32 sequence_number; /* needed for CIFS PDU signature */ | 195 | __u32 sequence_number; /* needed for CIFS PDU signature */ |
185 | struct mac_key mac_signing_key; | 196 | struct session_key session_key; |
186 | char ntlmv2_hash[16]; | 197 | char ntlmv2_hash[16]; |
187 | unsigned long lstrp; /* when we got last response from this server */ | 198 | unsigned long lstrp; /* when we got last response from this server */ |
188 | u16 dialect; /* dialect index that server chose */ | 199 | u16 dialect; /* dialect index that server chose */ |
189 | /* extended security flavors that server supports */ | 200 | /* extended security flavors that server supports */ |
201 | unsigned int tilen; /* length of the target info blob */ | ||
202 | unsigned char *tiblob; /* target info blob in challenge response */ | ||
203 | struct ntlmssp_auth ntlmssp; /* various keys, ciphers, flags */ | ||
190 | bool sec_kerberos; /* supports plain Kerberos */ | 204 | bool sec_kerberos; /* supports plain Kerberos */ |
191 | bool sec_mskerberos; /* supports legacy MS Kerberos */ | 205 | bool sec_mskerberos; /* supports legacy MS Kerberos */ |
192 | bool sec_kerberosu2u; /* supports U2U Kerberos */ | 206 | bool sec_kerberosu2u; /* supports U2U Kerberos */ |