diff options
Diffstat (limited to 'doc/talks/io2010/decrypt.go')
-rw-r--r-- | doc/talks/io2010/decrypt.go | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/doc/talks/io2010/decrypt.go b/doc/talks/io2010/decrypt.go deleted file mode 100644 index e63418b1a..000000000 --- a/doc/talks/io2010/decrypt.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code differs from the slides in that it handles errors. - -package main - -import ( - "crypto/aes" - "crypto/cipher" - "compress/gzip" - "io" - "log" - "os" -) - -func EncryptAndGzip(dstfile, srcfile string, key, iv []byte) error { - r, err := os.Open(srcfile) - if err != nil { - return err - } - var w io.Writer - w, err = os.Create(dstfile) - if err != nil { - return err - } - c, err := aes.NewCipher(key) - if err != nil { - return err - } - w = cipher.StreamWriter{S: cipher.NewOFB(c, iv), W: w} - w2, err := gzip.NewWriter(w) - if err != nil { - return err - } - defer w2.Close() - _, err = io.Copy(w2, r) - return err -} - -func DecryptAndGunzip(dstfile, srcfile string, key, iv []byte) error { - f, err := os.Open(srcfile) - if err != nil { - return err - } - defer f.Close() - c, err := aes.NewCipher(key) - if err != nil { - return err - } - r := cipher.StreamReader{S: cipher.NewOFB(c, iv), R: f} - r2, err := gzip.NewReader(r) - if err != nil { - return err - } - w, err := os.Create(dstfile) - if err != nil { - return err - } - defer w.Close() - _, err = io.Copy(w, r2) - return err -} - -func main() { - err := EncryptAndGzip( - "/tmp/passwd.gz", - "/etc/passwd", - make([]byte, 16), - make([]byte, 16), - ) - if err != nil { - log.Fatal(err) - } - err = DecryptAndGunzip( - "/dev/stdout", - "/tmp/passwd.gz", - make([]byte, 16), - make([]byte, 16), - ) - if err != nil { - log.Fatal(err) - } -} |