1/* 2 Unix SMB/CIFS implementation. 3 SMB Signing Code 4 Copyright (C) Jeremy Allison 2003. 5 Copyright (C) Andrew Bartlett <abartlet@samba.org> 2002-2003 6 Copyright (C) Stefan Metzmacher 2009 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program. If not, see <http://www.gnu.org/licenses/>. 20*/ 21 22#include "includes.h" 23 24bool cli_simple_set_signing(struct cli_state *cli, 25 const DATA_BLOB user_session_key, 26 const DATA_BLOB response) 27{ 28 bool ok; 29 30 ok = smb_signing_activate(cli->signing_state, 31 user_session_key, 32 response); 33 if (!ok) { 34 return false; 35 } 36 37 cli->readbraw_supported = false; 38 cli->writebraw_supported = false; 39 40 return true; 41} 42 43bool cli_temp_set_signing(struct cli_state *cli) 44{ 45 return smb_signing_set_bsrspyl(cli->signing_state); 46} 47 48void cli_calculate_sign_mac(struct cli_state *cli, char *buf, uint32_t *seqnum) 49{ 50 *seqnum = smb_signing_next_seqnum(cli->signing_state, false); 51 smb_signing_sign_pdu(cli->signing_state, (uint8_t *)buf, *seqnum); 52} 53 54bool cli_check_sign_mac(struct cli_state *cli, const char *buf, uint32_t seqnum) 55{ 56 bool ok; 57 58 ok = smb_signing_check_pdu(cli->signing_state, 59 (const uint8_t *)buf, 60 seqnum); 61 62 if (!ok) { 63 return false; 64 } 65 66 return true; 67} 68 69void cli_set_signing_negotiated(struct cli_state *cli) 70{ 71 smb_signing_set_negotiated(cli->signing_state); 72} 73 74bool client_is_signing_on(struct cli_state *cli) 75{ 76 return smb_signing_is_active(cli->signing_state); 77} 78 79bool client_is_signing_allowed(struct cli_state *cli) 80{ 81 return smb_signing_is_allowed(cli->signing_state); 82} 83 84bool client_is_signing_mandatory(struct cli_state *cli) 85{ 86 return smb_signing_is_mandatory(cli->signing_state); 87} 88