go for the paranoid network programmer, 2nd edition

203
go for the paranoid network programmer @feyeleanor 1 go for the paranoid network programmer slideshare.net/feyeleanor

Upload: eleanor-mchugh

Post on 21-Feb-2017

219 views

Category:

Software


2 download

TRANSCRIPT

gofor the paranoid network programmer

@feyeleanor

1go for the paranoid network programmer slideshare.net/feyeleanor

twitter://@feyeleanor

go for the paranoid network programmer slideshare.net/feyeleanor

high voltagenetworkingconcurrencycryptography

go for the paranoid network programmer slideshare.net/feyeleanor

http

4go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport (. "fmt""net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {http.HandleFunc("/hello", Hello)if e := http.ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w http.ResponseWriter, r *http.Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor5

package mainimport (. "fmt""net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {http.HandleFunc("/hello", Hello)if e := http.ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w http.ResponseWriter, r *http.Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor6

package mainimport (. "fmt". "net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", Hello)if e := ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor7

package mainimport (. "fmt". ”net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", Hello)if e := ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor8

package mainimport (. "fmt". ”net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", Hello)if e := ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor9

package mainimport (. "fmt". ”net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", Hello)if e := ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor10

package mainimport (. "fmt". ”net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", Hello)if e := ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor11

package mainimport (. "fmt". ”net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", Hello)if e := ListenAndServe(ADDRESS, nil); e != nil {Println(e)

}}

func Hello(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

}

go for the paranoid network programmer slideshare.net/feyeleanor12

package mainimport (. "fmt". "net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

})ListenAndServe(ADDRESS, nil)

}

go for the paranoid network programmer slideshare.net/feyeleanor13

package mainimport (. "fmt". "net/http"

)

const MESSAGE = "hello world"const ADDRESS = ":1024"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, MESSAGE)

})ListenAndServe(ADDRESS, nil)

}

go for the paranoid network programmer slideshare.net/feyeleanor14

https

15go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport (. "fmt". "net/http"

)

const ADDRESS = ":1025"

func main() {message := "hello world"HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, message)

})ListenAndServeTLS(ADDRESS, "cert.pem", "key.pem", nil)

}

go for the paranoid network programmer slideshare.net/feyeleanor16

package mainimport (. "fmt". "net/http"

)

const ADDRESS = ":1025"

func main() {message := "hello world"HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, message)

})ListenAndServeTLS(ADDRESS, "cert.pem", "key.pem", nil)

}

go for the paranoid network programmer slideshare.net/feyeleanor17

package mainimport (. "fmt". "net/http"

)

const ADDRESS = ":1025"

func main() {message := "hello world"HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, message)

})ListenAndServeTLS(ADDRESS, "cert.pem", "key.pem", nil)

}

go for the paranoid network programmer slideshare.net/feyeleanor18

package mainimport (. "fmt". "net/http"

)

const ADDRESS = ":1025"

func main() {message := "hello world"HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, message)

})ListenAndServeTLS(ADDRESS, "cert.pem", "key.pem", nil)

}

go for the paranoid network programmer slideshare.net/feyeleanor19

multiple http servers

20go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor21

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor22

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor23

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor24

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor25

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor26

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor27

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor28

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

done := make(chan bool)go func() {ListenAndServe(":1024", nil)done <- true

}()

ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)<- done

}

go for the paranoid network programmer slideshare.net/feyeleanor29

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

Spawn(func() {ListenAndServe(":1024", nil)

},func() {ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)

},)

}

go for the paranoid network programmer slideshare.net/feyeleanor30

package mainimport . "fmt"import . "net/http"

func main() {HandleFunc("/hello", func(w ResponseWriter, r *Request) {w.Header().Set("Content-Type", "text/plain")Fprintf(w, "hello world")

})

Spawn(func() {ListenAndServe(":1024", nil)

})Spawn(func() {ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil)

})}

go for the paranoid network programmer slideshare.net/feyeleanor31

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for l := len(f); l > 0; l-- {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor32

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s) }

for l := len(f); l > 0; l-- {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor33

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for l := len(f); l > 0; l-- {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor34

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for _, _ = range f {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor35

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for range f {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor36

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor37

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for range f {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor38

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for range f {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor39

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for range f {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor40

package main

func Spawn(f ...func()) {done := make(chan bool)for _, s := range f {go func(server func()) {server()done <- true

}(s)}

for range f {<- done

}}

go for the paranoid network programmer slideshare.net/feyeleanor41

waitgroups

42go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport . "net/http"import "sync"

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) {})

var servers sync.WaitGroup servers.Add(1) go func() { defer servers.Done() ListenAndServe(":1024", nil) }()

servers.Add(1) go func() { defer servers.Done() ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }() servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor43

package mainimport . "net/http"import "sync"

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) {})

var servers sync.WaitGroup servers.Add(1) go func() { defer servers.Done() ListenAndServe(":1024", nil) }()

servers.Add(1) go func() { defer servers.Done() ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }() servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor44

package mainimport . "net/http"import "sync"

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) {})

var servers sync.WaitGroup servers.Add(1) go func() { defer servers.Done() ListenAndServe(":1024", nil) }()

servers.Add(1) go func() { defer servers.Done() ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }() servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor45

package mainimport . "net/http"import "sync"

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) {})

var servers sync.WaitGroup servers.Add(1) go func() { defer servers.Done() ListenAndServe(":1024", nil) }()

servers.Add(1) go func() { defer servers.Done() ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }() servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor46

package mainimport . "net/http"import "sync"

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) {})

var servers sync.WaitGroup servers.Add(1) go func() { defer servers.Done() ListenAndServe(":1024", nil) }()

servers.Add(1) go func() { defer servers.Done() ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }() servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor47

package mainimport (. "fmt". "net/http""sync"

)

var servers sync.WaitGroup

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) { w.Header().Set("Content-Type", "text/plain") Fprintf(w, "hello world") })

Spawn(func() { ListenAndServe(":1024", nil) }) Spawn(func() { ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }) servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor48

package mainimport (. "fmt". "net/http""sync"

)

var servers sync.WaitGroup

func main() { HandleFunc("/hello", func(w ResponseWriter, r *Request) { w.Header().Set("Content-Type", "text/plain") Fprintf(w, "hello world") })

Spawn(func() { ListenAndServe(":1024", nil) }) Spawn(func() { ListenAndServeTLS(":1025", "cert.pem", "key.pem", nil) }) servers.Wait()}

go for the paranoid network programmer slideshare.net/feyeleanor49

package main

func Spawn(f ...func()) { for _, s := range f { servers.Add(1) go func(server func()) { defer servers.Done() server() }(s) }}

go for the paranoid network programmer slideshare.net/feyeleanor50

package main

func Spawn(f ...func()) { for _, s := range f { servers.Add(1) go func(server func()) { defer servers.Done() server() }(s) }}

go for the paranoid network programmer slideshare.net/feyeleanor51

tcp server

52go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport . "fmt"import "net"

func main() {if listener, e := net.Listen("tcp", ":1024"); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor53

package mainimport . "fmt"import "net"

func main() {if listener, e := net.Listen("tcp", ":1024"); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor54

package mainimport . "fmt"import "net"

func main() {if listener, e := net.Listen("tcp", ":1024"); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor55

package mainimport . "fmt"import "net"

func main() {if listener, e := net.Listen("tcp", ":1024"); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor56

package mainimport . "fmt"import "net"

func main() {if listener, e := net.Listen("tcp", ":1024"); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor57

package mainimport . "fmt"import "net"

func main() {Listen("tcp", ":1024", func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

})}

func Listen(p, a string, f func(net.Conn)) (e error) {var listener net.Listenerif listener, e = net.Listen(p, a); e == nil {for {if connection, e := listener.Accept(); e == nil {go f(connection)

}}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor58

package mainimport . "fmt"import "net"

func main() {Listen("tcp", ":1024", func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

})}

func Listen(p, a string, f func(net.Conn)) (e error) {var listener net.Listenerif listener, e = net.Listen(p, a); e == nil {for {if connection, e := listener.Accept(); e == nil {go f(connection)

}}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor59

package mainimport . "fmt"import "net"

func main() {Listen("tcp", ":1024", func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

})}

func Listen(p, a string, f func(net.Conn)) (e error) {var listener net.Listenerif listener, e = net.Listen(p, a); e == nil {for {if connection, e := listener.Accept(); e == nil {go f(connection)

}}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor60

package mainimport . "fmt"import "net"

func main() {Listen("tcp", ":1024", func(c net.Conn) {defer c.Close()Fprintln(c, "hello world")

})}

func Listen(p, a string, f func(net.Conn)) (e error) {var listener net.Listenerif listener, e = net.Listen(p, a); e == nil {for {if connection, e := listener.Accept(); e == nil {go f(connection)

}}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor61

tcp client

62go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport "bufio"import . "fmt"import "net"

func main() {if c, e := net.Dial("tcp", ":1024"); e == nil {defer c.Close()if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor63

package mainimport "bufio"import . "fmt"import "net"

func main() {if c, e := net.Dial("tcp", ":1024"); e == nil {defer c.Close()if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor64

package mainimport "bufio"import . "fmt"import "net"

func main() {if c, e := net.Dial("tcp", ":1024"); e == nil {defer c.Close()if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor65

package mainimport "bufio"import . "fmt"import "net"

func main() {if c, e := net.Dial("tcp", ":1024"); e == nil {defer c.Close()if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor66

package mainimport "bufio"import . "fmt"import "net"

func main() {if c, e := net.Dial("tcp", ":1024"); e == nil {defer c.Close()if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor67

package mainimport "bufio"import . "fmt"import "net"

func main() {if c, e := net.Dial("tcp", ":1024"); e == nil {defer c.Close()if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor68

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial("tcp", ":1024", func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func Dial(p, a string, f func(net.Conn)) (e error) {var c net.Connif c, e = net.Dial(p, a); e == nil {defer c.Close()f(c)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor69

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial("tcp", ":1024", func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func Dial(p, a string, f func(net.Conn)) (e error) {var c net.Connif c, e = net.Dial(p, a); e == nil {defer c.Close()f(c)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor70

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial("tcp", ":1024", func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func Dial(p, a string, f func(net.Conn)) (e error) {var c net.Connif c, e = net.Dial(p, a); e == nil {defer c.Close()f(c)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor71

tcp/tls server

72go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport "crypto/rand"import "crypto/tls"import . "fmt"

func main() {Listen(":1025", ConfigTLS("scert", "skey"), func(c *tls.Conn) {Fprintln(c, "hello world")

})}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },Rand: rand.Reader,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor73

package mainimport "crypto/rand"import "crypto/tls"import . "fmt"

func main() {Listen(":1025", ConfigTLS("scert", "skey"), func(c *tls.Conn) {Fprintln(c, "hello world")

})}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },Rand: rand.Reader,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor74

package mainimport "crypto/rand"import "crypto/tls"import . "fmt"

func main() {Listen(":1025", ConfigTLS("scert", "skey"), func(c *tls.Conn) {Fprintln(c, "hello world")

})}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },Rand: rand.Reader,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor75

package mainimport "crypto/rand"import "crypto/tls"import . "fmt"

func main() {Listen(":1025", ConfigTLS("scert", "skey"), func(c *tls.Conn) {Fprintln(c, "hello world")

})}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },Rand: rand.Reader,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor76

package mainimport "crypto/rand"import "crypto/tls"import . "fmt"

func main() {Listen(":1025", ConfigTLS("scert", "skey"), func(c *tls.Conn) {Fprintln(c, "hello world")

})}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },Rand: rand.Reader,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor77

package mainimport "crypto/rand"import "crypto/tls"import . "fmt"

func main() {Listen(":1025", ConfigTLS("scert", "skey"), func(c *tls.Conn) {Fprintln(c, "hello world")

})}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },Rand: rand.Reader,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor78

package mainimport "crypto/tls"

func Listen(a string, conf *tls.Config, f func(*tls.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c *tls.Conn) {defer c.Close()f(c)

}(connection.(*tls.Conn))}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor79

package mainimport "crypto/tls"

func Listen(a string, conf *tls.Config, f func(*tls.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c *tls.Conn) {defer c.Close()f(c)

}(connection.(*tls.Conn))}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor80

package mainimport "crypto/tls"

func Listen(a string, conf *tls.Config, f func(*tls.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c *tls.Conn) {defer c.Close()f(c)

}(connection.(*tls.Conn))}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor81

package mainimport "crypto/tls"

func Listen(a string, conf *tls.Config, f func(*tls.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c *tls.Conn) {defer c.Close()f(c)

}(connection.(*tls.Conn))}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor82

package mainimport "crypto/tls"

func Listen(a string, conf *tls.Config, f func(*tls.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c *tls.Conn) {defer c.Close()f(c)

}(connection.(*tls.Conn))}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor83

package mainimport "crypto/tls"

func Listen(a string, conf *tls.Config, f func(*tls.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c *tls.Conn) {defer c.Close()f(c)

}(connection.(*tls.Conn))}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor84

package mainimport "crypto/tls"import "net"

func Listen(a string, conf *tls.Config, f func(net.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()f(c)

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor85

package mainimport "crypto/tls"import "net"

func Listen(a string, conf *tls.Config, f func(net.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if connection, e := listener.Accept(); e == nil {go func(c net.Conn) {defer c.Close()f(c)

}(connection)}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor86

package mainimport "crypto/tls"import "net"

func Listen(a string, conf *tls.Config, f func(net.Conn)) {if listener, e := tls.Listen("tcp", a, conf); e == nil {for {if c, e := listener.Accept(); e == nil {go Handle(c, f)

}}

}}

func Handle(c net.Conn, f func(net.Conn)) {defer c.Close()f(c)

}

go for the paranoid network programmer slideshare.net/feyeleanor87

tcp/tls client

88go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net"

func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },InsecureSkipVerify: true,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor89

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },InsecureSkipVerify: true,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor90

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },InsecureSkipVerify: true,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor91

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },InsecureSkipVerify: true,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor92

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },InsecureSkipVerify: true,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor93

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func ConfigTLS(c, k string) (r *tls.Config) {if cert, e := tls.LoadX509KeyPair(c, k); e == nil {r = &tls.Config{Certificates: []tls.Certificate{ cert },InsecureSkipVerify: true,

}}return

}

go for the paranoid network programmer slideshare.net/feyeleanor94

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func Dial(a string, conf *tls.Config, f func(net.Conn)) { if c, e := tls.Dial("tcp", a, conf); e == nil { defer c.Close() f(c) }}

go for the paranoid network programmer slideshare.net/feyeleanor95

package mainimport "bufio"import "crypto/tls"import . "fmt"import "net" func main() {Dial(":1025", ConfigTLS("ccert", "ckey"), func(c net.Conn) {if m, e := bufio.NewReader(c).ReadString('\n'); e == nil {Printf(m)

}})

}

func Dial(a string, conf *tls.Config, f func(net.Conn)) { if c, e := tls.Dial("tcp", a, conf); e == nil { defer c.Close() f(c) }}

go for the paranoid network programmer slideshare.net/feyeleanor96

udp serve

97go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor98

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor99

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor100

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor101

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor102

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor103

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor104

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor105

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor106

package mainimport "net"

func main() {HELLO_WORLD := []byte("Hello World\n")Listen(":1024", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {c.WriteToUDP(HELLO_WORLD, a)

})}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := conn.ReadFromUDP(b); e == nil {go f(conn, client, b[:n])

}}

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor107

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor108

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor109

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor110

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor111

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor112

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor113

package mainimport "net"

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.ListenUDP("udp", address); e == nil {ServeUDP(conn, func(c *net.UDPAddr, b []byte) {f(conn, c, b)

})}

}}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {for b := make([]byte, 1024); ; b = make([]byte, 1024) {if n, client, e := c.ReadFromUDP(b); e == nil {go f(client, b[:n])

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor114

udp request

115go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor116

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor117

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor118

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor119

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor120

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor121

package mainimport "bufio"import . "fmt"import "net"

func main() {Dial(":1024", func(conn net.Conn) {if _, e := conn.Write([]byte("\n")); e == nil {if m, e := bufio.NewReader(conn).ReadString('\n'); e == nil {Printf("%v", m)

}}

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor122

aes encrypt

123go for the paranoid network programmer slideshare.net/feyeleanor

go for the paranoid network programmer slideshare.net/feyeleanor124

package mainimport "net"

const AES_KEY = "0123456789012345"

func main() {Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {if m, e := Encrypt("Hello World", AES_KEY); e == nil {c.WriteToUDP(m, a)

}})

}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {// see udp serve

}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {// see udp serve

}

go for the paranoid network programmer slideshare.net/feyeleanor125

package mainimport "net"

const AES_KEY = "0123456789012345"

func main() {Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {if m, e := Encrypt("Hello World", AES_KEY); e == nil {c.WriteToUDP(m, a)

}})

}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {// see udp serve

}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {// see udp serve

}

go for the paranoid network programmer slideshare.net/feyeleanor126

package mainimport "net"

const AES_KEY = "0123456789012345"

func main() {Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {if m, e := Encrypt("Hello World", AES_KEY); e == nil {c.WriteToUDP(m, a)

}})

}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {// see udp serve

}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {// see udp serve

}

go for the paranoid network programmer slideshare.net/feyeleanor127

package mainimport "net"

const AES_KEY = "0123456789012345"

func main() {Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) {if m, e := Encrypt("Hello World", AES_KEY); e == nil {c.WriteToUDP(m, a)

}})

}

func Listen(a string, f func(*net.UDPConn, *net.UDPAddr, []byte)) {// see udp serve

}

func ServeUDP(c *net.UDPConn, f func(*net.UDPAddr, []byte)) {// see udp serve

}

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)…) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor128

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)…) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor129

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)…) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor130

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)…) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor131

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)…) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor132

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)...) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor133

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)...) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor134

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)...) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor135

package mainimport "crypto/aes"import "crypto/cipher"

func Encrypt(m, k string) (o []byte, e error) {if o, e = PaddedBuffer([]byte(m)); e == nil {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {o = CryptBlocks(o, b)

}}return

}

func PaddedBuffer(m []byte) (b []byte, e error) {b = append(b, m...)if p := len(b) % aes.BlockSize; p != 0 {p = aes.BlockSize - pb = append(b, make([]byte, p)...) // padding with NUL!!!!

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor136

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor137

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor138

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor139

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor140

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor141

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor142

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor143

package mainimport "crypto/aes"import "crypto/cipher"

func CryptBlocks(b []byte, c cipher.Block) (o []byte) {o = make([]byte, aes.BlockSize + len(b))copy(o, IV())enc := cipher.NewCBCEncrypter(c, o[:aes.BlockSize])enc.CryptBlocks(o[aes.BlockSize:], b)return

}

func IV() (b []byte) {b = make([]byte, aes.BlockSize)if _, e := rand.Read(b); e != nil {panic(e)

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor144

aes decrypt

145go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport . "fmt"import "net"

const AES_KEY = "0123456789012345"

func main() {Dial(":1025", func(conn net.Conn) {RequestMessage(conn, func(m []byte) {if m, e := Decrypt(m, AES_KEY); e == nil {Printf("%s\n", m)

}})

})}

func Dial(a string, f func(net.Conn)) {if address, e := net.ResolveUDPAddr("udp", a); e == nil {if conn, e := net.DialUDP("udp", nil, address); e == nil {defer conn.Close()f(conn)

}}

}

go for the paranoid network programmer slideshare.net/feyeleanor146

package mainimport . "fmt"import "net"

const AES_KEY = "0123456789012345"

func main() {Dial(":1025", func(conn net.Conn) {RequestMessage(conn, func(m []byte) {if m, e := Decrypt(m, AES_KEY); e == nil {Printf("%s\n", m)

}})

})}

func Dial(a string, f func(net.Conn)) {// see udp request

}

go for the paranoid network programmer slideshare.net/feyeleanor147

package mainimport . "fmt"import "net"

const AES_KEY = "0123456789012345"

func main() {Dial(":1025", func(conn net.Conn) {RequestMessage(conn, func(m []byte) {if m, e := Decrypt(m, AES_KEY); e == nil {Printf("%s\n", m)

}})

})}

func Dial(a string, f func(net.Conn)) {// see udp request

}

go for the paranoid network programmer slideshare.net/feyeleanor148

package mainimport . "fmt"import "net"

const AES_KEY = "0123456789012345"

func main() {Dial(":1025", func(conn net.Conn) {RequestMessage(conn, func(m []byte) {if m, e := Decrypt(m, AES_KEY); e == nil {Printf("%s\n", m)

}})

})}

func Dial(a string, f func(net.Conn)) {// see udp request

}

go for the paranoid network programmer slideshare.net/feyeleanor149

package mainimport "net"

func RequestMessage(conn net.Conn, f func([]byte)) (e error) {if _, e = conn.Write([]byte("\n")); e == nil {

m := make([]byte, 1024)var n intif n, e = conn.Read(m); e == nil {

f(m[:n])}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor150

package mainimport "net"

func RequestMessage(conn net.Conn, f func([]byte)) (e error) {if _, e = conn.Write([]byte("\n")); e == nil {

m := make([]byte, 1024)var n intif n, e = conn.Read(m); e == nil {

f(m[:n])}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor151

package mainimport "net"

func RequestMessage(conn net.Conn, f func([]byte)) (e error) {if _, e = conn.Write([]byte("\n")); e == nil {

m := make([]byte, 1024)var n intif n, e = conn.Read(m); e == nil {

f(m[:n])}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor152

package mainimport "net"

func RequestMessage(conn net.Conn, f func([]byte)) (e error) {if _, e = conn.Write([]byte("\n")); e == nil {

m := make([]byte, 1024)var n intif n, e = conn.Read(m); e == nil {

f(m[:n])}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor153

package mainimport "net"

func RequestMessage(conn net.Conn, f func([]byte)) (e error) {if _, e = conn.Write([]byte("\n")); e == nil {

m := make([]byte, 1024)var n intif n, e = conn.Read(m); e == nil {

f(m[:n])}

}return

}

go for the paranoid network programmer slideshare.net/feyeleanor154

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor155

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor156

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor157

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor158

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor159

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor160

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor161

package mainimport "crypto/cipher"import "crypto/aes"

func Decrypt(m []byte, k string) (r []byte, e error) {var b cipher.Blockif b, e = aes.NewCipher([]byte(k)); e == nil {var iv []byteiv, m = Unpack(m)c := cipher.NewCBCDecrypter(b, iv)r = make([]byte, len(m))c.CryptBlocks(r, m)

}return

}

func Unpack(m []byte) (iv, r []byte){return m[:aes.BlockSize], m[aes.BlockSize:]

}

go for the paranoid network programmer slideshare.net/feyeleanor162

rsa encrypt

163go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor164

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor165

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor166

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor167

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor168

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor169

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor170

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor171

package mainimport . "bytes"import "crypto/rsa"import "encoding/gob"import "net"

func main() { HELLO_WORLD := []byte("Hello World") RSA_LABEL := []byte("served") Listen(":1025", func(c *net.UDPConn, a *net.UDPAddr, b []byte) { var key rsa.PublicKey if e := gob.NewDecoder(NewBuffer(b)).Decode(&key); e == nil { if m, e := Encrypt(&key, HELLO_WORLD, RSA_LABEL); e == nil { c.WriteToUDP(m, a) } } return })}

go for the paranoid network programmer slideshare.net/feyeleanor172

package mainimport "crypto/rand"import "crypto/rsa"import "crypto/sha1"

func Encrypt(key *rsa.PublicKey, m, l []byte) ([]byte, error) { return rsa.EncryptOAEP(sha1.New(), rand.Reader, key, m, l)}

go for the paranoid network programmer slideshare.net/feyeleanor173

package mainimport "crypto/rand"import "crypto/rsa"import "crypto/sha1"

func Encrypt(key *rsa.PublicKey, m, l []byte) ([]byte, error) { return rsa.EncryptOAEP(sha1.New(), rand.Reader, key, m, l)}

go for the paranoid network programmer slideshare.net/feyeleanor174

package mainimport "crypto/rand"import "crypto/rsa"import "crypto/sha1"

func Encrypt(key *rsa.PublicKey, m, l []byte) ([]byte, error) { return rsa.EncryptOAEP(sha1.New(), rand.Reader, key, m, l)}

go for the paranoid network programmer slideshare.net/feyeleanor175

package mainimport "crypto/rand"import "crypto/rsa"import "crypto/sha1"

func Encrypt(key *rsa.PublicKey, m, l []byte) ([]byte, error) { return rsa.EncryptOAEP(sha1.New(), rand.Reader, key, m, l)}

go for the paranoid network programmer slideshare.net/feyeleanor176

package mainimport "crypto/rand"import "crypto/rsa"import "crypto/sha1"

func Encrypt(key *rsa.PublicKey, m, l []byte) ([]byte, error) { return rsa.EncryptOAEP(sha1.New(), rand.Reader, key, m, l)}

go for the paranoid network programmer slideshare.net/feyeleanor177

rsa decrypt

178go for the paranoid network programmer slideshare.net/feyeleanor

package mainimport "crypto/rsa"import . "fmt"import "net"

func main() { Dial(":1025", "ckey", func(c *net.UDPConn, k *rsa.PrivateKey) { if m, e := ReadStream(c); e == nil { if m, e := Decrypt(k, m, []byte("served")); e == nil { Println(string(m)) } } })}

go for the paranoid network programmer slideshare.net/feyeleanor179

package mainimport "crypto/rsa"import . "fmt"import "net"

func main() { Dial(":1025", "ckey", func(c *net.UDPConn, k *rsa.PrivateKey) { if m, e := ReadStream(c); e == nil { if m, e := Decrypt(k, m, []byte("served")); e == nil { Println(string(m)) } } })}

go for the paranoid network programmer slideshare.net/feyeleanor180

package mainimport "crypto/rsa"import . "fmt"import "net"

func main() { Dial(":1025", "ckey", func(c *net.UDPConn, k *rsa.PrivateKey) { if m, e := ReadStream(c); e == nil { if m, e := Decrypt(k, m, []byte("served")); e == nil { Println(string(m)) } } })}

go for the paranoid network programmer slideshare.net/feyeleanor181

package mainimport "crypto/rand"import "crypto/rsa"import "crypto/sha1"

func Decrypt(key *rsa.PrivateKey, m, l []byte) ([]byte, error) { return rsa.DecryptOAEP(sha1.New(), rand.Reader, key, m, l)}

go for the paranoid network programmer slideshare.net/feyeleanor182

package mainimport "crypto/rsa"import . "fmt"import "net"

func main() { Dial(":1025", "ckey", func(c *net.UDPConn, k *rsa.PrivateKey) { if m, e := ReadStream(c); e == nil { if m, e := Decrypt(k, m, []byte("served")); e == nil { Println(string(m)) } } })}

go for the paranoid network programmer slideshare.net/feyeleanor183

package mainimport "crypto/rsa"import . "fmt"import "net"

func main() { Dial(":1025", "ckey", func(c *net.UDPConn, k *rsa.PrivateKey) { if m, e := ReadStream(c); e == nil { if m, e := Decrypt(k, m, []byte("served")); e == nil { Println(string(m)) } } })}

go for the paranoid network programmer slideshare.net/feyeleanor184

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor185

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor186

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor187

package mainimport "crypto/rsa"import "crypto/x509"import "encoding/pem"import "io/ioutil"

func LoadPrivateKey(file string) (r *rsa.PrivateKey, e error) { if file, e := ioutil.ReadFile(file); e == nil { if block, _ := pem.Decode(file); block != nil { if block.Type == "RSA PRIVATE KEY" { r, e = x509.ParsePKCS1PrivateKey(block.Bytes) } } } return}

go for the paranoid network programmer slideshare.net/feyeleanor188

package mainimport "crypto/rsa"import "crypto/x509"import "encoding/pem"import "io/ioutil"

func LoadPrivateKey(file string) (r *rsa.PrivateKey, e error) { if file, e := ioutil.ReadFile(file); e == nil { if block, _ := pem.Decode(file); block != nil { if block.Type == "RSA PRIVATE KEY" { r, e = x509.ParsePKCS1PrivateKey(block.Bytes) } } } return}

go for the paranoid network programmer slideshare.net/feyeleanor189

package mainimport "crypto/rsa"import "crypto/x509"import "encoding/pem"import "io/ioutil"

func LoadPrivateKey(file string) (r *rsa.PrivateKey, e error) { if file, e := ioutil.ReadFile(file); e == nil { if block, _ := pem.Decode(file); block != nil { if block.Type == "RSA PRIVATE KEY" { r, e = x509.ParsePKCS1PrivateKey(block.Bytes) } } } return}

go for the paranoid network programmer slideshare.net/feyeleanor190

package mainimport "crypto/rsa"import "crypto/x509"import "encoding/pem"import "io/ioutil"

func LoadPrivateKey(file string) (r *rsa.PrivateKey, e error) { if file, e := ioutil.ReadFile(file); e == nil { if block, _ := pem.Decode(file); block != nil { if block.Type == "RSA PRIVATE KEY" { r, e = x509.ParsePKCS1PrivateKey(block.Bytes) } } } return}

go for the paranoid network programmer slideshare.net/feyeleanor191

package mainimport "crypto/rsa"import "crypto/x509"import "encoding/pem"import "io/ioutil"

func LoadPrivateKey(file string) (r *rsa.PrivateKey, e error) { if file, e := ioutil.ReadFile(file); e == nil { if block, _ := pem.Decode(file); block != nil { if block.Type == "RSA PRIVATE KEY" { r, e = x509.ParsePKCS1PrivateKey(block.Bytes) } } } return}

go for the paranoid network programmer slideshare.net/feyeleanor192

package mainimport "crypto/rsa"import "crypto/x509"import "encoding/pem"import "io/ioutil"

func LoadPrivateKey(file string) (r *rsa.PrivateKey, e error) { if file, e := ioutil.ReadFile(file); e == nil { if block, _ := pem.Decode(file); block != nil { if block.Type == "RSA PRIVATE KEY" { r, e = x509.ParsePKCS1PrivateKey(block.Bytes) } } } return}

go for the paranoid network programmer slideshare.net/feyeleanor193

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor194

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor195

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor196

package mainimport "bytes"import “crypto/rsa"import "encoding/gob"import "net"

func SendKey(c *net.UDPConn, k rsa.PublicKey, f func()) { var b bytes.Buffer if e := gob.NewEncoder(&b).Encode(k); e == nil { if _, e = c.Write(b.Bytes()); e == nil { f() } }}

go for the paranoid network programmer slideshare.net/feyeleanor197

package mainimport "bytes"import “crypto/rsa"import "encoding/gob"import "net"

func SendKey(c *net.UDPConn, k rsa.PublicKey, f func()) { var b bytes.Buffer if e := gob.NewEncoder(&b).Encode(k); e == nil { if _, e = c.Write(b.Bytes()); e == nil { f() } }}

go for the paranoid network programmer slideshare.net/feyeleanor198

package mainimport "bytes"import “crypto/rsa"import "encoding/gob"import "net"

func SendKey(c *net.UDPConn, k rsa.PublicKey, f func()) { var b bytes.Buffer if e := gob.NewEncoder(&b).Encode(k); e == nil { if _, e = c.Write(b.Bytes()); e == nil { f() } }}

go for the paranoid network programmer slideshare.net/feyeleanor199

package mainimport "crypto/rsa"import . "fmt"import "net"

func Dial(a, file string, f func(*net.UDPConn, *rsa.PrivateKey)) { if k, e := LoadPrivateKey(file); e == nil { if address, e := net.ResolveUDPAddr("udp", a); e == nil { if conn, e := net.DialUDP("udp", nil, address); e == nil { defer conn.Close() SendKey(conn, k.PublicKey, func() { f(conn, k) }) } } }}

go for the paranoid network programmer slideshare.net/feyeleanor200

http://golang.org/

go for the paranoid network programmer slideshare.net/feyeleanor201

twitter://#golang

go for the paranoid network programmer slideshare.net/feyeleanor202

twitter://@feyeleanor

go for the paranoid network programmer slideshare.net/feyeleanor