struct smb311_capabilities {
struct smb3_signing_capabilities signing;
struct smb3_encryption_capabilities encryption;
+ bool smb_encryption_over_quic;
};
const char *smb3_signing_algorithm_name(uint16_t algo);
const char *smb3_encryption_algorithm_name(uint16_t algo);
-struct smb311_capabilities smb311_capabilities_parse(const char *role,
- const char * const *signing_algos,
- const char * const *encryption_algos);
+struct smb311_capabilities smb311_capabilities_parse(
+ const char *role,
+ const char *const *signing_algos,
+ const char *const *encryption_algos,
+ bool smb_encryption_over_quic);
NTSTATUS smb311_capabilities_check(const struct smb311_capabilities *c,
const char *debug_prefix,
return ret;
}
-struct smb311_capabilities smb311_capabilities_parse(const char *role,
- const char * const *signing_algos,
- const char * const *encryption_algos)
+struct smb311_capabilities smb311_capabilities_parse(
+ const char *role,
+ const char *const *signing_algos,
+ const char *const *encryption_algos,
+ bool smb_encryption_over_quic)
{
struct smb311_capabilities c = {
.signing = {
.encryption = {
.num_algos = 0,
},
+ .smb_encryption_over_quic = smb_encryption_over_quic,
};
char sign_param[64] = { 0, };
char enc_param[64] = { 0, };
uint32_t smb1_capabilities = 0;
uint32_t smb2_capabilities = 0;
struct smb311_capabilities smb3_capabilities =
- smb311_capabilities_parse("client",
+ smb311_capabilities_parse(
+ "client",
lp_client_smb3_signing_algorithms(),
- lp_client_smb3_encryption_algorithms());
+ lp_client_smb3_encryption_algorithms(),
+ lp_client_smb_encryption_over_quic());
struct GUID client_guid;
if (!GUID_all_zero(&cli_state_client_guid)) {
struct smb2_negotiate_context *in_transport_caps = NULL;
struct smb2_negotiate_contexts out_c = { .num_contexts = 0, };
const struct smb311_capabilities default_smb3_capabilities =
- smb311_capabilities_parse("server",
+ smb311_capabilities_parse(
+ "server",
lp_server_smb3_signing_algorithms(),
- lp_server_smb3_encryption_algorithms());
+ lp_server_smb3_encryption_algorithms(),
+ true);
DATA_BLOB out_negotiate_context_blob = data_blob_null;
uint32_t out_negotiate_context_offset = 0;
uint16_t out_negotiate_context_count = 0;
.max_credits = WINDOWS_CLIENT_PURE_SMB2_NEGPROT_INITIAL_CREDIT_ASK,
.transports = smb_transports_parse("client smb transports",
lpcfg_client_smb_transports(lp_ctx)),
- .smb3_capabilities = smb311_capabilities_parse("client",
+ .smb3_capabilities = smb311_capabilities_parse(
+ "client",
lpcfg_client_smb3_signing_algorithms(lp_ctx),
- lpcfg_client_smb3_encryption_algorithms(lp_ctx)),
+ lpcfg_client_smb3_encryption_algorithms(lp_ctx),
+ lpcfg_client_smb_encryption_over_quic(lp_ctx)),
};
}