Implement SSH Compression Phase 2: Integration
- Add compression_ctos/compression_stoc to EncryptionContext - Default impl: CompressionContext::new(6) - from_session_keys(): initialize compression fields - enable_compression() method (based on KEX negotiation) - server.rs: enable compression after NEWKEYS (if negotiated) All 179 tests pass.
This commit is contained in:
@@ -321,6 +321,16 @@ fn perform_complete_kex_exchange(
|
||||
info!("Setting cipher mode to AES-CTR (MtE)");
|
||||
encryption_ctx.set_cipher_mode(CipherMode::AesCtr)?;
|
||||
}
|
||||
|
||||
// Phase 2: 根据 KEX 协商结果启用压缩(compression_ctos / compression_stoc)
|
||||
let compression_ctos = &kex_result.compression_ctos;
|
||||
let compression_stoc = &kex_result.compression_stoc;
|
||||
info!("KEX negotiated compression algorithms: ctos={}, stoc={}", compression_ctos, compression_stoc);
|
||||
|
||||
if compression_ctos != "none" || compression_stoc != "none" {
|
||||
info!("Enabling SSH compression");
|
||||
encryption_ctx.enable_compression(compression_ctos, compression_stoc);
|
||||
}
|
||||
|
||||
Ok(encryption_ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user