From 89c96284c2ff7d1d3ceb24539ff01c6ff39edb95 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Mon, 10 Nov 2025 20:16:03 -0800 Subject: Overflow can't happen --- oae.go | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) (limited to 'oae.go') diff --git a/oae.go b/oae.go index bc6135f..0dfb46d 100644 --- a/oae.go +++ b/oae.go @@ -35,38 +35,30 @@ func (se *segmentEncrypter) initialize(salt []byte) error { return err } -func (se *segmentEncrypter) ad(lastSegment bool) ([]byte, error) { +func (se *segmentEncrypter) ad(lastSegment bool) []byte { // Increment counter for i := 0; ; i++ { if i == len(se.nonce) { - return nil, errors.New("counter overflowed") + panic("counter overflowed") } se.nonce[i]++ if se.nonce[i] != 0 { break } } - ad := make([]byte, len(se.nonce)+1) - copy(ad, se.nonce[:]) if lastSegment { - ad[len(ad)-1] = 1 + return []byte{1} } - return ad, nil + return []byte{0} } -func (se *segmentEncrypter) encrypt(out, buf []byte, lastSegment bool) ([]byte, error) { - ad, err := se.ad(lastSegment) - if err != nil { - return nil, err - } - return se.aead.Seal(out, se.nonce[:], buf, ad), nil +func (se *segmentEncrypter) encrypt(out, buf []byte, lastSegment bool) []byte { + ad := se.ad(lastSegment) + return se.aead.Seal(out, se.nonce[:], buf, ad) } func (se *segmentEncrypter) decrypt(out, buf []byte, lastSegment bool) ([]byte, error) { - ad, err := se.ad(lastSegment) - if err != nil { - return nil, err - } + ad := se.ad(lastSegment) return se.aead.Open(out, se.nonce[:], buf, ad) } @@ -104,11 +96,7 @@ func (w *encryptingWriter) initialize() error { } func (w *encryptingWriter) writeBuf(lastSegment bool) error { - var err error - if w.buf, err = w.encrypter.encrypt(w.buf[:0], w.buf, lastSegment); err != nil { - return err - } - if _, err := w.w.Write(w.buf); err != nil { + if _, err := w.w.Write(w.encrypter.encrypt(w.buf[:0], w.buf, lastSegment)); err != nil { return err } w.buf = w.buf[:0] -- cgit v1.3.1