}
NTSTATUS smb2_signing_sign_pdu(struct smb2_signing_key *signing_key,
- enum protocol_types protocol,
struct iovec *vector,
int count)
{
SIVAL(hdr, SMB2_HDR_FLAGS, IVAL(hdr, SMB2_HDR_FLAGS) | SMB2_HDR_FLAG_SIGNED);
- if (protocol >= PROTOCOL_SMB2_24) {
- sign_algo_id = SMB2_SIGNING_AES128_CMAC;
- } else {
- sign_algo_id = SMB2_SIGNING_HMAC_SHA256;
- }
+ sign_algo_id = signing_key->sign_algo_id;
status = smb2_signing_calc_signature(signing_key,
sign_algo_id,
}
NTSTATUS smb2_signing_check_pdu(struct smb2_signing_key *signing_key,
- enum protocol_types protocol,
const struct iovec *vector,
int count)
{
sig = hdr+SMB2_HDR_SIGNATURE;
- if (protocol >= PROTOCOL_SMB2_24) {
- sign_algo_id = SMB2_SIGNING_AES128_CMAC;
- } else {
- sign_algo_id = SMB2_SIGNING_HMAC_SHA256;
- }
+ sign_algo_id = signing_key->sign_algo_id;
status = smb2_signing_calc_signature(signing_key,
sign_algo_id,
bool smb2_signing_key_valid(const struct smb2_signing_key *key);
NTSTATUS smb2_signing_sign_pdu(struct smb2_signing_key *signing_key,
- enum protocol_types protocol,
struct iovec *vector,
int count);
NTSTATUS smb2_signing_check_pdu(struct smb2_signing_key *signing_key,
- enum protocol_types protocol,
const struct iovec *vector,
int count);
NTSTATUS status;
status = smb2_signing_sign_pdu(signing_key,
- state->session->conn->protocol,
&iov[hdr_iov], num_iov - hdr_iov);
if (!NT_STATUS_IS_OK(status)) {
return status;
NTSTATUS signing_status;
signing_status = smb2_signing_check_pdu(signing_key,
- state->conn->protocol,
&cur[1], 3);
if (!NT_STATUS_IS_OK(signing_status)) {
/*
if (check_signature) {
status = smb2_signing_check_pdu(session->smb2_channel.signing_key,
- session->conn->protocol,
recv_iov, 3);
if (!NT_STATUS_IS_OK(status)) {
return status;
ZERO_STRUCT(channel_key);
status = smb2_signing_check_pdu(session->smb2_channel.signing_key,
- session->conn->protocol,
recv_iov, 3);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
} else if (smb2_signing_key_valid(req->last_sign_key)) {
status = smb2_signing_sign_pdu(req->last_sign_key,
- xconn->protocol,
outhdr_v,
SMBD_SMB2_NUM_IOV_PER_REQ - 1);
if (!NT_STATUS_IS_OK(status)) {
smbd_smb2_signing_key(x, xconn);
status = smb2_signing_sign_pdu(signing_key,
- xconn->protocol,
&state->vector[1+SMBD_SMB2_HDR_IOV_OFS],
SMBD_SMB2_NUM_IOV_PER_REQ - 1);
if (!NT_STATUS_IS_OK(status)) {
}
status = smb2_signing_check_pdu(signing_key,
- xconn->protocol,
SMBD_SMB2_IN_HDR_IOV(req),
SMBD_SMB2_NUM_IOV_PER_REQ - 1);
if (!NT_STATUS_IS_OK(status)) {
* with the last signing key we remembered.
*/
status = smb2_signing_sign_pdu(req->last_sign_key,
- xconn->protocol,
lasthdr,
SMBD_SMB2_NUM_IOV_PER_REQ - 1);
if (!NT_STATUS_IS_OK(status)) {
smbd_smb2_signing_key(x, xconn);
status = smb2_signing_sign_pdu(signing_key,
- xconn->protocol,
outhdr,
SMBD_SMB2_NUM_IOV_PER_REQ - 1);
if (!NT_STATUS_IS_OK(status)) {