github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/block/s3/extract_sse.go (about)

     1  package s3
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/aws/aws-sdk-go-v2/service/s3"
     7  )
     8  
     9  // extractSSHeaderUploadPart extracts the x-amz-server-side-* headers from the given
    10  // UploadPartOutput response.
    11  func extractSSHeaderUploadPart(resp *s3.UploadPartOutput) http.Header {
    12  	// x-amz-server-side-* headers
    13  	headers := make(http.Header)
    14  	if resp.SSECustomerAlgorithm != nil {
    15  		headers.Set("X-Amz-Server-Side-Encryption-Customer-Algorithm", *resp.SSECustomerAlgorithm)
    16  	}
    17  	if resp.SSECustomerKeyMD5 != nil {
    18  		headers.Set("X-Amz-Server-Side-Encryption-Customer-Key-Md5", *resp.SSECustomerKeyMD5)
    19  	}
    20  	if resp.SSEKMSKeyId != nil {
    21  		headers.Set("X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id", *resp.SSEKMSKeyId)
    22  	}
    23  	if resp.ServerSideEncryption != "" {
    24  		headers.Set("X-Amz-Server-Side-Encryption", string(resp.ServerSideEncryption))
    25  	}
    26  	return headers
    27  }
    28  
    29  // extractSSHeaderUploadPartCopy extracts the x-amz-server-side-* headers from the given
    30  // UploadPartCopyOutput response.
    31  func extractSSHeaderUploadPartCopy(resp *s3.UploadPartCopyOutput) http.Header {
    32  	// x-amz-server-side-* headers
    33  	headers := make(http.Header)
    34  	if resp.SSECustomerAlgorithm != nil {
    35  		headers.Set("X-Amz-Server-Side-Encryption-Customer-Algorithm", *resp.SSECustomerAlgorithm)
    36  	}
    37  	if resp.SSECustomerKeyMD5 != nil {
    38  		headers.Set("X-Amz-Server-Side-Encryption-Customer-Key-Md5", *resp.SSECustomerKeyMD5)
    39  	}
    40  	if resp.SSEKMSKeyId != nil {
    41  		headers.Set("X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id", *resp.SSEKMSKeyId)
    42  	}
    43  	if resp.ServerSideEncryption != "" {
    44  		headers.Set("X-Amz-Server-Side-Encryption", string(resp.ServerSideEncryption))
    45  	}
    46  	return headers
    47  }
    48  
    49  // extractSSHeaderCreateMultipartUpload extracts the x-amz-server-side-* headers from the given
    50  // CreateMultipartUploadOutput response.
    51  func extractSSHeaderCreateMultipartUpload(resp *s3.CreateMultipartUploadOutput) http.Header {
    52  	// x-amz-server-side-* headers
    53  	headers := make(http.Header)
    54  	if resp.SSECustomerAlgorithm != nil {
    55  		headers.Set("X-Amz-Server-Side-Encryption-Customer-Algorithm", *resp.SSECustomerAlgorithm)
    56  	}
    57  	if resp.SSECustomerKeyMD5 != nil {
    58  		headers.Set("X-Amz-Server-Side-Encryption-Customer-Key-Md5", *resp.SSECustomerKeyMD5)
    59  	}
    60  	if resp.SSEKMSKeyId != nil {
    61  		headers.Set("X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id", *resp.SSEKMSKeyId)
    62  	}
    63  	if resp.ServerSideEncryption != "" {
    64  		headers.Set("X-Amz-Server-Side-Encryption", string(resp.ServerSideEncryption))
    65  	}
    66  	if resp.SSEKMSEncryptionContext != nil {
    67  		headers.Set("X-Amz-Server-Side-Encryption-Context", *resp.SSEKMSEncryptionContext)
    68  	}
    69  	return headers
    70  }
    71  
    72  // extractSSHeaderCompleteMultipartUpload extracts the x-amz-server-side-* headers from the given
    73  // CompleteMultipartUploadOutput response.
    74  func extractSSHeaderCompleteMultipartUpload(resp *s3.CompleteMultipartUploadOutput) http.Header {
    75  	// x-amz-server-side-* headers
    76  	headers := make(http.Header)
    77  	if resp.SSEKMSKeyId != nil {
    78  		headers.Set("X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id", *resp.SSEKMSKeyId)
    79  	}
    80  	if resp.ServerSideEncryption != "" {
    81  		headers.Set("X-Amz-Server-Side-Encryption", string(resp.ServerSideEncryption))
    82  	}
    83  	return headers
    84  }