diff --git a/test-server/go-v4-server/go.mod b/test-server/go-v4-server/go.mod index 4ab1895c..7e64715d 100644 --- a/test-server/go-v4-server/go.mod +++ b/test-server/go-v4-server/go.mod @@ -1,6 +1,6 @@ module github.com/aws/amazon-s3-encryption-client-python/test-server/go-server -go 1.21 +go 1.24.0 require ( github.com/aws/amazon-s3-encryption-client-go/v4 v4.0.0 @@ -28,6 +28,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 // indirect github.com/aws/smithy-go v1.19.0 // indirect + golang.org/x/crypto v0.42.0 // indirect ) // S3EC Go V4 is not released to pkg.go.dev as of writing. diff --git a/test-server/go-v4-server/go.sum b/test-server/go-v4-server/go.sum index 1bb969a3..4fbf8bbe 100644 --- a/test-server/go-v4-server/go.sum +++ b/test-server/go-v4-server/go.sum @@ -1,4 +1,3 @@ - github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk= github.com/aws/aws-sdk-go-v2 v1.24.0/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs= @@ -43,3 +42,5 @@ github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= diff --git a/test-server/go-v4-server/local-go-s3ec b/test-server/go-v4-server/local-go-s3ec index cbb8bc60..1e87cc03 160000 --- a/test-server/go-v4-server/local-go-s3ec +++ b/test-server/go-v4-server/local-go-s3ec @@ -1 +1 @@ -Subproject commit cbb8bc608754ae52f8063987d0570a7c5a927fa0 +Subproject commit 1e87cc0316b662cf5e0b26a88dbd705449065ca6 diff --git a/test-server/go-v4-server/main.go b/test-server/go-v4-server/main.go index 75871d5f..fcf89e17 100644 --- a/test-server/go-v4-server/main.go +++ b/test-server/go-v4-server/main.go @@ -11,6 +11,7 @@ import ( "github.com/aws/amazon-s3-encryption-client-go/v4/client" "github.com/aws/amazon-s3-encryption-client-go/v4/materials" + "github.com/aws/amazon-s3-encryption-client-go/v4/commitment" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/kms" @@ -42,6 +43,7 @@ type S3ECConfig struct { EnableLegacyWrappingAlgorithms bool `json:"enableLegacyWrappingAlgorithms"` SetBufferSize int64 `json:"setBufferSize"` KeyMaterial KeyMaterial `json:"keyMaterial"` + CommitmentPolicy string `json:"commitmentPolicy"` } // KeyMaterial represents the key material for encryption @@ -147,6 +149,19 @@ func (s *Server) createClient(w http.ResponseWriter, r *http.Request) { return } + var commitmentPolicy commitment.CommitmentPolicy + switch input.Config.CommitmentPolicy { + case "REQUIRE_ENCRYPT_REQUIRE_DECRYPT": + commitmentPolicy = commitment.REQUIRE_ENCRYPT_REQUIRE_DECRYPT + case "REQUIRE_ENCRYPT_ALLOW_DECRYPT": + commitmentPolicy = commitment.REQUIRE_ENCRYPT_ALLOW_DECRYPT + case "FORBID_ENCRYPT_ALLOW_DECRYPT": + commitmentPolicy = commitment.FORBID_ENCRYPT_ALLOW_DECRYPT + default: + s.createGenericServerError(w, fmt.Sprintf("Invalid commitment policy: %s", input.Config.CommitmentPolicy), http.StatusBadRequest) + return + } + // Create KMS keyring kmsClient := kms.NewFromConfig(cfg) keyring := materials.NewKmsKeyring(kmsClient, input.Config.KeyMaterial.KMSKeyID, func(options *materials.KeyringOptions) { @@ -162,7 +177,9 @@ func (s *Server) createClient(w http.ResponseWriter, r *http.Request) { // Create S3 encryption client var s3EncryptionClient *client.S3EncryptionClientV4 s3PlaintextClient := s3.NewFromConfig(cfg) - s3EncryptionClient, err = client.New(s3PlaintextClient, cmm) + s3EncryptionClient, err = client.New(s3PlaintextClient, cmm, func(clientOptions *client.EncryptionClientOptions) { + clientOptions.CommitmentPolicy = commitmentPolicy + }) if err != nil { s.createS3EncryptionClientError(w, fmt.Sprintf("Failed to create S3EC: %v", err), http.StatusInternalServerError) diff --git a/test-server/java-tests/src/it/java/software/amazon/encryption/s3/TestUtils.java b/test-server/java-tests/src/it/java/software/amazon/encryption/s3/TestUtils.java index ddb41fd1..a46c7fb8 100644 --- a/test-server/java-tests/src/it/java/software/amazon/encryption/s3/TestUtils.java +++ b/test-server/java-tests/src/it/java/software/amazon/encryption/s3/TestUtils.java @@ -104,7 +104,7 @@ public class TestUtils { Set.of( // JAVA_V4, // PYTHON_V3, - // GO_V4, + GO_V4, // NET_V3, // CPP_V3, // PHP_V3, @@ -119,7 +119,7 @@ public class TestUtils { servers.put(PYTHON_V3, new LanguageServerTarget(PYTHON_V3, "8081")); servers.put(GO_V3_CURRENT, new LanguageServerTarget(GO_V3_CURRENT, "8082")); servers.put(NET_V2_CURRENT, new LanguageServerTarget(NET_V2_CURRENT, "8083")); - servers.put(NET_V3, new LanguageServerTarget(NET_V3, "8084")); + // servers.put(NET_V3, new LanguageServerTarget(NET_V3, "8084")); servers.put(CPP_V2_CURRENT, new LanguageServerTarget(CPP_V2_CURRENT, "8085")); servers.put(RUBY_V2_CURRENT, new LanguageServerTarget(RUBY_V2_CURRENT, "8086")); servers.put(PHP_V2_CURRENT, new LanguageServerTarget(PHP_V2_CURRENT, "8087"));