C# implementation of TLS 1.2/1.3
as you dig deeper, Transport Layer Security becomes Application Layer Security to you
Server/Client certificate support:
- RSA
- ECC
BulkEncryption implementation:
- AES_128_CBC
- AES_256_CBC
- AES_128_GCM
- AES_256_GCM
- ChaCha20_Poly1305
NamedGroup implementation:
- secp256r1 (0x0017)
- secp384r1 (0x0018)
- secp521r1 (0x0019)
- x25519 (0x001D)
- x448 (0x001E)
SignatureAlgorithm implementation:
- rsa_pkcs1_sha256 (0x0401) (TLS 1.3 Mandatory)
- rsa_pkcs1_sha384 (0x0501)
- rsa_pkcs1_sha512 (0x0601)
- rsa_pss_rsae_sha256 (0x0804) (TLS 1.3 Mandatory)
- rsa_pss_rsae_sha384 (0x0805)
- rsa_pss_rsae_sha512 (0x0806)
- ecdsa_secp256r1_sha256 (0x0403) (TLS 1.3 Mandatory)
- ecdsa_secp384r1_sha384 (0x0503)
- ecdsa_secp521r1_sha512 (0x0603)
CipherSuite implementation:
- TLS_RSA_WITH_AES_128_CBC_SHA (0x002F) (TLS 1.2 Mandatory)
- TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003C)
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xC013)
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xC027)
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xC009)
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xC023)
- TLS_AES_128_GCM_SHA256 (0x1301) (TLS 1.3 Mandatory)
- TLS_AES_256_GCM_SHA384 (0x1302)
- TLS_CHACHA20_POLY1305_SHA256 (0x1303) (TLS1.3 Mobile Client Prefer)
- NewSessionTicket handshake message
- Psk KeyExchange
- 0-RTT Data
-
https sample is a working demo of https service without using SslStream
-
if you don't know how to Read tls records from a stream, you were actually looking for System.Net.Security.SslStream but not this repository