MCPcopy Create free account
hub / github.com/AbelChe/evil_minio / newCachePartEncryptReader

Function newCachePartEncryptReader

cmd/disk-cache-backend.go:1426–1460  ·  view source on GitHub ↗

newCachePartEncryptReader returns encrypted cache part reader, with part data encrypted with part encryption key

(ctx context.Context, bucket, object string, partID int, content io.Reader, size int64, metadata map[string]string)

Source from the content-addressed store, hash-verified

1424
1425// newCachePartEncryptReader returns encrypted cache part reader, with part data encrypted with part encryption key
1426func newCachePartEncryptReader(ctx context.Context, bucket, object string, partID int, content io.Reader, size int64, metadata map[string]string) (r io.Reader, err error) {
1427 var key []byte
1428 var objectEncryptionKey, partEncryptionKey crypto.ObjectKey
1429
1430 // Calculating object encryption key
1431 key, err = decryptObjectMeta(key, bucket, object, metadata)
1432 if err != nil {
1433 return nil, err
1434 }
1435 copy(objectEncryptionKey[:], key)
1436
1437 partEnckey := objectEncryptionKey.DerivePartKey(uint32(partID))
1438 copy(partEncryptionKey[:], partEnckey[:])
1439 wantSize := int64(-1)
1440 if size >= 0 {
1441 info := ObjectInfo{Size: size}
1442 wantSize = info.EncryptedSize()
1443 }
1444 hReader, err := hash.NewReader(content, wantSize, "", "", size)
1445 if err != nil {
1446 return nil, err
1447 }
1448
1449 pReader := NewPutObjReader(hReader)
1450 content, err = pReader.WithEncryption(hReader, &partEncryptionKey)
1451 if err != nil {
1452 return nil, err
1453 }
1454
1455 reader, err := sio.EncryptReader(content, sio.Config{Key: partEncryptionKey[:], MinVersion: sio.Version20, CipherSuites: fips.DARECiphers()})
1456 if err != nil {
1457 return nil, crypto.ErrInvalidCustomerKey
1458 }
1459 return reader, nil
1460}
1461
1462// uploadIDExists returns error if uploadID is not being cached.
1463func (c *diskCache) uploadIDExists(bucket, object, uploadID string) (err error) {

Callers 1

PutObjectPartMethod · 0.85

Calls 7

DerivePartKeyMethod · 0.95
EncryptedSizeMethod · 0.95
WithEncryptionMethod · 0.95
NewReaderFunction · 0.92
DARECiphersFunction · 0.92
decryptObjectMetaFunction · 0.85
NewPutObjReaderFunction · 0.85

Tested by

no test coverage detected