fix!: remove dependency on ClientConnector in CredsspSequence (#519)

This commit is contained in:
Sandeep Bansal 2024-08-16 10:09:02 -07:00 committed by GitHub
parent a6d6c2728b
commit d8e21b0bd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 62 additions and 39 deletions

View file

@ -2,8 +2,8 @@ use ironrdp_connector::credssp::{CredsspProcessGenerator, CredsspSequence, Kerbe
use ironrdp_connector::sspi::credssp::ClientState;
use ironrdp_connector::sspi::generator::GeneratorState;
use ironrdp_connector::{
custom_err, ClientConnector, ClientConnectorState, ConnectionResult, ConnectorError, ConnectorResult, ServerName,
State as _,
custom_err, general_err, ClientConnector, ClientConnectorState, ConnectionResult, ConnectorError, ConnectorResult,
ServerName, State as _,
};
use ironrdp_pdu::write_buf::WriteBuf;
@ -120,8 +120,19 @@ where
{
assert!(connector.should_perform_credssp());
let (mut sequence, mut ts_request) =
CredsspSequence::init(connector, server_name, server_public_key, kerberos_config)?;
let selected_protocol = match connector.state {
ClientConnectorState::Credssp { selected_protocol, .. } => selected_protocol,
_ => return Err(general_err!("invalid connector state for CredSSP sequence")),
};
let (mut sequence, mut ts_request) = CredsspSequence::init(
connector.config.credentials.clone(),
connector.config.domain.as_deref(),
selected_protocol,
server_name,
server_public_key,
kerberos_config,
)?;
loop {
let client_state = {