URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [crypto/] [cipher/] [ofb.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2011 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.// OFB (Output Feedback) Mode.package ciphertype ofb struct {b Blockout []byteoutUsed int}// NewOFB returns a Stream that encrypts or decrypts using the block cipher b// in output feedback mode. The initialization vector iv's length must be equal// to b's block size.func NewOFB(b Block, iv []byte) Stream {blockSize := b.BlockSize()if len(iv) != blockSize {return nil}x := &ofb{b: b,out: make([]byte, blockSize),outUsed: 0,}b.Encrypt(x.out, iv)return x}func (x *ofb) XORKeyStream(dst, src []byte) {for i, s := range src {if x.outUsed == len(x.out) {x.b.Encrypt(x.out, x.out)x.outUsed = 0}dst[i] = s ^ x.out[x.outUsed]x.outUsed++}}
