diff options
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 66f76b2d270b..7ca5f6d8ed80 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 | */ |
@@ -102,6 +105,27 @@ struct session_key { | |||
102 | char *response; | 105 | char *response; |
103 | }; | 106 | }; |
104 | 107 | ||
108 | /* crypto security descriptor definition */ | ||
109 | struct sdesc { | ||
110 | struct shash_desc shash; | ||
111 | char ctx[]; | ||
112 | }; | ||
113 | |||
114 | /* crypto hashing related structure/fields, not speicific to a sec mech */ | ||
115 | struct cifs_secmech { | ||
116 | struct crypto_shash *hmacmd5; /* hmac-md5 hash function */ | ||
117 | struct crypto_shash *md5; /* md5 hash function */ | ||
118 | struct sdesc *sdeschmacmd5; /* ctxt to generate ntlmv2 hash, CR1 */ | ||
119 | struct sdesc *sdescmd5; /* ctxt to generate cifs/smb signature */ | ||
120 | }; | ||
121 | |||
122 | /* per smb connection structure/fields */ | ||
123 | struct ntlmssp_auth { | ||
124 | __u32 client_flags; /* sent by client in type 1 ntlmsssp exchange */ | ||
125 | __u32 server_flags; /* sent by server in type 2 ntlmssp exchange */ | ||
126 | unsigned char ciphertext[CIFS_CPHTXT_SIZE]; /* sent to server */ | ||
127 | }; | ||
128 | |||
105 | struct cifs_cred { | 129 | struct cifs_cred { |
106 | int uid; | 130 | int uid; |
107 | int gid; | 131 | int gid; |
@@ -178,6 +202,7 @@ struct TCP_Server_Info { | |||
178 | struct session_key session_key; | 202 | struct session_key session_key; |
179 | unsigned long lstrp; /* when we got last response from this server */ | 203 | unsigned long lstrp; /* when we got last response from this server */ |
180 | u16 dialect; /* dialect index that server chose */ | 204 | u16 dialect; /* dialect index that server chose */ |
205 | struct cifs_secmech secmech; /* crypto sec mech functs, descriptors */ | ||
181 | /* extended security flavors that server supports */ | 206 | /* extended security flavors that server supports */ |
182 | bool sec_kerberos; /* supports plain Kerberos */ | 207 | bool sec_kerberos; /* supports plain Kerberos */ |
183 | bool sec_mskerberos; /* supports legacy MS Kerberos */ | 208 | bool sec_mskerberos; /* supports legacy MS Kerberos */ |
@@ -220,6 +245,7 @@ struct cifsSesInfo { | |||
220 | char ntlmv2_hash[16]; | 245 | char ntlmv2_hash[16]; |
221 | unsigned int tilen; /* length of the target info blob */ | 246 | unsigned int tilen; /* length of the target info blob */ |
222 | unsigned char *tiblob; /* target info blob in challenge response */ | 247 | unsigned char *tiblob; /* target info blob in challenge response */ |
248 | struct ntlmssp_auth ntlmssp; /* ciphertext, flags */ | ||
223 | bool need_reconnect:1; /* connection reset, uid now invalid */ | 249 | bool need_reconnect:1; /* connection reset, uid now invalid */ |
224 | }; | 250 | }; |
225 | /* no more than one of the following three session flags may be set */ | 251 | /* no more than one of the following three session flags may be set */ |