From 7b655ed5567d4acc5601ca5004e072d2cb822f53 Mon Sep 17 00:00:00 2001 From: Kyle Jones Date: Mon, 26 Aug 2013 18:57:58 -0700 Subject: [PATCH] Randomize in place and change a name --- minnow.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/minnow.go b/minnow.go index 13cd782..869c116 100644 --- a/minnow.go +++ b/minnow.go @@ -64,7 +64,7 @@ func (mw *MessageWriteCloser) Close() error { packets := make([]Packet, mw.numchaff + 1) packets[0] = *p for i := 1; i < mw.numchaff + 1; i++ { - packets[i] = makeFakeMessage(1, p.Header.SequenceN) + packets[i] = makeChaff(1, p.Header.SequenceN) } packets = randomizePackets(packets) @@ -182,19 +182,17 @@ func sequentialPacketChannel(data []byte, hasher hash.Hash) chan *Packet { return outchan } +// Randomize a slice of packets in-place func randomizePackets(packets []Packet) []Packet { - newpackets := make([]Packet, 0) - - for len(packets) > 0 { + for i := 0; i < len(packets); i++ { randndx := mathRand.Intn(len(packets)) - newpackets = append(newpackets, packets[randndx]) - packets = append(packets[:randndx], packets[randndx+1:]...) + packets[i], packets[randndx] = packets[randndx], packets[i] } - return newpackets + return packets } -func makeFakeMessage(size uint64, sequencenum uint64) Packet { +func makeChaff(size uint64, sequencenum uint64) Packet { crypthash := make([]byte, 64) hash := new([64]byte) payloadbuf := make([]byte, size)