1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  *
  26  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  27  */
  28 
  29 #ifndef _NTLM_H
  30 #define _NTLM_H
  31 
  32 /*
  33  * NTLM support functions
  34  * See ntlm.c
  35  */
  36 
  37 /*
  38  * Size of all LM/NTLM hashes, challenge
  39  * NTLM_HASH_SZ: 16 bytes (see smb_lib.h)
  40  * NTLM_CHAL_SZ:  8 bytes (see smb_lib.h)
  41  */
  42 #define NTLM_V1_RESP_SZ         24      /* response size */
  43 
  44 #define NAMETYPE_EOL            0x0000  /* end of list of names */
  45 #define NAMETYPE_MACHINE_NB     0x0001  /* NetBIOS machine name */
  46 #define NAMETYPE_DOMAIN_NB      0x0002  /* NetBIOS domain name */
  47 #define NAMETYPE_MACHINE_DNS    0x0003  /* DNS machine name */
  48 #define NAMETYPE_DOMAIN_DNS     0x0004  /* DNS (AD) domain name */
  49 
  50 int
  51 ntlm_compute_lm_hash(uchar_t *hash, const char *pw);
  52 
  53 int
  54 ntlm_compute_nt_hash(uchar_t *hash, const char *pw);
  55 
  56 int
  57 ntlm_build_target_info(struct smb_ctx *, struct mbuf *, struct mbdata *);
  58 
  59 int
  60 ntlm_put_v1_responses(struct smb_ctx *ctx,
  61         struct mbdata *lm_mbp, struct mbdata *nt_mbp,
  62         uchar_t *ssnkey);
  63 
  64 int
  65 ntlm_put_v1x_responses(struct smb_ctx *ctx,
  66         struct mbdata *lm_mbp, struct mbdata *nt_mbp,
  67         uchar_t *ssnkey);
  68 
  69 int
  70 ntlm_put_v2_responses(struct smb_ctx *ctx, struct mbdata *ti_mbp,
  71         struct mbdata *lm_mbp, struct mbdata *nt_mbp,
  72         uchar_t *ssnkey);
  73 
  74 void
  75 ntlm2_kxkey(struct smb_ctx *ctx, struct mbdata *lm_mbp,
  76         uchar_t *ssn_key, uchar_t *kxkey);
  77 
  78 #endif /* _NTLM_H */