shs_async

Async secret-handshake protocol (for Secure Scuttlebutt (SSB)).

```rust

![feature(asyncawait, awaitmacro, futures_api)]

use shs_async::*;

let stream = someasyncreadasyncwrite_stream();

let netid = NetworkId::SSBMAINNET; let (pk, sk) = server::generatelongterm_keypair();

let outcome = await!(server(stream, net_id, pk, sk));

// outcome is: // pub struct HandshakeOutcome { // pub c2skey: ClientToServerKey, // pub s2ckey: ServerToClientKey, // pub c2snoncegen: ClientToServerNonceGen, // pub s2cnoncegen: ServerToClientNonceGen, // }

```

```rust

let outcome = await!(client(stream, netid, pk, sk, serverpk));

```