summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-09-26 06:29:02 +0200
committerMichael Adam <obnox@samba.org>2014-09-30 23:35:08 +0200
commit8c846f78ed38f803bb21d199b52003128b82aa0c (patch)
tree23aaf04f2e245b1e938279a4389be7cc87ad2024
parente954f9290cdbcbcc65dbfc5bf041db5cfd551f3d (diff)
downloadsamba-8c846f78ed38f803bb21d199b52003128b82aa0c.tar.gz
libcli/smb: add smb2cli_tcon_{should_sign,is_signing_on}()
This can be used to force signing for individual requests. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
-rw-r--r--libcli/smb/smbXcli_base.c21
-rw-r--r--libcli/smb/smbXcli_base.h3
2 files changed, 24 insertions, 0 deletions
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index e720a500fa6..67b44d93b46 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -186,6 +186,7 @@ struct smbXcli_tcon {
uint32_t flags;
uint32_t capabilities;
uint32_t maximal_access;
+ bool should_sign;
bool should_encrypt;
} smb2;
};
@@ -2694,6 +2695,9 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
if (tcon) {
tid = tcon->smb2.tcon_id;
+ if (tcon->smb2.should_sign) {
+ state->smb2.should_sign = true;
+ }
if (tcon->smb2.should_encrypt) {
state->smb2.should_encrypt = true;
}
@@ -5214,12 +5218,14 @@ void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
tcon->smb2.capabilities = capabilities;
tcon->smb2.maximal_access = maximal_access;
+ tcon->smb2.should_sign = false;
tcon->smb2.should_encrypt = false;
if (session == NULL) {
return;
}
+ tcon->smb2.should_sign = session->smb2->should_sign;
tcon->smb2.should_encrypt = session->smb2->should_encrypt;
if (flags & SMB2_SHAREFLAG_ENCRYPT_DATA) {
@@ -5227,6 +5233,21 @@ void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
}
}
+void smb2cli_tcon_should_sign(struct smbXcli_tcon *tcon,
+ bool should_sign)
+{
+ tcon->smb2.should_sign = should_sign;
+}
+
+bool smb2cli_tcon_is_signing_on(struct smbXcli_tcon *tcon)
+{
+ if (tcon->smb2.should_encrypt) {
+ return true;
+ }
+
+ return tcon->smb2.should_sign;
+}
+
void smb2cli_tcon_should_encrypt(struct smbXcli_tcon *tcon,
bool should_encrypt)
{
diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h
index ffe720f3a03..bb3647e53d0 100644
--- a/libcli/smb/smbXcli_base.h
+++ b/libcli/smb/smbXcli_base.h
@@ -420,6 +420,9 @@ void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
uint32_t flags,
uint32_t capabilities,
uint32_t maximal_access);
+void smb2cli_tcon_should_sign(struct smbXcli_tcon *tcon,
+ bool should_sign);
+bool smb2cli_tcon_is_signing_on(struct smbXcli_tcon *tcon);
void smb2cli_tcon_should_encrypt(struct smbXcli_tcon *tcon,
bool should_encrypt);
bool smb2cli_tcon_is_encryption_on(struct smbXcli_tcon *tcon);