Go Dtls Save

Golang: DTLS protocol

Project README

Golang: DTLS Protocol

Build Status Coverage Status Go Report Card GoDoc

Work in progress, stay tuned...

Features

  • Client handshake
  • Server handshake
  • Retransmission
  • ...
  • Session Tickets

Installation

go get github.com/pixelbender/go-dtls

DTLS Client

package main

import (
    "github.com/pixelbender/go-dtls/dtls"
    "log"
)

func main() {
    conn, err := dtls.Dial("udp", "example.com:5000", nil)
    if err != nil {
        log.Fatal(err)
    }
    defer conn.Close()
    // Use conn as net.Conn...
}

DTLS Server

package main

import (
    "github.com/pixelbender/go-dtls/dtls"
    "crypto/tls"
    "log"
)

func main() {
    cert, err := tls.LoadX509KeyPair("cert.pem", "key.pem")
    if err != nil {
        log.Fatal(err)
    }
    config := &dtls.Config{Certificates: []tls.Certificate{cert}}
    
    l, err := dtls.Listen("udp", ":5000", config)
    if err != nil {
        log.Fatal(err)
    }
    defer l.Close()
    for {
        // Use l as net.Listener since DTLS is connection-oriented protocol.
        conn, err := l.Accept()
        if err != nil {
            log.Fatal(err)
        }
        go func() {
            defer conn.Close()
            // Serve conn as net.Conn...
        }()
    }
}

Specifications

Open Source Agenda is not affiliated with "Go Dtls" Project. README Source: pixelbender/go-dtls
Stars
63
Open Issues
2
Last Commit
7 years ago
Repository
License
MIT
Tags

Open Source Agenda Badge

Open Source Agenda Rating