dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit e37f42ff973aa2cf549c01a0a163e9cf07908f94
parent 49795529fe37c53a1bdc53926a573989b2daed9b
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu,  2 Feb 2023 19:34:36 -0800

reuseable code to create ctr stream

Diffstat:
Mpkg/utils/crypto/stream.go | 17+++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/pkg/utils/crypto/stream.go b/pkg/utils/crypto/stream.go @@ -11,18 +11,27 @@ import ( "io" ) -// NewStreamEncrypter creates a new stream encrypter -func NewStreamEncrypter(encKey, macKey []byte, plainText io.Reader) (*StreamEncrypter, error) { +func NewCtrStram(encKey []byte) (cipher.Stream, cipher.Block, []byte, error) { block, err := aes.NewCipher(encKey) if err != nil { - return nil, err + return nil, nil, nil, err } iv := make([]byte, block.BlockSize()) _, err = rand.Read(iv) if err != nil { - return nil, err + return nil, nil, nil, err } stream := cipher.NewCTR(block, iv) + return stream, block, iv, nil +} + +// NewStreamEncrypter creates a new stream encrypter +func NewStreamEncrypter(encKey, macKey []byte, plainText io.Reader) (*StreamEncrypter, error) { + stream, block, iv, err := NewCtrStram(encKey) + if err != nil { + return nil, err + } + mac := hmac.New(sha256.New, macKey) return &StreamEncrypter{ Source: plainText,