Skip to content

Commit 7ce7186

Browse files
committed
feat(object): encryption create is working issue with read
1 parent eb3abc7 commit 7ce7186

File tree

2 files changed

+29
-40
lines changed

2 files changed

+29
-40
lines changed

internal/services/object/object.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func ResourceObject() *schema.Resource {
107107
string(s3Types.ObjectCannedACLPublicRead),
108108
}, false),
109109
},
110-
"sse-customer-key": {
110+
"sse_customer_key": {
111111
Type: schema.TypeString,
112112
Optional: true,
113113
Sensitive: true,
@@ -156,12 +156,18 @@ func resourceObjectCreate(ctx context.Context, d *schema.ResourceData, m interfa
156156
req.ACL = s3Types.ObjectCannedACL(*visibilityStr)
157157
}
158158

159-
if encryptionKeyStr, ok := d.Get("sse-customer-key").(string); ok {
160-
encryptionKey := base64.StdEncoding.EncodeToString([]byte(encryptionKeyStr))
161-
encryptionKeyMD5 := md5.Sum([]byte(encryptionKey))
159+
if encryptionKeyStr, ok := d.Get("sse_customer_key").(string); ok {
160+
encryptionKey := []byte(encryptionKeyStr)
161+
h := md5.New()
162+
_, err := h.Write(encryptionKey)
163+
if err != nil {
164+
return diag.FromErr(err)
165+
}
166+
digest := h.Sum(nil)
167+
digestMD5 := base64.StdEncoding.EncodeToString(digest)
162168
req.SSECustomerAlgorithm = scw.StringPtr("AES256")
163-
req.SSECustomerKeyMD5 = aws.String(string(encryptionKeyMD5[:]))
164-
req.SSECustomerKey = aws.String(string(encryptionKey[:]))
169+
req.SSECustomerKeyMD5 = &digestMD5
170+
req.SSECustomerKey = aws.String(base64.StdEncoding.EncodeToString(encryptionKey))
165171
}
166172

167173
if filePath, hasFile := d.GetOk("file"); hasFile {
@@ -290,10 +296,12 @@ func resourceObjectRead(ctx context.Context, d *schema.ResourceData, m interface
290296
ctx, cancel := context.WithTimeout(ctx, d.Timeout(schema.TimeoutRead))
291297
defer cancel()
292298

293-
obj, err := s3Client.HeadObject(ctx, &s3.HeadObjectInput{
299+
req := &s3.HeadObjectInput{
294300
Bucket: types.ExpandStringPtr(bucket),
295301
Key: types.ExpandStringPtr(key),
296-
})
302+
}
303+
304+
obj, err := s3Client.HeadObject(ctx, req)
297305
if err != nil {
298306
return diag.FromErr(err)
299307
}

internal/services/object/object_test.go

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ import (
2121

2222
// // Service information constants
2323
const (
24-
ServiceName = "scw" // Name of service.
25-
EndpointsID = ServiceName // ID to look up a service endpoint with.
26-
encryptionStr = "Pignouf"
24+
ServiceName = "scw" // Name of service.
25+
EndpointsID = ServiceName // ID to look up a service endpoint with.
26+
encryptionStr = "1234567890abcdef1234567890abcdef"
27+
contentToEncypt = "Hello World"
2728
)
2829

2930
func TestAccObject_Basic(t *testing.T) {
@@ -738,7 +739,7 @@ func TestAccObject_WithBucketName(t *testing.T) {
738739
func TestAccObject_Encryption(t *testing.T) {
739740
tt := acctest.NewTestTools(t)
740741
defer tt.Cleanup()
741-
bucketName := sdkacctest.RandomWithPrefix("test-acc-scaleway-object-basic")
742+
bucketName := sdkacctest.RandomWithPrefix("test-acc-scaleway-object-encryption")
742743
resource.ParallelTest(t, resource.TestCase{
743744
PreCheck: func() { acctest.PreCheck(t) },
744745
ProviderFactories: tt.ProviderFactories,
@@ -747,27 +748,6 @@ func TestAccObject_Encryption(t *testing.T) {
747748
objectchecks.IsBucketDestroyed(tt),
748749
),
749750
Steps: []resource.TestStep{
750-
{
751-
Config: fmt.Sprintf(`
752-
resource "scaleway_object_bucket" "base-01" {
753-
name = "%s"
754-
region= "%s"
755-
tags = {
756-
foo = "bar"
757-
}
758-
}
759-
760-
resource scaleway_object "file" {
761-
bucket = scaleway_object_bucket.base-01.id
762-
key = "myfile"
763-
file = "testfixture/empty.qcow2"
764-
}
765-
`, bucketName, objectTestsMainRegion),
766-
Check: resource.ComposeTestCheckFunc(
767-
objectchecks.CheckBucketExists(tt, "scaleway_object_bucket.base-01", true),
768-
testAccCheckObjectExists(tt, "scaleway_object.file"),
769-
),
770-
},
771751
{
772752
Config: fmt.Sprintf(`
773753
resource "scaleway_object_bucket" "base-01" {
@@ -781,12 +761,13 @@ func TestAccObject_Encryption(t *testing.T) {
781761
resource scaleway_object "file" {
782762
bucket = scaleway_object_bucket.base-01.id
783763
key = "myfile/foo"
784-
file = "testfixture/empty.qcow2"
764+
content = "Hello World"
765+
sse_customer_key = "%s"
785766
}
786-
`, bucketName, objectTestsMainRegion),
767+
`, bucketName, objectTestsMainRegion, encryptionStr),
787768
Check: resource.ComposeTestCheckFunc(
788769
objectchecks.CheckBucketExists(tt, "scaleway_object_bucket.base-01", true),
789-
testAccCheckObjectExists(tt, "scaleway_object.file"),
770+
testAccCheckObjectExists(tt, "scaleway_object.content"),
790771
),
791772
},
792773
{
@@ -802,12 +783,13 @@ func TestAccObject_Encryption(t *testing.T) {
802783
resource scaleway_object "file" {
803784
bucket = scaleway_object_bucket.base-01.id
804785
key = "myfile/foo/bar"
805-
file = "testfixture/empty.qcow2"
786+
content = "Hello World"
787+
sse_customer_key = "%s"
806788
}
807-
`, bucketName, objectTestsMainRegion),
789+
`, bucketName, objectTestsMainRegion, encryptionStr),
808790
Check: resource.ComposeTestCheckFunc(
809791
objectchecks.CheckBucketExists(tt, "scaleway_object_bucket.base-01", true),
810-
testAccCheckObjectExists(tt, "scaleway_object.file"),
792+
testAccCheckObjectExists(tt, "scaleway_object.content"),
811793
),
812794
},
813795
},
@@ -844,7 +826,6 @@ func testAccCheckObjectExists(tt *acctest.TestTools, n string) resource.TestChec
844826
_, err = s3Client.GetObject(ctx, &s3.GetObjectInput{
845827
Bucket: scw.StringPtr(bucketName),
846828
Key: scw.StringPtr(key),
847-
SSECustomerKey:
848829
})
849830
if err != nil {
850831
if object.IsS3Err(err, object.ErrCodeNoSuchBucket, "") {

0 commit comments

Comments
 (0)