From b17b46d3ab11d0ee83921977c8393a59f238d0d0 Mon Sep 17 00:00:00 2001 From: Louis Ruch Date: Fri, 13 May 2022 16:30:40 -0700 Subject: [PATCH] fix(kms): Update kms wrapper calls to v2 --- internal/provider/provider.go | 14 +++++++++----- internal/provider/provider_test.go | 15 +++++++-------- internal/provider/resource_group_test.go | 3 ++- internal/provider/resource_managed_group_test.go | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 185bfe70..4a7599d3 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -8,8 +8,11 @@ import ( "github.com/hashicorp/boundary/api" "github.com/hashicorp/boundary/api/authmethods" + kms_plugin_assets "github.com/hashicorp/boundary/plugins/kms" "github.com/hashicorp/boundary/sdk/wrapper" - wrapping "github.com/hashicorp/go-kms-wrapping" + wrapping "github.com/hashicorp/go-kms-wrapping/v2" + "github.com/hashicorp/go-secure-stdlib/configutil/v2" + "github.com/hashicorp/go-secure-stdlib/pluginutil/v2" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -109,16 +112,17 @@ func providerAuthenticate(ctx context.Context, d *schema.ResourceData, md *metaD if err != nil { return fmt.Errorf(`error reading data from "recovery_kms_hcl": %v`, err) } - wrapper, err := wrapper.GetWrapperFromHcl(recoveryHclStr, "recovery") + wrapper, _, err := wrapper.GetWrapperFromHcl(ctx, recoveryHclStr, "recovery", + configutil.WithPluginOptions( + pluginutil.WithPluginsMap(kms_plugin_assets.BuiltinKmsPlugins()), + pluginutil.WithPluginsFilesystem(kms_plugin_assets.KmsPluginPrefix, kms_plugin_assets.FileSystem()), + )) if err != nil { return fmt.Errorf(`error reading wrappers from "recovery_kms_hcl": %v`, err) } if wrapper == nil { return errors.New(`No "kms" block with purpose "recovery" found in "recovery_kms_hcl"`) } - if err := wrapper.Init(ctx); err != nil { - return fmt.Errorf("error initializing recovery kms: %v", err) - } md.recoveryKmsWrapper = wrapper md.client.SetRecoveryKmsWrapper(wrapper) diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index 71693dd5..9f9e6360 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -1,6 +1,7 @@ package provider import ( + "context" "crypto/rand" "encoding/base64" "fmt" @@ -8,8 +9,8 @@ import ( "testing" "github.com/hashicorp/boundary/testing/controller" - wrapping "github.com/hashicorp/go-kms-wrapping" - "github.com/hashicorp/go-kms-wrapping/wrappers/aead" + wrapping "github.com/hashicorp/go-kms-wrapping/v2" + "github.com/hashicorp/go-kms-wrapping/v2/aead" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -36,7 +37,7 @@ func providerFactories(p **schema.Provider) map[string]func() (*schema.Provider, } } -func testWrapper(t *testing.T, key string) wrapping.Wrapper { +func testWrapper(ctx context.Context, t *testing.T, key string) wrapping.Wrapper { var keyBytes []byte switch key { case "": @@ -56,15 +57,13 @@ func testWrapper(t *testing.T, key string) wrapping.Wrapper { t.Fatal(err) } } - wrapper := aead.NewWrapper(nil) + wrapper := aead.NewWrapper() - _, err := wrapper.SetConfig(map[string]string{ - "key_id": key, - }) + _, err := wrapper.SetConfig(ctx, wrapping.WithKeyId(key)) if err != nil { t.Fatal(err) } - if err := wrapper.SetAESGCMKeyBytes(keyBytes); err != nil { + if err := wrapper.SetAesGcmKeyBytes(keyBytes); err != nil { t.Fatal(err) } return wrapper diff --git a/internal/provider/resource_group_test.go b/internal/provider/resource_group_test.go index 679a64f7..d102c00e 100644 --- a/internal/provider/resource_group_test.go +++ b/internal/provider/resource_group_test.go @@ -114,7 +114,7 @@ resource "boundary_group" "proj1" { // NOTE: this test also tests out the recovery KMS mechanism. func TestAccGroup(t *testing.T) { - wrapper := testWrapper(t, tcRecoveryKey) + wrapper := testWrapper(context.Background(), t, tcRecoveryKey) tc := controller.NewTestController(t, append(tcConfig, controller.WithRecoveryKms(wrapper))...) defer tc.Shutdown() @@ -122,6 +122,7 @@ func TestAccGroup(t *testing.T) { var provider *schema.Provider resource.Test(t, resource.TestCase{ + IsUnitTest: true, ProviderFactories: providerFactories(&provider), CheckDestroy: testAccCheckGroupResourceDestroy(t, provider), Steps: []resource.TestStep{ diff --git a/internal/provider/resource_managed_group_test.go b/internal/provider/resource_managed_group_test.go index 5f0dc103..2f5ff9eb 100644 --- a/internal/provider/resource_managed_group_test.go +++ b/internal/provider/resource_managed_group_test.go @@ -41,7 +41,7 @@ resource "boundary_managed_group" "foo" { ) func TestAccManagedGroup(t *testing.T) { - wrapper := testWrapper(t, tcRecoveryKey) + wrapper := testWrapper(context.Background(), t, tcRecoveryKey) tp := oidc.StartTestProvider(t) tc := controller.NewTestController(t, append(tcConfig, controller.WithRecoveryKms(wrapper))...)