22#ifndef PROTOCORE_SMB_CLIENT_H
23#define PROTOCORE_SMB_CLIENT_H
34enum class SmbResult : int32_t
39 SMB_ERR_PROTOCOL = -3,
41 SMB_ERR_OVERFLOW = -5,
50using SmbSendFn = int (*)(
void *ctx,
const uint8_t *data,
size_t len);
51using SmbRecvFn = int (*)(
void *ctx, uint8_t *buf,
size_t cap);
59 const char *workstation;
62 uint32_t desired_access;
78 uint64_t next_message_id;
80 Smb2SignAlgo signing_algo;
81 uint8_t signing_key[16];
84 uint8_t enc_c2s[PC_SMB2_MAX_CIPHER_KEY_LEN];
85 uint8_t enc_s2c[PC_SMB2_MAX_CIPHER_KEY_LEN];
93SmbResult smb_open(
const SmbConfig *cfg, SmbHandle *h, SmbSendFn send, SmbRecvFn recv,
void *ctx);
99SmbResult smb_close(SmbHandle *h, SmbSendFn send, SmbRecvFn recv,
void *ctx);
107SmbResult smb_read(SmbHandle *h, uint64_t offset, uint8_t *out,
size_t cap,
size_t *out_len, SmbSendFn send,
108 SmbRecvFn recv,
void *ctx);
116SmbResult smb_write(SmbHandle *h, uint64_t offset,
const uint8_t *data,
size_t len,
size_t *written, SmbSendFn send,
117 SmbRecvFn recv,
void *ctx);
User-facing configuration for ProtoCore.
SMB2 client wire codec (MS-SMB2), PC_ENABLE_SMB - increment 1: the transport frame,...