-
Notifications
You must be signed in to change notification settings - Fork 161
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Summary: Makes the README markdown formatted and adds the logo on the top. :) Reviewed By: siyengar Differential Revision: D8465425 fbshipit-source-id: d15b4e7848f729da569f56e90b0f18e9bd461bc4
- Loading branch information
1 parent
d1addf3
commit 898803b
Showing
3 changed files
with
45 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<p align="center"> | ||
<img width="500" height="216" alt="Fizz" src="https://raw.github.com/facebookincubator/fizz/master/logo2x.png"> | ||
</p> | ||
Fizz is a TLS 1.3 implementation. | ||
|
||
Fizz currently supports TLS 1.3 drafts 18-28. HelloRetryRequest, early data, | ||
and client authentication are only supported on draft 19 and above. Each draft | ||
also has a corresponding "fb" version. These match the draft versions except | ||
for some minor record layer differences. | ||
|
||
## Dependencies | ||
Fizz largely depends on three libraries: [folly](https://www.github.com/facebook/folly), | ||
[OpenSSL](https://www.openssl.org/), and [libsodium](https://github.com/jedisct1/libsodium). | ||
|
||
## Source Layout | ||
- `fizz/crypto`: Cryptographic primitive implementations (most are wrapping | ||
OpenSSL or libsodium) | ||
- `fizz/record`: TLS 1.3 record layer parsing | ||
- `fizz/protocol`: Common protocol code shared between client and server | ||
- `fizz/client`: Client protocol implementation | ||
- `fizz/server`: Server protocol implementation | ||
|
||
## Design | ||
The core protocol implementations are in `ClientProtocol` and `ServerProtocol`. | ||
`FizzClientContext` and `FizzServerContext` provide configuration options. | ||
`FizzClient` and `FizzServer` (which both inherit from `FizzBase`) provide | ||
applications with an interface to interact with the state machine. | ||
`FizzClient`/`FizzServer` receives events from the application layer, invokes the | ||
correct event handler, and invokes the application `ActionVisitor` to process the | ||
actions. | ||
|
||
`AsyncFizzClient` and `AsyncFizzServer` provide implementations of the folly | ||
`AsyncTransportWrapper` interface. They own an underlying transport (for example | ||
`AsyncSocket`) and perform the TLS handshake and encrypt/decrypt application | ||
data. | ||
|
||
## Sample Applications | ||
`ClientSocket` and `ServerSocket` provide sample usage of `AsyncFizzClient` and | ||
`AsyncFizzServer` and can be used to start up a simple TLS 1.3 client or server | ||
over a TCP connection. | ||
|
||
For example, to start ServerSocket on port 443 with a specified cert: | ||
`ServerSocket -port 443 -cert foo.pem -key foo.key`. Then, on the same host, | ||
you can connect with `ClientSocket -host localhost -port 443`. Both will dump | ||
the data they get and will remain running until interrupted via CTRL+C. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.