summaryrefslogtreecommitdiffstats
path: root/internal/cryptoutil/oae2.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-10-04 21:40:41 -0700
committerRose Hogenson <rosehogenson@posteo.net>2025-10-04 21:40:41 -0700
commit573601b19c8ae582adcd1a7c4b8c0ebfa4295aed (patch)
tree9a3d16a94ee0ecac62ed56c6bd95f61f2fa252c6 /internal/cryptoutil/oae2.go
parentAdd some extra methods to oae2 (diff)
downloadroseh.moe-573601b19c8ae582adcd1a7c4b8c0ebfa4295aed.tar.zst
Correctly handle errors in the reader
Diffstat (limited to 'internal/cryptoutil/oae2.go')
-rw-r--r--internal/cryptoutil/oae2.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/internal/cryptoutil/oae2.go b/internal/cryptoutil/oae2.go
index be4f1a9..a230c06 100644
--- a/internal/cryptoutil/oae2.go
+++ b/internal/cryptoutil/oae2.go
@@ -306,7 +306,7 @@ func (k EncryptionKey) NewReader(r io.Reader, options ...Option) *DecryptingRead
o(&opts)
}
return &DecryptingReader{
- r: bufio.NewReaderSize(r, 1),
+ r: bufio.NewReaderSize(r, headerSize),
oae2: oae2{
key: k,
additionalData: opts.additionalData,
@@ -316,13 +316,14 @@ func (k EncryptionKey) NewReader(r io.Reader, options ...Option) *DecryptingRead
}
func (r *DecryptingReader) initialize() error {
- header := make([]byte, headerSize)
- if _, err := io.ReadFull(r.r, header); err != nil {
+ header, err := r.r.Peek(headerSize)
+ if err != nil {
return err
}
if err := r.oae2.initialize(header); err != nil {
return err
}
+ r.r.Discard(len(header))
r.buf = *bytes.NewBuffer(make([]byte, 0, r.segmentSize+aeadOverhead))
r.initialized = true
return nil