Print this page
12513 SMB 3.1.1 support for server

@@ -19,10 +19,11 @@
  * CDDL HEADER END
  */
 /*
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2019 Nexenta by DDN, Inc. All rights reserved.
+ * Copyright 2020 RackTop Systems, Inc.
  */
 
 /*
  * Structures and type definitions for the SMB module.
  */

@@ -886,10 +887,11 @@
 #define SMB_SESSION_MAGIC       0x53455353      /* 'SESS' */
 #define SMB_SESSION_VALID(p)    \
     ASSERT(((p) != NULL) && ((p)->s_magic == SMB_SESSION_MAGIC))
 
 #define SMB_CHALLENGE_SZ        8
+#define SMB3_PREAUTH_HASHVAL_SZ 64
 
 typedef enum {
         SMB_SESSION_STATE_INITIALIZED = 0,
         SMB_SESSION_STATE_DISCONNECTED,
         SMB_SESSION_STATE_CONNECTED,

@@ -936,10 +938,11 @@
         uint32_t                srv_cap;
 
         struct smb_sign         signing;        /* SMB1 */
         void                    *sign_mech;     /* mechanism info */
         void                    *enc_mech;
+        void                    *preauth_mech;
 
         /* SMB2/SMB3 signing support */
         int                     (*sign_calc)(struct smb_request *,
                                         struct mbuf_chain *, uint8_t *);
         void                    (*sign_fini)(struct smb_session *);

@@ -974,10 +977,16 @@
         int                     reply_max_bytes;
         uint16_t                smb_msg_size;
         uint16_t                smb_max_mpx;
         smb_srqueue_t           *s_srqueue;
         uint64_t                start_time;
+
+        uint16_t                smb31_enc_cipherid;
+        uint16_t                smb31_preauth_hashid;
+        uint8_t                 smb31_preauth_hashval[SMB3_PREAUTH_HASHVAL_SZ];
+        uint8_t                 smb31_preauth_salt[32];
+
         unsigned char           MAC_key[44];
         char                    ip_addr_str[INET6_ADDRSTRLEN];
         uint8_t                 clnt_uuid[16];
         char                    workstation[SMB_PI_MAX_HOST];
 } smb_session_t;