package signature

import "sync"

const poolSliceMaxSize = 64 * 1024

var buffersPool = sync.Pool{
	New: func() any {
		return make([]byte, 0)
	},
}

func newBufferFromPool(size int) []byte {
	result := buffersPool.Get().([]byte)
	if cap(result) < size {
		result = make([]byte, size)
	} else {
		result = result[:size]
	}
	return result
}

func returnBufferToPool(buf []byte) {
	if cap(buf) > poolSliceMaxSize {
		return
	}
	buf = buf[:0]
	buffersPool.Put(buf)
}