mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
r3294: Fix for SMB signing with 56-bit DES session keys. From Nalin Dahyabhai <nalin@redhat.com>.
Jeremy.
(This used to be commit 55d23cb253
)
This commit is contained in:
parent
e53aa4700f
commit
e798a6b9fe
@ -255,6 +255,7 @@ static void simple_packet_signature(struct smb_basic_signing_context *data,
|
||||
const size_t offset_end_of_sig = (smb_ss_field + 8);
|
||||
unsigned char sequence_buf[8];
|
||||
struct MD5Context md5_ctx;
|
||||
unsigned char key_buf[16];
|
||||
|
||||
/*
|
||||
* Firstly put the sequence number into the first 4 bytes.
|
||||
@ -276,8 +277,14 @@ static void simple_packet_signature(struct smb_basic_signing_context *data,
|
||||
MD5Init(&md5_ctx);
|
||||
|
||||
/* intialise with the key */
|
||||
MD5Update(&md5_ctx, data->mac_key.data,
|
||||
data->mac_key.length);
|
||||
/* NB. When making and verifying SMB signatures, Windows apparently
|
||||
zero-pads the key to 128 bits if it isn't long enough.
|
||||
From Nalin Dahyabhai <nalin@redhat.com> */
|
||||
MD5Update(&md5_ctx, data->mac_key.data, data->mac_key.length);
|
||||
if (data->mac_key.length < sizeof(key_buf)) {
|
||||
memset(key_buf, 0, sizeof(key_buf));
|
||||
MD5Update(&md5_ctx, key_buf, sizeof(key_buf) - data->mac_key.length);
|
||||
}
|
||||
|
||||
/* copy in the first bit of the SMB header */
|
||||
MD5Update(&md5_ctx, buf + 4, smb_ss_field - 4);
|
||||
|
Loading…
Reference in New Issue
Block a user