MCPcopy
hub / github.com/minio/minio-go / StreamingSignV4Express

Function StreamingSignV4Express

pkg/signer/request-signature-streaming.go:301–345  ·  view source on GitHub ↗

StreamingSignV4Express - provides chunked upload signatureV4 support by implementing io.Reader.

(req *http.Request, accessKeyID, secretAccessKey, sessionToken,
	region string, dataLen int64, reqTime time.Time, sh256 md5simd.Hasher,
)

Source from the content-addressed store, hash-verified

299// StreamingSignV4Express - provides chunked upload signatureV4 support by
300// implementing io.Reader.
301func StreamingSignV4Express(req *http.Request, accessKeyID, secretAccessKey, sessionToken,
302 region string, dataLen int64, reqTime time.Time, sh256 md5simd.Hasher,
303) *http.Request {
304 // Set headers needed for streaming signature.
305 prepareStreamingRequest(req, sessionToken, dataLen, reqTime)
306
307 if req.Body == nil {
308 req.Body = io.NopCloser(bytes.NewReader([]byte("")))
309 }
310
311 stReader := &StreamingReader{
312 baseReadCloser: req.Body,
313 accessKeyID: accessKeyID,
314 secretAccessKey: secretAccessKey,
315 sessionToken: sessionToken,
316 region: region,
317 reqTime: reqTime,
318 chunkBuf: make([]byte, payloadChunkSize),
319 contentLen: dataLen,
320 chunkNum: 1,
321 totalChunks: int((dataLen+payloadChunkSize-1)/payloadChunkSize) + 1,
322 lastChunkSize: int(dataLen % payloadChunkSize),
323 sh256: sh256,
324 }
325 if len(req.Trailer) > 0 {
326 stReader.trailer = req.Trailer
327 // Remove...
328 req.Trailer = nil
329 }
330
331 // Add the request headers required for chunk upload signing.
332
333 // Compute the seed signature.
334 stReader.setSeedSignature(req)
335
336 // Set the authorization header with the seed signature.
337 stReader.setStreamingAuthHeader(req, ServiceTypeS3Express)
338
339 // Set seed signature as prevSignature for subsequent
340 // streaming signing process.
341 stReader.prevSignature = stReader.seedSignature
342 req.Body = stReader
343
344 return req
345}
346
347// StreamingSignV4 - provides chunked upload signatureV4 support by
348// implementing io.Reader.

Callers 1

newRequestMethod · 0.92

Calls 3

setSeedSignatureMethod · 0.95
prepareStreamingRequestFunction · 0.85

Tested by

no test coverage detected