OpenVAS Libraries  9.0.3
smb_signing.h File Reference
#include "md5.h"
#include "byteorder.h"
#include "smb.h"
Include dependency graph for smb_signing.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define uchar   unsigned char
 
#define uint8   uint8_t
 

Functions

void simple_packet_signature_ntlmssp (uint8_t *mac_key, const uchar *buf, uint32 seq_number, unsigned char *calc_md5_mac)
 

Macro Definition Documentation

◆ uchar

#define uchar   unsigned char

Definition at line 34 of file smb_signing.h.

◆ uint8

#define uint8   uint8_t

Definition at line 38 of file smb_signing.h.

Function Documentation

◆ simple_packet_signature_ntlmssp()

void simple_packet_signature_ntlmssp ( uint8_t *  mac_key,
const uchar buf,
uint32  seq_number,
unsigned char *  calc_md5_mac 
)

Definition at line 27 of file smb_signing.c.

References MD5Context::buf, MD5Final(), MD5Init(), MD5Update(), SIVAL, smb_len, and smb_ss_field.

Referenced by nasl_get_sign().

28 {
29  const size_t offset_end_of_sig = (smb_ss_field + 8);
30  unsigned char sequence_buf[8];
31  struct MD5Context md5_ctx;
32 
33  /*
34  * Firstly put the sequence number into the first 4 bytes.
35  * and zero out the next 4 bytes.
36  *
37  * We do this here, to avoid modifying the packet.
38  */
39 
40  SIVAL(sequence_buf, 0, seq_number);
41  SIVAL(sequence_buf, 4, 0);
42 
43  /* Calculate the 16 byte MAC - but don't alter the data in the
44  incoming packet.
45 
46  This makes for a bit of fussing about, but it's not too bad.
47  */
48  MD5Init(&md5_ctx);
49 
50  /* intialise with the key */
51  MD5Update(&md5_ctx, mac_key, 16);
52 
53  /* copy in the first bit of the SMB header */
54  MD5Update(&md5_ctx, buf + 4, smb_ss_field - 4);
55 
56  /* copy in the sequence number, instead of the signature */
57  MD5Update(&md5_ctx, sequence_buf, sizeof(sequence_buf));
58 
59  /* copy in the rest of the packet in, skipping the signature */
60  MD5Update(&md5_ctx, buf + offset_end_of_sig,
61  smb_len(buf) - (offset_end_of_sig - 4));
62 
63  /* calculate the MD5 sig */
64  MD5Final(calc_md5_mac, &md5_ctx);
65 }
#define smb_len(buf)
Definition: smb.h:181
uint32 buf[4]
Definition: md5.h:47
#define smb_ss_field
Definition: smb.h:56
#define SIVAL(buf, pos, val)
Definition: byteorder.h:123
void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
Definition: md5.c:107
void MD5Init(struct MD5Context *ctx)
Definition: md5.c:44
Definition: md5.h:46
void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
Definition: md5.c:59
Here is the call graph for this function:
Here is the caller graph for this function: