frostfs-api-go-pogpp/util/signature/util.go
Leonard Lyubich 6191903326 Implement new request signing mechanism
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-09-18 10:40:45 +03:00

31 lines
518 B
Go

package signature
import (
"sync"
"github.com/pkg/errors"
)
var bytesPool = sync.Pool{
New: func() interface{} {
return make([]byte, 5<<20)
},
}
func dataForSignature(src DataSource) ([]byte, error) {
if src == nil {
return nil, errors.New("nil source")
}
buf := bytesPool.Get().([]byte)
if size := src.SignedDataSize(); size < 0 {
return nil, errors.New("negative length")
} else if size <= cap(buf) {
buf = buf[:size]
} else {
buf = make([]byte, size)
}
return src.ReadSignedData(buf)
}