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

Function StreamingSignV4

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

StreamingSignV4 - 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

347// StreamingSignV4 - provides chunked upload signatureV4 support by
348// implementing io.Reader.
349func StreamingSignV4(req *http.Request, accessKeyID, secretAccessKey, sessionToken,
350 region string, dataLen int64, reqTime time.Time, sh256 md5simd.Hasher,
351) *http.Request {
352 // Set headers needed for streaming signature.
353 prepareStreamingRequest(req, sessionToken, dataLen, reqTime)
354
355 if req.Body == nil {
356 req.Body = io.NopCloser(bytes.NewReader([]byte("")))
357 }
358
359 stReader := &StreamingReader{
360 baseReadCloser: req.Body,
361 accessKeyID: accessKeyID,
362 secretAccessKey: secretAccessKey,
363 sessionToken: sessionToken,
364 region: region,
365 reqTime: reqTime,
366 chunkBuf: make([]byte, payloadChunkSize),
367 contentLen: dataLen,
368 chunkNum: 1,
369 totalChunks: int((dataLen+payloadChunkSize-1)/payloadChunkSize) + 1,
370 lastChunkSize: int(dataLen % payloadChunkSize),
371 sh256: sh256,
372 }
373 if len(req.Trailer) > 0 {
374 stReader.trailer = req.Trailer
375 // Remove...
376 req.Trailer = nil
377 }
378
379 // Add the request headers required for chunk upload signing.
380
381 // Compute the seed signature.
382 stReader.setSeedSignature(req)
383
384 // Set the authorization header with the seed signature.
385 stReader.setStreamingAuthHeader(req, ServiceTypeS3)
386
387 // Set seed signature as prevSignature for subsequent
388 // streaming signing process.
389 stReader.prevSignature = stReader.seedSignature
390 req.Body = stReader
391
392 return req
393}
394
395// StreamingSignV4Outposts - provides chunked upload signatureV4 support for S3 on Outposts (service name s3-outposts).
396func StreamingSignV4Outposts(req *http.Request, accessKeyID, secretAccessKey, sessionToken,

Callers 5

newRequestMethod · 0.92
TestGetSeedSignatureFunction · 0.85
TestStreamingReaderFunction · 0.85

Calls 3

setSeedSignatureMethod · 0.95
prepareStreamingRequestFunction · 0.85

Tested by 4

TestGetSeedSignatureFunction · 0.68
TestStreamingReaderFunction · 0.68