diff options
Diffstat (limited to 'src/pkg/crypto/cipher/io.go')
-rw-r--r-- | src/pkg/crypto/cipher/io.go | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/src/pkg/crypto/cipher/io.go b/src/pkg/crypto/cipher/io.go deleted file mode 100644 index 97f40b8e7..000000000 --- a/src/pkg/crypto/cipher/io.go +++ /dev/null @@ -1,57 +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. - -package cipher - -import ( - "os" - "io" -) - -// The Stream* objects are so simple that all their members are public. Users -// can create them themselves. - -// StreamReader wraps a Stream into an io.Reader. It simply calls XORKeyStream -// to process each slice of data which passes through. -type StreamReader struct { - S Stream - R io.Reader -} - -func (r StreamReader) Read(dst []byte) (n int, err os.Error) { - n, err = r.R.Read(dst) - r.S.XORKeyStream(dst[:n], dst[:n]) - return -} - -// StreamWriter wraps a Stream into an io.Writer. It simply calls XORKeyStream -// to process each slice of data which passes through. If any Write call -// returns short then the StreamWriter is out of sync and must be discarded. -type StreamWriter struct { - S Stream - W io.Writer - Err os.Error -} - -func (w StreamWriter) Write(src []byte) (n int, err os.Error) { - if w.Err != nil { - return 0, w.Err - } - c := make([]byte, len(src)) - w.S.XORKeyStream(c, src) - n, err = w.W.Write(c) - if n != len(src) { - if err == nil { // should never happen - err = io.ErrShortWrite - } - w.Err = err - } - return -} - -func (w StreamWriter) Close() os.Error { - // This saves us from either requiring a WriteCloser or having a - // StreamWriterCloser. - return w.W.(io.Closer).Close() -} |