|
|
b6b438 |
From 3900f0a63c3aedee8b5a53e4eda4c41a6b0f0f3e Mon Sep 17 00:00:00 2001
|
|
|
b6b438 |
From: Andreas Schneider <asn@samba.org>
|
|
|
b6b438 |
Date: Wed, 13 Nov 2019 12:40:02 +0100
|
|
|
b6b438 |
Subject: [PATCH 139/187] libcli:auth: Return NTSTATUS for SMBOWFencrypt_ntv2()
|
|
|
b6b438 |
|
|
|
b6b438 |
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14195
|
|
|
b6b438 |
|
|
|
b6b438 |
Signed-off-by: Andreas Schneider <asn@samba.org>
|
|
|
b6b438 |
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
|
|
b6b438 |
(cherry picked from commit 045b9eb3f088c66e20bd19e144a2ce3597328d93)
|
|
|
b6b438 |
---
|
|
|
b6b438 |
libcli/auth/proto.h | 5 +++--
|
|
|
b6b438 |
libcli/auth/smbencrypt.c | 24 ++++++++++++++++--------
|
|
|
b6b438 |
2 files changed, 19 insertions(+), 10 deletions(-)
|
|
|
b6b438 |
|
|
|
b6b438 |
diff --git a/libcli/auth/proto.h b/libcli/auth/proto.h
|
|
|
b6b438 |
index 714652bdb76..4c20783124b 100644
|
|
|
b6b438 |
--- a/libcli/auth/proto.h
|
|
|
b6b438 |
+++ b/libcli/auth/proto.h
|
|
|
b6b438 |
@@ -139,8 +139,9 @@ void SMBOWFencrypt_ntv2(const uint8_t kr[16],
|
|
|
b6b438 |
const DATA_BLOB *srv_chal,
|
|
|
b6b438 |
const DATA_BLOB *smbcli_chal,
|
|
|
b6b438 |
uint8_t resp_buf[16]);
|
|
|
b6b438 |
-void SMBsesskeygen_ntv2(const uint8_t kr[16],
|
|
|
b6b438 |
- const uint8_t * nt_resp, uint8_t sess_key[16]);
|
|
|
b6b438 |
+NTSTATUS SMBsesskeygen_ntv2(const uint8_t kr[16],
|
|
|
b6b438 |
+ const uint8_t *nt_resp,
|
|
|
b6b438 |
+ uint8_t sess_key[16]);
|
|
|
b6b438 |
void SMBsesskeygen_ntv1(const uint8_t kr[16], uint8_t sess_key[16]);
|
|
|
b6b438 |
void SMBsesskeygen_lm_sess_key(const uint8_t lm_hash[16],
|
|
|
b6b438 |
const uint8_t lm_resp[24], /* only uses 8 */
|
|
|
b6b438 |
diff --git a/libcli/auth/smbencrypt.c b/libcli/auth/smbencrypt.c
|
|
|
b6b438 |
index cc5e1fbb899..904d2c38219 100644
|
|
|
b6b438 |
--- a/libcli/auth/smbencrypt.c
|
|
|
b6b438 |
+++ b/libcli/auth/smbencrypt.c
|
|
|
b6b438 |
@@ -370,21 +370,29 @@ void SMBOWFencrypt_ntv2(const uint8_t kr[16],
|
|
|
b6b438 |
#endif
|
|
|
b6b438 |
}
|
|
|
b6b438 |
|
|
|
b6b438 |
-void SMBsesskeygen_ntv2(const uint8_t kr[16],
|
|
|
b6b438 |
- const uint8_t * nt_resp, uint8_t sess_key[16])
|
|
|
b6b438 |
+NTSTATUS SMBsesskeygen_ntv2(const uint8_t kr[16],
|
|
|
b6b438 |
+ const uint8_t *nt_resp,
|
|
|
b6b438 |
+ uint8_t sess_key[16])
|
|
|
b6b438 |
{
|
|
|
b6b438 |
+ int rc;
|
|
|
b6b438 |
+
|
|
|
b6b438 |
/* a very nice, 128 bit, variable session key */
|
|
|
b6b438 |
- gnutls_hmac_fast(GNUTLS_MAC_MD5,
|
|
|
b6b438 |
- kr,
|
|
|
b6b438 |
- 16,
|
|
|
b6b438 |
- nt_resp,
|
|
|
b6b438 |
- 16,
|
|
|
b6b438 |
- sess_key);
|
|
|
b6b438 |
+ rc = gnutls_hmac_fast(GNUTLS_MAC_MD5,
|
|
|
b6b438 |
+ kr,
|
|
|
b6b438 |
+ 16,
|
|
|
b6b438 |
+ nt_resp,
|
|
|
b6b438 |
+ 16,
|
|
|
b6b438 |
+ sess_key);
|
|
|
b6b438 |
+ if (rc != 0) {
|
|
|
b6b438 |
+ return gnutls_error_to_ntstatus(rc, NT_STATUS_HASH_NOT_SUPPORTED);
|
|
|
b6b438 |
+ }
|
|
|
b6b438 |
|
|
|
b6b438 |
#ifdef DEBUG_PASSWORD
|
|
|
b6b438 |
DEBUG(100, ("SMBsesskeygen_ntv2:\n"));
|
|
|
b6b438 |
dump_data(100, sess_key, 16);
|
|
|
b6b438 |
#endif
|
|
|
b6b438 |
+
|
|
|
b6b438 |
+ return NT_STATUS_OK;
|
|
|
b6b438 |
}
|
|
|
b6b438 |
|
|
|
b6b438 |
void SMBsesskeygen_ntv1(const uint8_t kr[16], uint8_t sess_key[16])
|
|
|
b6b438 |
--
|
|
|
b6b438 |
2.23.0
|
|
|
b6b438 |
|