~john-koepi/ubuntu/trusty/golang/default

« back to all changes in this revision

Viewing changes to doc/talks/io2010/decrypt.go

  • Committer: Bazaar Package Importer
  • Author(s): Ondřej Surý
  • Date: 2011-04-20 17:36:48 UTC
  • Revision ID: james.westby@ubuntu.com-20110420173648-ifergoxyrm832trd
Tags: upstream-2011.03.07.1
Import upstream version 2011.03.07.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2010 The Go Authors.  All rights reserved.
 
2
// Use of this source code is governed by a BSD-style
 
3
// license that can be found in the LICENSE file.
 
4
 
 
5
package main
 
6
 
 
7
import (
 
8
        "crypto/aes"
 
9
        "crypto/block"
 
10
        "compress/gzip"
 
11
        "io"
 
12
        "os"
 
13
)
 
14
 
 
15
func EncryptAndGzip(dstfile, srcfile string, key, iv []byte) {
 
16
        r, _ := os.Open(srcfile, os.O_RDONLY, 0)
 
17
        var w io.Writer
 
18
        w, _ = os.Open(dstfile, os.O_WRONLY|os.O_CREATE, 0666)
 
19
        c, _ := aes.NewCipher(key)
 
20
        w = block.NewOFBWriter(c, iv, w)
 
21
        w2, _ := gzip.NewDeflater(w)
 
22
        io.Copy(w2, r)
 
23
        w2.Close()
 
24
}
 
25
 
 
26
func DecryptAndGunzip(dstfile, srcfile string, key, iv []byte) {
 
27
        f, _ := os.Open(srcfile, os.O_RDONLY, 0)
 
28
        defer f.Close()
 
29
        c, _ := aes.NewCipher(key)
 
30
        r := block.NewOFBReader(c, iv, f)
 
31
        r, _ = gzip.NewInflater(r)
 
32
        w, _ := os.Open(dstfile, os.O_WRONLY|os.O_CREATE, 0666)
 
33
        defer w.Close()
 
34
        io.Copy(w, r)
 
35
}
 
36
 
 
37
func main() {
 
38
        EncryptAndGzip("/tmp/passwd.gz", "/etc/passwd", make([]byte, 16), make([]byte, 16))
 
39
        DecryptAndGunzip("/dev/stdout", "/tmp/passwd.gz", make([]byte, 16), make([]byte, 16))
 
40
}