Version updates: getting rid of anyhow + moving to Tokio 1.0
[?]
Jan 5, 2021, 6:37 PM
2WEO7OZLWJJPUYK4WXLT5FD46G2MAEIHEYMDW5GASCBUNKOPXCVACDependencies
- [2]
MFMCIUMJFixing authentication with RSA - [3]
XEKZBXNIFixing a bug with tokio::select - [4]
2SFWWZ2RRearm reading future on empty packet, and respond to server-initiated key re-exchange - [5]
HDEDMPBTClient example - [6]
55M4M5YUFake agent client on Windows - [7]
432ETREAIf tokio::select! returns an error, return it - [8]
DJT33BQEVersion bump - [9]
BWU5BDAHThrussh-keys 0.19.5 - [10]
V3BRP7LQAvoid polling the reading future again after disconnection - [11]
ELRPPXSGFixing conflicts - [12]
LEYR5Q5GTypo in a documentation comment - [13]
LDEEJH5LIgnore key types instead of returning an error in the agent client - [14]
KNLLUDOICorrect usage of `tokio::select!` - [15]
TFYJ3P2AVersion 0.30.8/0.19.4, and solving conflicts - [16]
E2SB74SVVersion 0.30.3 - [17]
SJBZKVM5Debug messages - [18]
634OYCNMTokio 0.3 - [19]
CQSPFH4HVersion 0.30.4 - [20]
ATANAS43Fixing a test - [21]
2Q2DF2ROUpdating thrussh-config to make it usable in real projects - [22]
7G5SGELGCompilation error on Windows - [23]
G3N4WNI6Avoid polling the reading future again after disconnection - [24]
AEIVL6S4Fixing key fingerprints for RSA keys - [25]
PDTFLA4YVersion 0.30.7 - [26]
Y5HHIQXVWait for the connection to be encrypted in `connect` - [27]
XCNFFN6ZThrussh-keys, version 0.19.3 - [28]
VYDCQWSFVersion 0.30.6 - [29]
7FRJYUI6Reboot because of a bad change - [30]
JBFDZQ46Formatting - [31]
HYM2DGVEMaking thrussh::client::connect_stream public, to handle ProxyCommand - [32]
QYSLQBP3Feature-gating UDS in agent client - [33]
OGPWDWHUCompilation error on Windows - [34]
ORMM2ACMUpdate packets sent for password auth - [35]
F2FHFNIKFixing the return value of session::data_noqueue
Change contents
- replacement in thrussh-keys/src/signature.rs at line 53
pub fn from_base64(s: &[u8]) -> Result<Self, anyhow::Error> {pub fn from_base64(s: &[u8]) -> Result<Self, Error> { - edit in thrussh-keys/src/lib.rs at line 117
#[error(transparent)]IO(#[from] std::io::Error),#[error(transparent)]Openssl(#[from] openssl::error::ErrorStack),#[error("Base64 decoding error: {0}")]Decode(#[from] data_encoding::DecodeError),#[error("ASN1 decoding error: {0}")]ASN1(#[from] yasna::ASN1Error),#[error("Environment variable not found")]EnvVar(&'static str), - replacement in thrussh-keys/src/lib.rs at line 137
pub fn load_public_key<P: AsRef<Path>>(path: P) -> Result<key::PublicKey, anyhow::Error> {pub fn load_public_key<P: AsRef<Path>>(path: P) -> Result<key::PublicKey, Error> { - replacement in thrussh-keys/src/lib.rs at line 157
pub fn parse_public_key_base64(key: &str) -> Result<key::PublicKey, anyhow::Error> {pub fn parse_public_key_base64(key: &str) -> Result<key::PublicKey, Error> { - replacement in thrussh-keys/src/lib.rs at line 221
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh-keys/src/lib.rs at line 233
) -> Result<key::KeyPair, anyhow::Error> {) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/lib.rs at line 255
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh-keys/src/lib.rs at line 295
) -> Result<bool, anyhow::Error> {) -> Result<bool, Error> { - replacement in thrussh-keys/src/lib.rs at line 359
pub fn learn_known_hosts(host: &str,port: u16,pubkey: &key::PublicKey,) -> Result<(), anyhow::Error> {pub fn learn_known_hosts(host: &str, port: u16, pubkey: &key::PublicKey) -> Result<(), Error> { - replacement in thrussh-keys/src/lib.rs at line 387
pub fn check_known_hosts(host: &str,port: u16,pubkey: &key::PublicKey,) -> Result<bool, anyhow::Error> {pub fn check_known_hosts(host: &str, port: u16, pubkey: &key::PublicKey) -> Result<bool, Error> { - replacement in thrussh-keys/src/key.rs at line 124
pub fn parse(algo: &[u8], pubkey: &[u8]) -> Result<Self, anyhow::Error> {pub fn parse(algo: &[u8], pubkey: &[u8]) -> Result<Self, Error> { - replacement in thrussh-keys/src/key.rs at line 304
pub fn sign_detached(&self, to_sign: &[u8]) -> Result<Signature, anyhow::Error> {pub fn sign_detached(&self, to_sign: &[u8]) -> Result<Signature, Error> { - replacement in thrussh-keys/src/key.rs at line 324
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh-keys/src/key.rs at line 349
pub fn add_self_signature(&self, buffer: &mut CryptoVec) -> Result<(), anyhow::Error> {pub fn add_self_signature(&self, buffer: &mut CryptoVec) -> Result<(), Error> { - replacement in thrussh-keys/src/key.rs at line 374
) -> Result<Vec<u8>, anyhow::Error> {) -> Result<Vec<u8>, Error> { - replacement in thrussh-keys/src/key.rs at line 394
pub fn parse_public_key(p: &[u8]) -> Result<PublicKey, anyhow::Error> {pub fn parse_public_key(p: &[u8]) -> Result<PublicKey, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 24
pub fn decode_pkcs8(ciphertext: &[u8],password: Option<&[u8]>,) -> Result<key::KeyPair, anyhow::Error> {pub fn decode_pkcs8(ciphertext: &[u8], password: Option<&[u8]>) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 137
fn read_key_v1(reader: &mut BERReaderSeq) -> Result<key::KeyPair, anyhow::Error> {fn read_key_v1(reader: &mut BERReaderSeq) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 204
fn read_key_v0(reader: &mut BERReaderSeq) -> Result<key::KeyPair, anyhow::Error> {fn read_key_v0(reader: &mut BERReaderSeq) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 212
let rsa: Result<Rsa<Private>, anyhow::Error> = yasna::parse_der(seq, |reader| {let rsa: Result<Rsa<Private>, Error> = yasna::parse_der(seq, |reader| { - replacement in thrussh-keys/src/format/pkcs8.rs at line 219
let mut read_key = || -> Result<Rsa<Private>, anyhow::Error> {let mut read_key = || -> Result<Rsa<Private>, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 264
) -> Result<Vec<u8>, anyhow::Error> {) -> Result<Vec<u8>, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 354
fn decrypt(&self, password: &[u8], cipher: &[u8]) -> Result<Vec<u8>, anyhow::Error> {fn decrypt(&self, password: &[u8], cipher: &[u8]) -> Result<Vec<u8>, Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 367
fn derive(&self, password: &[u8], key: &mut [u8]) -> Result<(), anyhow::Error> {fn derive(&self, password: &[u8], key: &mut [u8]) -> Result<(), Error> { - replacement in thrussh-keys/src/format/pkcs8.rs at line 411
fn decrypt(&self, key: &[u8], ciphertext: &[u8]) -> Result<Vec<u8>, anyhow::Error> {fn decrypt(&self, key: &[u8], ciphertext: &[u8]) -> Result<Vec<u8>, Error> { - replacement in thrussh-keys/src/format/pkcs5.rs at line 14
) -> Result<key::KeyPair, anyhow::Error> {) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/format/openssh.rs at line 11
pub fn decode_openssh(secret: &[u8],password: Option<&[u8]>,) -> Result<key::KeyPair, anyhow::Error> {pub fn decode_openssh(secret: &[u8], password: Option<&[u8]>) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/format/openssh.rs at line 87
) -> Result<Vec<u8>, anyhow::Error> {) -> Result<Vec<u8>, Error> { - replacement in thrussh-keys/src/format/mod.rs at line 38
pub fn decode_secret_key(secret: &str,password: Option<&[u8]>,) -> Result<key::KeyPair, anyhow::Error> {pub fn decode_secret_key(secret: &str, password: Option<&[u8]>) -> Result<key::KeyPair, Error> { - replacement in thrussh-keys/src/format/mod.rs at line 90
pub fn encode_pkcs8_pem<W: Write>(key: &key::KeyPair, mut w: W) -> Result<(), anyhow::Error> {pub fn encode_pkcs8_pem<W: Write>(key: &key::KeyPair, mut w: W) -> Result<(), Error> { - replacement in thrussh-keys/src/format/mod.rs at line 103
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh-keys/src/format/mod.rs at line 111
fn decode_rsa(secret: &[u8]) -> Result<key::KeyPair, anyhow::Error> {fn decode_rsa(secret: &[u8]) -> Result<key::KeyPair, Error> { - edit in thrussh-keys/src/agent/server.rs at line 7
use futures::stream::{Stream, StreamExt}; - edit in thrussh-keys/src/agent/server.rs at line 15
use tokio::stream::{Stream, StreamExt}; - replacement in thrussh-keys/src/agent/server.rs at line 88
async fn run(mut self) -> Result<(), anyhow::Error> {async fn run(mut self) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/server.rs at line 108
async fn respond(&mut self, writebuf: &mut CryptoVec) -> Result<(), anyhow::Error> {async fn respond(&mut self, writebuf: &mut CryptoVec) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/server.rs at line 201
fn lock(&self, mut r: Position) -> Result<(), anyhow::Error> {fn lock(&self, mut r: Position) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/server.rs at line 208
fn unlock(&self, mut r: Position) -> Result<bool, anyhow::Error> {fn unlock(&self, mut r: Position) -> Result<bool, Error> { - replacement in thrussh-keys/src/agent/server.rs at line 219
fn remove_identity(&self, mut r: Position) -> Result<bool, anyhow::Error> {fn remove_identity(&self, mut r: Position) -> Result<bool, Error> { - replacement in thrussh-keys/src/agent/server.rs at line 236
) -> Result<bool, anyhow::Error> {) -> Result<bool, Error> { - replacement in thrussh-keys/src/agent/server.rs at line 347
) -> Result<(A, bool), anyhow::Error> {) -> Result<(A, bool), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 34
pub async fn connect_uds<P: AsRef<std::path::Path>>(path: P) -> Result<Self, anyhow::Error> {pub async fn connect_uds<P: AsRef<std::path::Path>>(path: P) -> Result<Self, Error> { - replacement in thrussh-keys/src/agent/client.rs at line 44
pub async fn connect_env() -> Result<Self, anyhow::Error> {let var = std::env::var("SSH_AUTH_SOCK")?;pub async fn connect_env() -> Result<Self, Error> {let var = if let Ok(var) = std::env::var("SSH_AUTH_SOCK") {var} else {return Err(Error::EnvVar("SSH_AUTH_SOCK"));}; - replacement in thrussh-keys/src/agent/client.rs at line 58
pub async fn connect_env() -> Result<Self, anyhow::Error> {Err(Error::AgentFailure.into())pub async fn connect_env() -> Result<Self, Error> {Err(Error::AgentFailure) - replacement in thrussh-keys/src/agent/client.rs at line 64
async fn read_response(&mut self) -> Result<(), anyhow::Error> {async fn read_response(&mut self) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 89
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 158
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 195
pub async fn lock(&mut self, passphrase: &[u8]) -> Result<(), anyhow::Error> {pub async fn lock(&mut self, passphrase: &[u8]) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 207
pub async fn unlock(&mut self, passphrase: &[u8]) -> Result<(), anyhow::Error> {pub async fn unlock(&mut self, passphrase: &[u8]) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 220
pub async fn request_identities(&mut self) -> Result<Vec<PublicKey>, anyhow::Error> {pub async fn request_identities(&mut self) -> Result<Vec<PublicKey>, Error> { - replacement in thrussh-keys/src/agent/client.rs at line 274
) -> impl futures::Future<Output = (Self, Result<CryptoVec, anyhow::Error>)> {) -> impl futures::Future<Output = (Self, Result<CryptoVec, Error>)> { - replacement in thrussh-keys/src/agent/client.rs at line 320
fn write_signature(&self, hash: u32, data: &mut CryptoVec) -> Result<(), anyhow::Error> {fn write_signature(&self, hash: u32, data: &mut CryptoVec) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 338
) -> impl futures::Future<Output = (Self, Result<String, anyhow::Error>)> {) -> impl futures::Future<Output = (Self, Result<String, Error>)> { - replacement in thrussh-keys/src/agent/client.rs at line 361
) -> impl futures::Future<Output = Result<(Self, crate::signature::Signature), anyhow::Error>>{) -> impl futures::Future<Output = Result<(Self, crate::signature::Signature), Error>> { - replacement in thrussh-keys/src/agent/client.rs at line 368
let sig: Result<crate::signature::Signature, anyhow::Error> = {let sig: Result<crate::signature::Signature, Error> = { - replacement in thrussh-keys/src/agent/client.rs at line 404
pub async fn remove_identity(&mut self, public: &key::PublicKey) -> Result<(), anyhow::Error> {pub async fn remove_identity(&mut self, public: &key::PublicKey) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 416
pub async fn remove_smartcard_key(&mut self,id: &str,pin: &[u8],) -> Result<(), anyhow::Error> {pub async fn remove_smartcard_key(&mut self, id: &str, pin: &[u8]) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 429
pub async fn remove_all_identities(&mut self) -> Result<(), anyhow::Error> {pub async fn remove_all_identities(&mut self) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 439
pub async fn extension(&mut self, typ: &[u8], ext: &[u8]) -> Result<(), anyhow::Error> {pub async fn extension(&mut self, typ: &[u8], ext: &[u8]) -> Result<(), Error> { - replacement in thrussh-keys/src/agent/client.rs at line 452
pub async fn query_extension(&mut self,typ: &[u8],mut ext: CryptoVec,) -> Result<bool, anyhow::Error> {pub async fn query_extension(&mut self, typ: &[u8], mut ext: CryptoVec) -> Result<bool, Error> { - replacement in thrussh-keys/Cargo.toml at line 3
version = "0.19.5"version = "0.20.1" - replacement in thrussh-keys/Cargo.toml at line 32
data-encoding = "2.1"data-encoding = "2.3" - replacement in thrussh-keys/Cargo.toml at line 34
tokio = { version = "0.3", features = [ "io-util", "rt-multi-thread", "time", "net", "stream" ] }tokio = { version = "1.0", features = [ "io-util", "rt-multi-thread", "time", "net" ] } - replacement in thrussh-keys/Cargo.toml at line 37
yasna = { version = "0.3.1", features = [ "bit-vec", "num-bigint" ] }yasna = { version = "0.3.2", features = [ "bit-vec", "num-bigint" ] } - replacement in thrussh-keys/Cargo.toml at line 45
dirs = "2.0"dirs = "3.0" - edit in thrussh-keys/Cargo.toml at line 47
anyhow = "1.0" - replacement in thrussh-config/src/lib.rs at line 1
extern crate regex;#[macro_use]extern crate log;#[macro_use]extern crate thiserror;use log::debug; - edit in thrussh-config/src/lib.rs at line 5
use thiserror::*; - replacement in thrussh-config/Cargo.toml at line 4
version = "0.2.1"version = "0.5.0" - edit in thrussh-config/Cargo.toml at line 13
regex = "1.0"lazy_static = "1.0" - replacement in thrussh-config/Cargo.toml at line 15
tokio = { version = "0.3", features = [ "io-util", "net" ] }thrussh = "0.30.2"tokio = { version = "1.0", features = [ "io-util", "net", "macros" ] } - replacement in thrussh-config/Cargo.toml at line 17
thiserror = "*"[10.165370]thiserror = "1.0"whoami = "1.0" - replacement in thrussh/src/ssh_read.rs at line 113
pub async fn read_ssh_id(&mut self) -> Result<&[u8], anyhow::Error> {pub async fn read_ssh_id(&mut self) -> Result<&[u8], Error> { - replacement in thrussh/src/session.rs at line 463
) -> Result<NewKeys, anyhow::Error> {) -> Result<NewKeys, crate::Error> { - replacement in thrussh/src/server/session.rs at line 144
pub fn flush(&mut self) -> Result<(), anyhow::Error> {pub fn flush(&mut self) -> Result<(), Error> { - edit in thrussh/src/server/mod.rs at line 21
use futures::stream::TryStreamExt; - edit in thrussh/src/server/mod.rs at line 134
type Error: From<crate::Error> + Send; - replacement in thrussh/src/server/mod.rs at line 137
type FutureAuth: Future<Output = Result<(Self, Auth), anyhow::Error>> + Send;type FutureAuth: Future<Output = Result<(Self, Auth), Self::Error>> + Send; - replacement in thrussh/src/server/mod.rs at line 140
type FutureUnit: Future<Output = Result<(Self, Session), anyhow::Error>> + Send;type FutureUnit: Future<Output = Result<(Self, Session), Self::Error>> + Send; - replacement in thrussh/src/server/mod.rs at line 143
type FutureBool: Future<Output = Result<(Self, Session, bool), anyhow::Error>> + Send;type FutureBool: Future<Output = Result<(Self, Session, bool), Self::Error>> + Send; - replacement in thrussh/src/server/mod.rs at line 417
socket.try_for_each(move |socket| {let config = config.clone();let server = server.new(socket.peer_addr().ok());async move {tokio::spawn(run_stream(config, socket, server));Ok(())}}).await?;while let Ok((socket, _)) = socket.accept().await {let config = config.clone();let server = server.new(socket.peer_addr().ok());tokio::spawn(run_stream(config, socket, server));} - replacement in thrussh/src/server/mod.rs at line 443
) -> Result<(usize, R, SSHBuffer), anyhow::Error> {) -> Result<(usize, R, SSHBuffer), Error> { - replacement in thrussh/src/server/mod.rs at line 453
) -> Result<H, anyhow::Error>) -> Result<H, H::Error> - replacement in thrussh/src/server/mod.rs at line 463
stream.write_all(&write_buffer.buffer[..]).await?;stream.write_all(&write_buffer.buffer[..]).await.map_err(crate::Error::from)?; - replacement in thrussh/src/server/mod.rs at line 481
.await?;.await.map_err(crate::Error::from)?; - replacement in thrussh/src/server/mod.rs at line 496
Err(e) => return Err(e)Err(e) => return Err(e.into()) - replacement in thrussh/src/server/mod.rs at line 525
Err(e) => {error!("{:?}", e);return Err(e)}Err(e) => return Err(e), - replacement in thrussh/src/server/mod.rs at line 570
.await?;.await.map_err(crate::Error::from)?; - replacement in thrussh/src/server/mod.rs at line 576
stream_write.shutdown().await?;stream_write.shutdown().await.map_err(crate::Error::from)?; - replacement in thrussh/src/server/mod.rs at line 597
) -> Result<CommonSession<Arc<Config>>, anyhow::Error> {) -> Result<CommonSession<Arc<Config>>, Error> { - replacement in thrussh/src/server/mod.rs at line 636
) -> Result<Session, anyhow::Error> {) -> Result<Session, H::Error> { - replacement in thrussh/src/server/kex.rs at line 20
) -> Result<Kex, anyhow::Error> {) -> Result<Kex, Error> { - replacement in thrussh/src/server/kex.rs at line 56
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/server/kex.rs at line 73
) -> Result<Kex, anyhow::Error> {) -> Result<Kex, Error> { - replacement in thrussh/src/server/kex.rs at line 93
let hash: Result<openssl::hash::DigestBytes, anyhow::Error> = HASH_BUF.with(|buffer| {let hash: Result<openssl::hash::DigestBytes, Error> = HASH_BUF.with(|buffer| { - replacement in thrussh/src/server/encrypted.rs at line 34
) -> Result<Self, anyhow::Error> {) -> Result<Self, H::Error> { - replacement in thrussh/src/server/encrypted.rs at line 94
let request = r.read_string()?;let request = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 179
) -> Result<(), anyhow::Error> {) -> Result<(), H::Error> { - replacement in thrussh/src/server/encrypted.rs at line 182
let user = r.read_string()?;let user = std::str::from_utf8(user)?;let service_name = r.read_string()?;let method = r.read_string()?;let user = r.read_string().map_err(crate::Error::from)?;let user = std::str::from_utf8(user).map_err(crate::Error::from)?;let service_name = r.read_string().map_err(crate::Error::from)?;let method = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 203
r.read_byte()?;let password = r.read_string()?;let password = std::str::from_utf8(password)?;r.read_byte().map_err(crate::Error::from)?;let password = r.read_string().map_err(crate::Error::from)?;let password = std::str::from_utf8(password).map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 231
let _ = r.read_string()?; // language_tag, deprecated.let submethods = std::str::from_utf8(r.read_string()?)?;let _ = r.read_string().map_err(crate::Error::from)?; // language_tag, deprecated.let submethods = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 276
) -> Result<(), anyhow::Error> {) -> Result<(), H::Error> { - replacement in thrussh/src/server/encrypted.rs at line 282
let is_real = r.read_byte()?;let pubkey_algo = r.read_string()?;let pubkey_key = r.read_string()?;let is_real = r.read_byte().map_err(crate::Error::from)?;let pubkey_algo = r.read_string().map_err(crate::Error::from)?;let pubkey_key = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 300
let signature = r.read_string()?;let signature = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 303
let algo_ = s.read_string()?;let algo_ = s.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 306
let sig = s.read_string()?;let sig = s.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 376
if let Some(thrussh_keys::Error::CouldNotReadKey) = e.downcast_ref() {if let thrussh_keys::Error::CouldNotReadKey = e { - replacement in thrussh/src/server/encrypted.rs at line 380
Err(e)Err(crate::Error::from(e).into()) - replacement in thrussh/src/server/encrypted.rs at line 417
) -> Result<bool, anyhow::Error> {) -> Result<bool, H::Error> { - replacement in thrussh/src/server/encrypted.rs at line 420
let n = r.read_u32()?;let n = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 427
reply_userauth_info_response(until, auth_request, write, auth).awaitreply_userauth_info_response(until, auth_request, write, auth).await.map_err(|e| H::Error::from(crate::Error::from(e))) - replacement in thrussh/src/server/encrypted.rs at line 441
) -> Result<bool, anyhow::Error> {) -> Result<bool, Error> { - replacement in thrussh/src/server/encrypted.rs at line 479
) -> Result<Self, anyhow::Error> {) -> Result<Self, H::Error> { - replacement in thrussh/src/server/encrypted.rs at line 488
let channel_num = ChannelId(r.read_u32()?);let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?); - replacement in thrussh/src/server/encrypted.rs at line 500
let channel_num = ChannelId(r.read_u32()?);let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?); - replacement in thrussh/src/server/encrypted.rs at line 509
let channel_num = ChannelId(r.read_u32()?);let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?); - replacement in thrussh/src/server/encrypted.rs at line 514
Some(r.read_u32()?)Some(r.read_u32().map_err(crate::Error::from)?) - replacement in thrussh/src/server/encrypted.rs at line 517
let data = r.read_string()?;let data = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 541
let channel_num = ChannelId(r.read_u32()?);let amount = r.read_u32()?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let amount = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 563
let channel_num = ChannelId(r.read_u32()?);let req_type = r.read_string()?;let wants_reply = r.read_byte()?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let req_type = r.read_string().map_err(crate::Error::from)?;let wants_reply = r.read_byte().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 573
let term = std::str::from_utf8(r.read_string()?)?;let col_width = r.read_u32()?;let row_height = r.read_u32()?;let pix_width = r.read_u32()?;let pix_height = r.read_u32()?;let term =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let col_width = r.read_u32().map_err(crate::Error::from)?;let row_height = r.read_u32().map_err(crate::Error::from)?;let pix_width = r.read_u32().map_err(crate::Error::from)?;let pix_height = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 583
let mode_string = r.read_string()?;let mode_string = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 617
let single_connection = r.read_byte()? != 0;let x11_auth_protocol = std::str::from_utf8(r.read_string()?)?;let x11_auth_cookie = std::str::from_utf8(r.read_string()?)?;let x11_screen_number = r.read_u32()?;let single_connection = r.read_byte().map_err(crate::Error::from)? != 0;let x11_auth_protocol =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let x11_auth_cookie =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let x11_screen_number = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 641
let env_variable = std::str::from_utf8(r.read_string()?)?;let env_value = std::str::from_utf8(r.read_string()?)?;let env_variable =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let env_value =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 663
let req = r.read_string()?;let req = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 672
let name = std::str::from_utf8(r.read_string()?)?;let name =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 682
let col_width = r.read_u32()?;let row_height = r.read_u32()?;let pix_width = r.read_u32()?;let pix_height = r.read_u32()?;let col_width = r.read_u32().map_err(crate::Error::from)?;let row_height = r.read_u32().map_err(crate::Error::from)?;let pix_width = r.read_u32().map_err(crate::Error::from)?;let pix_height = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 702
r.read_byte()?; // should be 0.let signal_name = Sig::from_name(r.read_string()?)?;r.read_byte().map_err(crate::Error::from)?; // should be 0.let signal_name =Sig::from_name(r.read_string().map_err(crate::Error::from)?)?; - replacement in thrussh/src/server/encrypted.rs at line 729
let req_type = r.read_string()?;self.common.wants_reply = r.read_byte()? != 0;let req_type = r.read_string().map_err(crate::Error::from)?;self.common.wants_reply = r.read_byte().map_err(crate::Error::from)? != 0; - replacement in thrussh/src/server/encrypted.rs at line 733
let address = std::str::from_utf8(r.read_string()?)?;let port = r.read_u32()?;let address =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let port = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 751
let address = std::str::from_utf8(r.read_string()?)?;let port = r.read_u32()?;let address =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let port = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 790
) -> Result<Self, anyhow::Error> {) -> Result<Self, H::Error> { - replacement in thrussh/src/server/encrypted.rs at line 793
let typ = r.read_string()?;let sender = r.read_u32()?;let window = r.read_u32()?;let maxpacket = r.read_u32()?;let typ = r.read_string().map_err(crate::Error::from)?;let sender = r.read_u32().map_err(crate::Error::from)?;let window = r.read_u32().map_err(crate::Error::from)?;let maxpacket = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 827
let a = std::str::from_utf8(r.read_string()?)?;let b = r.read_u32()?;let a = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let b = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/server/encrypted.rs at line 837
let a = std::str::from_utf8(r.read_string()?)?;let b = r.read_u32()?;let c = std::str::from_utf8(r.read_string()?)?;let d = r.read_u32()?;let a = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let b = r.read_u32().map_err(crate::Error::from)?;let c = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let d = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/negotiation.rs at line 110
fn read_kex(buffer: &[u8], pref: &Preferred) -> Result<Names, anyhow::Error> {fn read_kex(buffer: &[u8], pref: &Preferred) -> Result<Names, Error> { - replacement in thrussh/src/negotiation.rs at line 224
pub fn write_kex(prefs: &Preferred, buf: &mut CryptoVec) -> Result<(), anyhow::Error> {pub fn write_kex(prefs: &Preferred, buf: &mut CryptoVec) -> Result<(), Error> { - edit in thrussh/src/lib.rs at line 315
/// anyhow::Errors. - edit in thrussh/src/lib.rs at line 403
#[error(transparent)]Keys(#[from] thrussh_keys::Error),#[error(transparent)]IO(#[from] std::io::Error),#[error(transparent)]Utf8(#[from] std::str::Utf8Error),#[error(transparent)]Compress(#[from] flate2::CompressError),#[error(transparent)]Decompress(#[from] flate2::DecompressError),#[error(transparent)]Join(#[from] tokio::task::JoinError),#[error(transparent)]Openssl(#[from] openssl::error::ErrorStack),#[error(transparent)]Elapsed(#[from] tokio::time::error::Elapsed), - edit in thrussh/src/lib.rs at line 429
#[derive(Debug, Error)]#[error("Could not reach the event loop")]pub struct SendError {} - replacement in thrussh/src/lib.rs at line 434
pub trait FromFinished<T>: futures::Future<Output = Result<T, anyhow::Error>> {pub trait FromFinished<T>: futures::Future<Output = Result<T, Error>> { - replacement in thrussh/src/lib.rs at line 439
impl<T> FromFinished<T> for futures::future::Ready<Result<T, anyhow::Error>> {impl<T> FromFinished<T> for futures::future::Ready<Result<T, Error>> { - replacement in thrussh/src/lib.rs at line 445
impl<T: 'static> FromFinished<T>for Box<dyn futures::Future<Output = Result<T, anyhow::Error>> + Unpin>{impl<T: 'static> FromFinished<T> for Box<dyn futures::Future<Output = Result<T, Error>> + Unpin> { - replacement in thrussh/src/lib.rs at line 487
pub use auth::MethodSet;pub use auth::{AgentAuthError, MethodSet, Signer}; - replacement in thrussh/src/lib.rs at line 552
fn from_name(name: &[u8]) -> Result<Sig, anyhow::Error> {fn from_name(name: &[u8]) -> Result<Sig, Error> { - replacement in thrussh/src/lib.rs at line 647
#[tokio::test(threaded_scheduler)]#[tokio::test] - edit in thrussh/src/lib.rs at line 650
}#[tokio::test(threaded_scheduler)]async fn compress_test() {test_compress(false).await - replacement in thrussh/src/lib.rs at line 721
type FutureAuth = futures::future::Ready<Result<(Self, server::Auth), anyhow::Error>>;type FutureUnit = futures::future::Ready<Result<(Self, Session), anyhow::Error>>;type FutureBool = futures::future::Ready<Result<(Self, Session, bool), anyhow::Error>>;type Error = super::Error;type FutureAuth = futures::future::Ready<Result<(Self, server::Auth), Self::Error>>;type FutureUnit = futures::future::Ready<Result<(Self, Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, Session, bool), Self::Error>>; - replacement in thrussh/src/lib.rs at line 755
type FutureUnit = futures::future::Ready<Result<(Self, client::Session), anyhow::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), anyhow::Error>>;type Error = super::Error;type FutureUnit = futures::future::Ready<Result<(Self, client::Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), Self::Error>>; - replacement in thrussh/src/kex.rs at line 64
) -> Result<Algorithm, anyhow::Error> {) -> Result<Algorithm, crate::Error> { - replacement in thrussh/src/kex.rs at line 97
) -> Result<Algorithm, anyhow::Error> {) -> Result<Algorithm, crate::Error> { - replacement in thrussh/src/kex.rs at line 117
pub fn compute_shared_secret(&mut self, remote_pubkey_: &[u8]) -> Result<(), anyhow::Error> {pub fn compute_shared_secret(&mut self, remote_pubkey_: &[u8]) -> Result<(), crate::Error> { - replacement in thrussh/src/kex.rs at line 133
) -> Result<openssl::hash::DigestBytes, anyhow::Error> {) -> Result<openssl::hash::DigestBytes, crate::Error> { - replacement in thrussh/src/kex.rs at line 163
) -> Result<super::cipher::CipherPair, anyhow::Error> {) -> Result<super::cipher::CipherPair, crate::Error> { - replacement in thrussh/src/kex.rs at line 172
let compute_key = |c, key: &mut CryptoVec, len| -> Result<(), anyhow::Error> {let compute_key = |c, key: &mut CryptoVec, len| -> Result<(), crate::Error> { - replacement in thrussh/src/compression.rs at line 74
) -> Result<&'a [u8], anyhow::Error> {) -> Result<&'a [u8], Error> { - replacement in thrussh/src/compression.rs at line 85
) -> Result<&'a [u8], anyhow::Error> {) -> Result<&'a [u8], Error> { - replacement in thrussh/src/compression.rs at line 96
) -> Result<&'a [u8], anyhow::Error> {) -> Result<&'a [u8], crate::Error> { - replacement in thrussh/src/compression.rs at line 129
) -> Result<&'a [u8], anyhow::Error> {) -> Result<&'a [u8], crate::Error> { - replacement in thrussh/src/client/session.rs at line 4
pub fn channel_open_session(&mut self) -> Result<ChannelId, anyhow::Error> {pub fn channel_open_session(&mut self) -> Result<ChannelId, Error> { - replacement in thrussh/src/client/session.rs at line 41
) -> Result<ChannelId, anyhow::Error> {) -> Result<ChannelId, Error> { - replacement in thrussh/src/client/session.rs at line 83
) -> Result<ChannelId, anyhow::Error> {) -> Result<ChannelId, Error> { - replacement in thrussh/src/client/proxy.rs at line 24
pub fn proxy_connect(cmd: &str, args: &[&str]) -> Result<Stream, anyhow::Error> {pub fn proxy_connect(cmd: &str, args: &[&str]) -> Result<Stream, std::io::Error> { - replacement in thrussh/src/client/mod.rs at line 185
pub struct Handle {pub struct Handle<H: Handler> { - replacement in thrussh/src/client/mod.rs at line 188
join: tokio::task::JoinHandle<Result<(), anyhow::Error>>,join: tokio::task::JoinHandle<Result<(), H::Error>>, - replacement in thrussh/src/client/mod.rs at line 191
impl Drop for Handle {impl<H: Handler> Drop for Handle<H> { - replacement in thrussh/src/client/mod.rs at line 210
impl Handle {impl<H: Handler> Handle<H> { - replacement in thrussh/src/client/mod.rs at line 215
) -> Result<bool, anyhow::Error> {) -> Result<bool, Error> { - replacement in thrussh/src/client/mod.rs at line 240
) -> Result<bool, anyhow::Error> {) -> Result<bool, Error> { - replacement in thrussh/src/client/mod.rs at line 264
) -> Result<(S, bool), anyhow::Error> {) -> (S, Result<bool, S::Error>) { - replacement in thrussh/src/client/mod.rs at line 266
self.senderif let Err(_) = self.sender - replacement in thrussh/src/client/mod.rs at line 273
.map_err(|_| Error::SendError)?;{return (future, Err((crate::SendError {}).into()));} - replacement in thrussh/src/client/mod.rs at line 279
Some(Reply::AuthSuccess) => return Ok((future, true)),Some(Reply::AuthFailure) => return Ok((future, false)),Some(Reply::AuthSuccess) => return (future, Ok(true)),Some(Reply::AuthFailure) => return (future, Ok(false)), - replacement in thrussh/src/client/mod.rs at line 284
let data = data?;self.sender.send(Msg::Signed { data }).await.map_err(|_| Error::SendError)?;let data = match data {Ok(data) => data,Err(e) => return (future, Err(e.into())),};if let Err(_) = self.sender.send(Msg::Signed { data }).await {return (future, Err((crate::SendError {}).into()));} - replacement in thrussh/src/client/mod.rs at line 292
None => return Ok((future, false)),None => return (future, Ok(false)), - replacement in thrussh/src/client/mod.rs at line 301
) -> Result<Channel, anyhow::Error> {) -> Result<Channel, Error> { - replacement in thrussh/src/client/mod.rs at line 334
pub async fn channel_open_session(&mut self) -> Result<Channel, anyhow::Error> {pub async fn channel_open_session(&mut self) -> Result<Channel, Error> { - replacement in thrussh/src/client/mod.rs at line 348
) -> Result<Channel, anyhow::Error> {) -> Result<Channel, Error> { - replacement in thrussh/src/client/mod.rs at line 372
) -> Result<Channel, anyhow::Error> {) -> Result<Channel, Error> { - replacement in thrussh/src/client/mod.rs at line 393
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 427
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 446
pub async fn request_shell(&mut self, want_reply: bool) -> Result<(), anyhow::Error> {pub async fn request_shell(&mut self, want_reply: bool) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 465
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 482
pub async fn signal(&mut self, signal: Sig) -> Result<(), anyhow::Error> {pub async fn signal(&mut self, signal: Sig) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 499
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 520
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 539
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 563
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 585
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 606
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 625
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 636
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 644
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 683
async fn send_data_packet(&mut self,ext: Option<u32>,data: CryptoVec,) -> Result<(), anyhow::Error> {async fn send_data_packet(&mut self, ext: Option<u32>, data: CryptoVec) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 706
pub async fn eof(&mut self) -> Result<(), anyhow::Error> {pub async fn eof(&mut self) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 731
impl Future for Handle {type Output = Result<(), anyhow::Error>;impl<H: Handler> Future for Handle<H> {type Output = Result<(), H::Error>; - replacement in thrussh/src/client/mod.rs at line 737
Err(e) => Err(e.into()),Err(e) => Err(crate::Error::from(e).into()), - replacement in thrussh/src/client/mod.rs at line 750
) -> Result<Handle, anyhow::Error> {let addr = addr.to_socket_addrs()?.next().unwrap();let socket = TcpStream::connect(addr).await?;) -> Result<Handle<H>, H::Error> {let addr = addr.to_socket_addrs().map_err(crate::Error::from)?.next().unwrap();let socket = TcpStream::connect(addr).await.map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 764
) -> Result<Handle, anyhow::Error>) -> Result<Handle<H>, H::Error> - replacement in thrussh/src/client/mod.rs at line 772
stream.write_all(&write_buffer.buffer).await?;stream.write_all(&write_buffer.buffer).await.map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 821
) -> Result<(usize, R, SSHBuffer), anyhow::Error> {) -> Result<(usize, R, SSHBuffer), Error> { - replacement in thrussh/src/client/mod.rs at line 833
) -> Result<(), anyhow::Error> {) -> Result<(), H::Error> { - replacement in thrussh/src/client/mod.rs at line 837
stream.write_all(&self.common.write_buffer.buffer).await?;stream.flush().await?;stream.write_all(&self.common.write_buffer.buffer).await.map_err(crate::Error::from)?;stream.flush().await.map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 857
Err(e) => return Err(e)Err(e) => return Err(e.into()) - replacement in thrussh/src/client/mod.rs at line 952
.await?;stream_write.flush().await?;.await.map_err(crate::Error::from)?;stream_write.flush().await.map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 966
stream_write.shutdown().await?;stream_write.shutdown().await.map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 981
fn read_ssh_id(&mut self, sshid: &[u8]) -> Result<(), anyhow::Error> {fn read_ssh_id(&mut self, sshid: &[u8]) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 1007
fn flush(&mut self) -> Result<(), anyhow::Error> {fn flush(&mut self) -> Result<(), Error> { - replacement in thrussh/src/client/mod.rs at line 1041
) -> Result<Kex, anyhow::Error> {) -> Result<Kex, H::Error> { - replacement in thrussh/src/client/mod.rs at line 1043
let pubkey = reader.read_string()?; // server public key.let pubkey = parse_public_key(pubkey)?;let pubkey = reader.read_string().map_err(crate::Error::from)?; // server public key.let pubkey = parse_public_key(pubkey).map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 1058
let server_ephemeral = reader.read_string()?;let server_ephemeral = reader.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 1060
let signature = reader.read_string()?;let signature = reader.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 1071
let sig_type = sig_reader.read_string()?;let sig_type = sig_reader.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/mod.rs at line 1073
sig_reader.read_string()?sig_reader.read_string().map_err(crate::Error::from)? - replacement in thrussh/src/client/mod.rs at line 1095
) -> Result<Session, anyhow::Error> {) -> Result<Session, H::Error> { - edit in thrussh/src/client/mod.rs at line 1194
type Error: From<crate::Error> + Send; - replacement in thrussh/src/client/mod.rs at line 1197
type FutureBool: Future<Output = Result<(Self, bool), anyhow::Error>> + Send;type FutureBool: Future<Output = Result<(Self, bool), Self::Error>> + Send; - replacement in thrussh/src/client/mod.rs at line 1201
type FutureUnit: Future<Output = Result<(Self, Session), anyhow::Error>> + Send;type FutureUnit: Future<Output = Result<(Self, Session), Self::Error>> + Send; - replacement in thrussh/src/client/kex.rs at line 15
) -> Result<KexDhDone, anyhow::Error> {) -> Result<KexDhDone, Error> { - replacement in thrussh/src/client/kex.rs at line 61
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/client/encrypted.rs at line 37
) -> Result<Self, anyhow::Error> {) -> Result<Self, C::Error> { - replacement in thrussh/src/client/encrypted.rs at line 125
if r.read_string()? == b"ssh-userauth" {if r.read_string().map_err(crate::Error::from)? == b"ssh-userauth" { - replacement in thrussh/src/client/encrypted.rs at line 159
let banner = r.read_string()?;let banner = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 172
let remaining_methods = r.read_string()?;let remaining_methods = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 261
) -> Result<Self, anyhow::Error> {) -> Result<Self, C::Error> { - replacement in thrussh/src/client/encrypted.rs at line 266
let id_send = ChannelId(reader.read_u32()?);let id_recv = reader.read_u32()?;let window = reader.read_u32()?;let max_packet = reader.read_u32()?;let id_send = ChannelId(reader.read_u32().map_err(crate::Error::from)?);let id_recv = reader.read_u32().map_err(crate::Error::from)?;let window = reader.read_u32().map_err(crate::Error::from)?;let max_packet = reader.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 294
let channel_num = ChannelId(r.read_u32()?);let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?); - replacement in thrussh/src/client/encrypted.rs at line 306
let channel_num = ChannelId(r.read_u32()?);let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?); - replacement in thrussh/src/client/encrypted.rs at line 315
let channel_num = ChannelId(r.read_u32()?);let reason_code = ChannelOpenFailure::from_u32(r.read_u32()?).unwrap();let descr = std::str::from_utf8(r.read_string()?)?;let language = std::str::from_utf8(r.read_string()?)?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let reason_code =ChannelOpenFailure::from_u32(r.read_u32().map_err(crate::Error::from)?).unwrap();let descr = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let language = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 336
let channel_num = ChannelId(r.read_u32()?);let data = r.read_string()?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let data = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 355
let channel_num = ChannelId(r.read_u32()?);let extended_code = r.read_u32()?;let data = r.read_string()?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let extended_code = r.read_u32().map_err(crate::Error::from)?;let data = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 376
let channel_num = ChannelId(r.read_u32()?);let req = r.read_string()?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let req = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 386
let a = std::str::from_utf8(r.read_string()?)?;let b = r.read_u32()?;let c = std::str::from_utf8(r.read_string()?)?;let d = r.read_u32()?;let a = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let b = r.read_u32().map_err(crate::Error::from)?;let c = std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let d = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 396
r.read_byte()?; // should be 0.let client_can_do = r.read_byte()?;r.read_byte().map_err(crate::Error::from)?; // should be 0.let client_can_do = r.read_byte().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 401
r.read_byte()?; // should be 0.let exit_status = r.read_u32()?;r.read_byte().map_err(crate::Error::from)?; // should be 0.let exit_status = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 406
r.read_byte()?; // should be 0.let signal_name = Sig::from_name(r.read_string()?)?;let core_dumped = r.read_byte()?;let error_message = std::str::from_utf8(r.read_string()?)?;let lang_tag = std::str::from_utf8(r.read_string()?)?;r.read_byte().map_err(crate::Error::from)?; // should be 0.let signal_name =Sig::from_name(r.read_string().map_err(crate::Error::from)?)?;let core_dumped = r.read_byte().map_err(crate::Error::from)?;let error_message =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?;let lang_tag =std::str::from_utf8(r.read_string().map_err(crate::Error::from)?).map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 437
let channel_num = ChannelId(r.read_u32()?);let amount = r.read_u32()?;let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?);let amount = r.read_u32().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 456
let req = r.read_string()?;let req = r.read_string().map_err(crate::Error::from)?; - replacement in thrussh/src/client/encrypted.rs at line 462
let channel_num = ChannelId(r.read_u32()?);let channel_num = ChannelId(r.read_u32().map_err(crate::Error::from)?); - replacement in thrussh/src/client/encrypted.rs at line 574
) -> Result<(), anyhow::Error> {) -> Result<(), Error> { - replacement in thrussh/src/cipher/mod.rs at line 19
use tokio::io::AsyncRead;use tokio::io::{AsyncRead, AsyncReadExt}; - edit in thrussh/src/cipher/mod.rs at line 22
use tokio::prelude::*; - replacement in thrussh/src/cipher/mod.rs at line 109
) -> Result<usize, anyhow::Error> {) -> Result<usize, Error> { - replacement in thrussh/src/auth.rs at line 64
fn auth_publickey_sign(self,key: &key::PublicKey,to_sign: CryptoVec,) -> std::pin::Pin<Box<dyn futures::Future<Output = (Self, Result<CryptoVec, anyhow::Error>)> + Send>,>;type Error: From<crate::SendError>;type Future: futures::Future<Output = (Self, Result<CryptoVec, Self::Error>)> + Send;fn auth_publickey_sign(self, key: &key::PublicKey, to_sign: CryptoVec) -> Self::Future;}#[derive(Debug, Error)]pub enum AgentAuthError {#[error(transparent)]Send(#[from] crate::SendError),#[error(transparent)]Key(#[from] thrussh_keys::Error), - replacement in thrussh/src/auth.rs at line 81
fn auth_publickey_sign(self,key: &key::PublicKey,to_sign: CryptoVec,) -> std::pin::Pin<Box<dyn futures::Future<Output = (Self, Result<CryptoVec, anyhow::Error>)> + Send>,> {type Error = AgentAuthError;type Future = std::pin::Pin<Box<dyn futures::Future<Output = (Self, Result<CryptoVec, Self::Error>)> + Send>,>;fn auth_publickey_sign(self, key: &key::PublicKey, to_sign: CryptoVec) -> Self::Future { - replacement in thrussh/src/auth.rs at line 87
futures::FutureExt::boxed(async move { fut.await })futures::FutureExt::boxed(async move {let (a, b) = fut.await;(a, b.map_err(AgentAuthError::Key))}) - replacement in thrussh/examples/client.rs at line 14
type FutureUnit = futures::future::Ready<Result<(Self, client::Session), anyhow::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), anyhow::Error>>;type Error = thrussh::Error;type FutureUnit = futures::future::Ready<Result<(Self, client::Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), Self::Error>>; - replacement in thrussh/Cargo.toml at line 5
version = "0.30.9"version = "0.32.1" - replacement in thrussh/Cargo.toml at line 46
log = { version = "0.4", features = ["release_max_level_off"] }thrussh-keys = "0.19.4"log = "0.4"thrussh-keys = "0.20.0" - replacement in thrussh/Cargo.toml at line 51
tokio = { version = "0.3", features = [ "io-util", "rt-multi-thread", "time", "stream", "net", "sync", "macros" ] }tokio = { version = "1.0", features = [ "io-util", "rt-multi-thread", "time", "net", "sync", "macros" ] } - edit in thrussh/Cargo.toml at line 54
anyhow = "1.0" - replacement in thrussh/Cargo.toml at line 58
tokio = { version = "0.3", features = [ "io-util", "rt-multi-thread", "time", "stream", "net", "sync", "macros" ] }[10.427414]tokio = { version = "1.0", features = [ "io-util", "rt-multi-thread", "time", "net", "sync", "macros" ] }anyhow = "1.0"