From 4168c23c8f0f4a2043a65e75d4f8ebe808d8b341 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sun, 6 Sep 2020 14:53:07 -0400 Subject: lib: add BreakIntoBlocks * lib/blocks.go (BreakIntoBlocks): New function. --- lib/blocks.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/blocks.go (limited to 'lib/blocks.go') diff --git a/lib/blocks.go b/lib/blocks.go new file mode 100644 index 0000000..3805d86 --- /dev/null +++ b/lib/blocks.go @@ -0,0 +1,32 @@ +// Copyright © 2020 rsiddharth +// SPDX-License-Identifier: ISC + +package lib + +// Breaks 'cb' into blocks of 'keysize' +func BreakIntoBlocks(cb []byte, keysize int) [][]byte { + if len(cb) < 1 { + return make([][]byte, 0) + } + + // Compute the number of blocks. + nb := len(cb) / keysize + if len(cb)%keysize != 0 { + nb += 1 + } + blocks := make([][]byte, nb) + + for i, j, k := 0, 0, 0; i < len(cb); i++ { + if len(blocks[k]) == 0 { + blocks[k] = make([]byte, keysize) + } + blocks[k][j] = cb[i] + + j += 1 + if j == 8 { + j = 0 + k += 1 + } + } + return blocks +} -- cgit v1.2.3