Rod Hynes 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
..
LICENSES 7b7338b11e fork and replace pion/dtls il y a 2 ans
e2e 7b7338b11e fork and replace pion/dtls il y a 2 ans
internal 7b7338b11e fork and replace pion/dtls il y a 2 ans
pkg 9d65882fca tunnel-core/inproxy integration: forked pion modules il y a 1 an
AUTHORS.txt 7b7338b11e fork and replace pion/dtls il y a 2 ans
LICENSE 7b7338b11e fork and replace pion/dtls il y a 2 ans
README.md 7b7338b11e fork and replace pion/dtls il y a 2 ans
bench_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
certificate.go 9d65882fca tunnel-core/inproxy integration: forked pion modules il y a 1 an
certificate_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
cipher_suite.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
cipher_suite_go114.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
cipher_suite_go114_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
cipher_suite_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
codecov.yml 7b7338b11e fork and replace pion/dtls il y a 2 ans
compression_method.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
config.go 9d65882fca tunnel-core/inproxy integration: forked pion modules il y a 1 an
config_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
conn.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
conn_go_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
conn_test.go 9d65882fca tunnel-core/inproxy integration: forked pion modules il y a 1 an
crypto.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
crypto_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
dtls.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
errors.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
errors_errno.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
errors_errno_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
errors_noerrno.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
errors_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
flight.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
flight0handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight1handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight2handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight3handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight4bhandler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight4handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight4handler_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
flight5bhandler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight5handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flight6handler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
flighthandler.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
fragment_buffer.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
fragment_buffer_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
go.mod 7b7338b11e fork and replace pion/dtls il y a 2 ans
handshake_cache.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
handshake_cache_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
handshake_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
handshaker.go 44f2f2d527 New SetDTLSSeed scheme il y a 1 an
handshaker_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
listener.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
nettest_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
packet.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
renovate.json 7b7338b11e fork and replace pion/dtls il y a 2 ans
replayprotection_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
resume.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
resume_test.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
session.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
srtp_protection_profile.go 7b7338b11e fork and replace pion/dtls il y a 2 ans
state.go 9d65882fca tunnel-core/inproxy integration: forked pion modules il y a 1 an
util.go 7b7338b11e fork and replace pion/dtls il y a 2 ans

README.md


Pion DTLS

A Go implementation of DTLS

Pion DTLS Sourcegraph Widget Slack Widget
GitHub Workflow Status Go Reference Coverage Status Go Report Card


Native DTLS 1.2 implementation in the Go programming language.

A long term goal is a professional security review, and maybe an inclusion in stdlib.

RFCs

Implemented

Goals/Progress

This will only be targeting DTLS 1.2, and the most modern/common cipher suites. We would love contributions that fall under the 'Planned Features' and any bug fixes!

Current features

  • DTLS 1.2 Client/Server
  • Key Exchange via ECDHE(curve25519, nistp256, nistp384) and PSK
  • Packet loss and re-ordering is handled during handshaking
  • Key export (RFC 5705)
  • Serialization and Resumption of sessions
  • Extended Master Secret extension (RFC 7627)
  • ALPN extension (RFC 7301)

Supported ciphers

ECDHE
  • TLS_ECDHE_ECDSA_WITH_AES_128_CCM (RFC 6655)
  • TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 (RFC 6655)
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (RFC 5289)
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (RFC 5289)
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (RFC 5289)
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (RFC 5289)
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (RFC 8422)
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (RFC 8422)
PSK
ECDHE & PSK
  • TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 (RFC 5489)

Planned Features

  • Chacha20Poly1305

Excluded Features

  • DTLS 1.0
  • Renegotiation
  • Compression

Using

This library needs at least Go 1.13, and you should have Go modules enabled.

Pion DTLS

For a DTLS 1.2 Server that listens on 127.0.0.1:4444

go run examples/listen/selfsign/main.go

For a DTLS 1.2 Client that connects to 127.0.0.1:4444

go run examples/dial/selfsign/main.go

OpenSSL

Pion DTLS can connect to itself and OpenSSL.

  // Generate a certificate
  openssl ecparam -out key.pem -name prime256v1 -genkey
  openssl req -new -sha256 -key key.pem -out server.csr
  openssl x509 -req -sha256 -days 365 -in server.csr -signkey key.pem -out cert.pem

  // Use with examples/dial/selfsign/main.go
  openssl s_server -dtls1_2 -cert cert.pem -key key.pem -accept 4444

  // Use with examples/listen/selfsign/main.go
  openssl s_client -dtls1_2 -connect 127.0.0.1:4444 -debug -cert cert.pem -key key.pem

Using with PSK

Pion DTLS also comes with examples that do key exchange via PSK

Pion DTLS

go run examples/listen/psk/main.go
go run examples/dial/psk/main.go

OpenSSL

  // Use with examples/dial/psk/main.go
  openssl s_server -dtls1_2 -accept 4444 -nocert -psk abc123 -cipher PSK-AES128-CCM8

  // Use with examples/listen/psk/main.go
  openssl s_client -dtls1_2 -connect 127.0.0.1:4444 -psk abc123 -cipher PSK-AES128-CCM8

Community

Pion has an active community on the Slack.

Follow the Pion Twitter for project updates and important WebRTC news.

We are always looking to support your projects. Please reach out if you have something to build! If you need commercial support or don't want to use public methods you can contact us at team@pion.ly

Contributing

Check out the contributing wiki to join the group of amazing people making this project possible: AUTHORS.txt

License

MIT License - see LICENSE for full text