@@ -5,34 +5,30 @@ embed pretty much anywhere, I'm collecting possible use cases in
55[ discussions] ( https://github.com/mkj/sunset/discussions/1 ) . Don't hesitate to
66suggest something!
77
8- ** This software is in an early stage. It is suitable for some applications
9- but will certainly have API changes**
10-
118- ` sunset ` (this toplevel) is the core SSH implementation. It provides a
129 non-async API, runs with ` no_std ` and no alloc.
1310
14- - [ ` sunset-embassy ` ] ( embassy ) - async SSH client and server library, also
15- ` no_std ` . This uses [ Embassy] ( https://embassy.dev/ ) crate but is async
16- executor agnostic.
11+ - [ ` sunset-async ` ] ( async ) - async SSH client and server library, also
12+ ` no_std ` no-alloc. This is async-executor agnostic (using Embassy for mutexes, but works on std too).
1713
18- - [ ` embassy/ demos` ] ( embassy/ demos) has demos with Embassy executor for wifi on a Raspberry Pi
19- [ Pico W] ( embassy/ demos/picow) or a
20- [ Linux tap device on ` std ` ] ( embassy/ demos/std) running locally.
14+ - [ ` demos ` ] ( demos ) has demos with Embassy executor for wifi on a Raspberry Pi
15+ [ Pico W] ( demos/picow ) or a
16+ [ Linux tap device on ` std ` ] ( demos/std ) running locally.
2117
2218 At present the Pico W build is around 150kB binary size
2319 (plus ~ 200KB [ cyw43] ( https://github.com/embassy-rs/cyw43/ ) wifi firmware),
2420 using about 15kB RAM per concurrent SSH session (max stack size not confirmed).
2521
26- - [ ` sunset-async ` ] ( async /) adds functionality to use Sunset as a normal SSH client or
22+ - [ ` sunset-stdasync ` ] ( stdasync /) adds functionality to use Sunset as a normal SSH client or
2723 server async library in normal Rust (not ` no_std ` ). This uses Tokio or async-std.
2824
29- The [ examples] ( async/examples ) include a Linux commandline SSH client ` sunsetc ` .
30- It works as a day-to-day SSH client.
25+ The [ examples] ( stdasync/examples ) include a Linux commandline SSH client ` sunsetc ` . It works as a day-to-day SSH client.
3126
3227## SSH Features
3328
3429Working:
3530
31+ - Client and server
3632- Shell or command connection
3733- Password and public key authentication
3834- ed25519 signatures
@@ -44,20 +40,22 @@ Working:
4440
4541Desirable:
4642
43+ - SFTP
4744- TCP forwarding
48- - dh-group14 (probably ` std ` -only, need to investigate crates)
45+ - Post quantum hybrid key exchange
46+ - A std server example
4947- Perhaps aes256-gcm
5048- Perhaps ECDSA, hardware often supports it ahead of ed25519
51- - SFTP
5249
5350## Rust versions
5451
55- At present Sunset will build with latest stable (1.75 at time of writing).
52+ At the time of writing Sunset will build with Rust 1.81.
53+ The requirement may increase whenever useful, targetting stable.
5654
57- ## Safety
55+ ## Checks
5856
59- Sunset uses ` forbid(unsafe) ` , apart from ` sunset-async ` which requires ` unsafe `
60- for Unix interactions.
57+ Sunset uses ` forbid(unsafe) ` , apart from ` sunset-async ` which
58+ requires ` unsafe ` for Unix interactions.
6159
6260Release builds should not panic, instead returning ` Error::bug() ` .
6361` debug_assert! ` is used in some places for invariants during testing or
0 commit comments