#[derive(Debug, thiserror::Error)]
pub enum WinrmError {
#[error("WinRM HTTP error: {0}")]
Http(reqwest::Error),
#[error("WinRM auth failed: {0}")]
AuthFailed(String),
#[error("WinRM NTLM error: {0}")]
Ntlm(NtlmError),
#[error("WinRM SOAP error: {0}")]
Soap(SoapError),
#[error("WinRM operation timed out after {0}s")]
Timeout(u64),
#[error("file transfer error: {0}")]
Transfer(String),
#[error("operation cancelled")]
Cancelled,
#[error("CredSSP error: {0}")]
CredSsp(CredSspError),
}
#[derive(Debug, thiserror::Error)]
pub enum CredSspError {
#[error("ASN.1 decode error: {0}")]
Asn1Decode(String),
#[error("server public key mismatch")]
PublicKeyMismatch,
#[error("server error: {0:#010x}")]
ServerError(u32),
}
#[derive(Debug, thiserror::Error)]
pub enum SoapError {
#[error("missing element: {0}")]
MissingElement(String),
#[error("parse error: {0}")]
ParseError(String),
#[error("SOAP fault [{code}]: {reason}")]
Fault {
code: String,
reason: String,
},
}
#[derive(Debug, thiserror::Error)]
pub enum NtlmError {
#[error("NTLM error: {0}")]
InvalidMessage(String),
}