diff options
author | Russ Cox <rsc@golang.org> | 2010-06-08 16:00:04 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-06-08 16:00:04 -0700 |
commit | 50bfc03b110909f41ec876bdb524bf1510bac7fb (patch) | |
tree | 321c402131e601188a5ccd8f7762fa52fb10f9e6 /doc/talks/io2010/decrypt.go | |
parent | cc8064af76af7e2a6a2a8a92bab93d9d9fffa970 (diff) | |
download | golang-50bfc03b110909f41ec876bdb524bf1510bac7fb.tar.gz |
doc: add Google I/O talk and programs
R=r
CC=golang-dev
http://codereview.appspot.com/1614041
Diffstat (limited to 'doc/talks/io2010/decrypt.go')
-rw-r--r-- | doc/talks/io2010/decrypt.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/doc/talks/io2010/decrypt.go b/doc/talks/io2010/decrypt.go new file mode 100644 index 000000000..3292c30b2 --- /dev/null +++ b/doc/talks/io2010/decrypt.go @@ -0,0 +1,40 @@ +// 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. + +package main + +import ( + "crypto/aes" + "crypto/block" + "compress/gzip" + "io" + "os" +) + +func EncryptAndGzip(dstfile, srcfile string, key, iv []byte) { + r, _ := os.Open(srcfile, os.O_RDONLY, 0) + var w io.Writer + w, _ = os.Open(dstfile, os.O_WRONLY|os.O_CREATE, 0666) + c, _ := aes.NewCipher(key) + w = block.NewOFBWriter(c, iv, w) + w2, _ := gzip.NewDeflater(w) + io.Copy(w2, r) + w2.Close() +} + +func DecryptAndGunzip(dstfile, srcfile string, key, iv []byte) { + f, _ := os.Open(srcfile, os.O_RDONLY, 0) + defer f.Close() + c, _ := aes.NewCipher(key) + r := block.NewOFBReader(c, iv, f) + r, _ = gzip.NewInflater(r) + w, _ := os.Open(dstfile, os.O_WRONLY|os.O_CREATE, 0666) + defer w.Close() + io.Copy(w, r) +} + +func main() { + EncryptAndGzip("/tmp/passwd.gz", "/etc/passwd", make([]byte, 16), make([]byte, 16)) + DecryptAndGunzip("/dev/stdout", "/tmp/passwd.gz", make([]byte, 16), make([]byte, 16)) +} |