From 4bc500fa68d77daa93318e302b3cd570dda91318 Mon Sep 17 00:00:00 2001 From: Ujjwal Kumar Date: Fri, 21 Jul 2023 16:18:27 +0530 Subject: [PATCH 1/2] fix(ssh): resolved password decryption for pkcs8 --- ...ibm_is_bare_metal_server_initialization.go | 11 +-- .../vpc/data_source_ibm_is_instance.go | 11 +-- .../vpc/data_source_ibm_is_instance_test.go | 76 +++++++++++++++++++ ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa | 52 +++++++++++++ .../vpc/test-fixtures/.ssh/pkcs8_rsa.pub | 1 + 5 files changed, 137 insertions(+), 14 deletions(-) create mode 100644 ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa create mode 100644 ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub diff --git a/ibm/service/vpc/data_source_ibm_is_bare_metal_server_initialization.go b/ibm/service/vpc/data_source_ibm_is_bare_metal_server_initialization.go index 97312ca472..6bb166795a 100644 --- a/ibm/service/vpc/data_source_ibm_is_bare_metal_server_initialization.go +++ b/ibm/service/vpc/data_source_ibm_is_bare_metal_server_initialization.go @@ -165,20 +165,17 @@ func dataSourceIBMISBareMetalServerInitializationRead(context context.Context, d if keyFlag != "" { block, err := pem.Decode(keybytes) if block == nil { - return diag.FromErr(fmt.Errorf("[ERROR] Failed to load the private key from the given key contents. Instead of the key file path, please make sure the private key is pem format")) + return diag.FromErr(fmt.Errorf("[ERROR] Failed to load the private key from the given key contents. Instead of the key file path, please make sure the private key is pem format (%v)", err)) } isEncrypted := false - switch block.Type { - case "RSA PRIVATE KEY": - isEncrypted = x509.IsEncryptedPEMBlock(block) - case "OPENSSH PRIVATE KEY": + if block.Type == "OPENSSH PRIVATE KEY" { var err error isEncrypted, err = isOpenSSHPrivKeyEncrypted(block.Bytes) if err != nil { return diag.FromErr(fmt.Errorf("[ERROR] Failed to check if the provided open ssh key is encrypted or not %s", err)) } - default: - return diag.FromErr(fmt.Errorf("[ERROR] PEM and OpenSSH private key formats with RSA key type are supported, can not support this key file type: %s", err)) + } else { + isEncrypted = x509.IsEncryptedPEMBlock(block) } passphrase := "" var privateKey interface{} diff --git a/ibm/service/vpc/data_source_ibm_is_instance.go b/ibm/service/vpc/data_source_ibm_is_instance.go index 755b83f7cb..7eda5dac54 100644 --- a/ibm/service/vpc/data_source_ibm_is_instance.go +++ b/ibm/service/vpc/data_source_ibm_is_instance.go @@ -926,20 +926,17 @@ func instanceGetByName(d *schema.ResourceData, meta interface{}, name string) er if keyFlag != "" { block, err := pem.Decode(keybytes) if block == nil { - return fmt.Errorf("[ERROR] Failed to load the private key from the given key contents. Instead of the key file path, please make sure the private key is pem format") + return fmt.Errorf("[ERROR] Failed to load the private key from the given key contents. Instead of the key file path, please make sure the private key is pem format (%v)", err) } isEncrypted := false - switch block.Type { - case "RSA PRIVATE KEY": - isEncrypted = x509.IsEncryptedPEMBlock(block) - case "OPENSSH PRIVATE KEY": + if block.Type == "OPENSSH PRIVATE KEY" { var err error isEncrypted, err = isOpenSSHPrivKeyEncrypted(block.Bytes) if err != nil { return fmt.Errorf("[ERROR] Failed to check if the provided open ssh key is encrypted or not %s", err) } - default: - return fmt.Errorf("PEM and OpenSSH private key formats with RSA key type are supported, can not support this key file type: %s", err) + } else { + isEncrypted = x509.IsEncryptedPEMBlock(block) } passphrase := "" var privateKey interface{} diff --git a/ibm/service/vpc/data_source_ibm_is_instance_test.go b/ibm/service/vpc/data_source_ibm_is_instance_test.go index 13f8bf20a8..d73e11db5b 100644 --- a/ibm/service/vpc/data_source_ibm_is_instance_test.go +++ b/ibm/service/vpc/data_source_ibm_is_instance_test.go @@ -50,6 +50,42 @@ func TestAccIBMISInstanceDataSource_basic(t *testing.T) { }, }) } +func TestAccIBMISInstanceDataSource_PKCS8SSH(t *testing.T) { + + vpcname := fmt.Sprintf("tfins-vpc-%d", acctest.RandIntRange(10, 100)) + subnetname := fmt.Sprintf("tfins-subnet-%d", acctest.RandIntRange(10, 100)) + sshname := fmt.Sprintf("tfins-ssh-%d", acctest.RandIntRange(10, 100)) + instanceName := fmt.Sprintf("tfins-name-%d", acctest.RandIntRange(10, 100)) + resName := "data.ibm_is_instance.ds_instance" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMISInstanceDataSourcePKCS8SSHConfig(vpcname, subnetname, sshname, instanceName), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr( + resName, "name", instanceName), + resource.TestCheckResourceAttr( + resName, "tags.#", "1"), + resource.TestCheckResourceAttrSet( + resName, "primary_network_interface.0.port_speed"), + resource.TestCheckResourceAttrSet( + resName, "availability_policy_host_failure"), + resource.TestCheckResourceAttrSet( + resName, "lifecycle_state"), + resource.TestCheckResourceAttr( + resName, "lifecycle_reasons.#", "0"), + resource.TestCheckResourceAttrSet( + resName, "vcpu.#"), + resource.TestCheckResourceAttrSet( + resName, "vcpu.0.manufacturer"), + ), + }, + }, + }) +} func TestAccIBMISInstanceDataSource_reserved_ip(t *testing.T) { vpcname := fmt.Sprintf("tfins-vpc-%d", acctest.RandIntRange(10, 100)) @@ -129,6 +165,46 @@ data "ibm_is_instance" "ds_instance" { passphrase = "" }`, vpcname, subnetname, acc.ISZoneName, acc.ISCIDR, sshname, instanceName, acc.IsWinImage, acc.InstanceProfileName, acc.ISZoneName) } +func testAccCheckIBMISInstanceDataSourcePKCS8SSHConfig(vpcname, subnetname, sshname, instanceName string) string { + return fmt.Sprintf(` + resource "ibm_is_vpc" "testacc_vpc" { + name = "%s" + } + + resource "ibm_is_subnet" "testacc_subnet" { + name = "%s" + vpc = ibm_is_vpc.testacc_vpc.id + zone = "%s" + ipv4_cidr_block = "%s" + } + + resource "ibm_is_ssh_key" "testacc_sshkey" { + name = "%s" + public_key = file("./test-fixtures/.ssh/pkcs8_rsa.pub") + } + + resource "ibm_is_instance" "testacc_instance" { + name = "%s" + image = "%s" + profile = "%s" + primary_network_interface { + subnet = ibm_is_subnet.testacc_subnet.id + } + vpc = ibm_is_vpc.testacc_vpc.id + zone = "%s" + keys = [ibm_is_ssh_key.testacc_sshkey.id] + network_interfaces { + subnet = ibm_is_subnet.testacc_subnet.id + name = "eth1" + } + tags = ["tag1"] + } + data "ibm_is_instance" "ds_instance" { + name = ibm_is_instance.testacc_instance.name + private_key = file("./test-fixtures/.ssh/pkcs8_rsa") + passphrase = "" + }`, vpcname, subnetname, acc.ISZoneName, acc.ISCIDR, sshname, instanceName, acc.IsWinImage, acc.InstanceProfileName, acc.ISZoneName) +} func testAccCheckIBMISInstanceDataSourceReservedIpConfig(vpcname, subnetname, sshname, publicKey, instanceName string) string { return fmt.Sprintf(` diff --git a/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa b/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa new file mode 100644 index 0000000000..810813f839 --- /dev/null +++ b/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +QlSl3WSemtiss8wxJ0GX1UoekYVpWSc= +-----END PRIVATE KEY----- diff --git a/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub b/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub new file mode 100644 index 0000000000..7696c9fb67 --- /dev/null +++ b/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkP+7MA7O7xdROi1+sn6DoCFSObkNA+VyfSLxfncZ+aXoaqE5nX257iunukXQ9+ugQHhN4s8LPAkibTTY6RgBNpaM9dt/+3mNxlMK350HItjo8BOH02rhBNxw+VLalzUkdFKVHgWoI0WFtkstzt7qF8SjnsE0bFOdoLQqNYztY5mVI2ZKX8ZsoZ+k3QBsTOwBjvoY4zUMmmnubr7FnLwVS0NeykseEBZ3wzVlMA9w464OFgqmN6/75bcK9rMC1CrVR7Hc7D/+Kflf+YlGrBedr5E5eorP8vcSFbv61dU9gcUZgtkuJNWZBEoN8mNyXNMNoweZK77vK/TdZVyRk1byKoesUaXj1liWWE9HvD7dv6zB/PWc1T37W9FUQrx7EsJioNPfZmT+AhBip+6U2/vAEAHL+amjZ+6LECiMzR2tMO4OiH/2iDfGsd1wvgIdwNy1sEJ3I+IrhcTKMGngMPCNjX5CMwx3rjC65FVWNLpOYqJPDoA64N7+rPA2eDFmP6c5tF29yUJASr9spuPRIYKmqp6tcSSGm5xHfTzVj+xHAGBi6IuXqgp6rxnrqO3hAkHkyYdz+tubd5DhNqgXg93SuR81tPL5ZetMzfZlKdqXXCA4l9WqAEgE/jswFfry58CmGCZpSOgL9qzws5q6+5QzwkyoPrRSuk6Q05JYy8q+pGQ== \ No newline at end of file From ffa6a113d4b184252a57798b19f85d5ec021366e Mon Sep 17 00:00:00 2001 From: Ujjwal Kumar Date: Thu, 3 Aug 2023 14:06:36 +0530 Subject: [PATCH 2/2] removed ssh key files and added environment support --- ibm/acctest/acctest.go | 22 ++++++-- .../vpc/data_source_ibm_is_instance_test.go | 6 +-- ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa | 52 ------------------- .../vpc/test-fixtures/.ssh/pkcs8_rsa.pub | 1 - 4 files changed, 21 insertions(+), 60 deletions(-) delete mode 100644 ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa delete mode 100644 ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub diff --git a/ibm/acctest/acctest.go b/ibm/acctest/acctest.go index adce4c5e3a..4a68f74cc4 100644 --- a/ibm/acctest/acctest.go +++ b/ibm/acctest/acctest.go @@ -74,6 +74,8 @@ var ISZoneName3 string var IsResourceGroupID string var ISCIDR string var ISCIDR2 string +var ISPublicSSHKeyFilePath string +var ISPrivateSSHKeyFilePath string var ISAddressPrefixCIDR string var InstanceName string var InstanceProfileName string @@ -580,10 +582,22 @@ func init() { fmt.Println("[INFO] Set the environment variable SL_CIDR_2 for testing ibm_is_subnet else it is set to default value '10.240.64.0/24'") } - ISAddressPrefixCIDR = os.Getenv("SL_ADDRESS_PREFIX_CIDR") - if ISAddressPrefixCIDR == "" { - ISAddressPrefixCIDR = "10.120.0.0/24" - fmt.Println("[INFO] Set the environment variable SL_ADDRESS_PREFIX_CIDR for testing ibm_is_vpc_address_prefix else it is set to default value '10.120.0.0/24'") + ISCIDR2 = os.Getenv("SL_CIDR_2") + if ISCIDR2 == "" { + ISCIDR2 = "10.240.64.0/24" + fmt.Println("[INFO] Set the environment variable SL_CIDR_2 for testing ibm_is_subnet else it is set to default value '10.240.64.0/24'") + } + + ISPublicSSHKeyFilePath = os.Getenv("IS_PUBLIC_SSH_KEY_PATH") + if ISPublicSSHKeyFilePath == "" { + ISPublicSSHKeyFilePath = "./test-fixtures/.ssh/pkcs8_rsa.pub" + fmt.Println("[INFO] Set the environment variable SL_CIDR_2 for testing ibm_is_instance datasource else it is set to default value './test-fixtures/.ssh/pkcs8_rsa.pub'") + } + + ISPrivateSSHKeyFilePath = os.Getenv("IS_PRIVATE_SSH_KEY_PATH") + if ISPrivateSSHKeyFilePath == "" { + ISPrivateSSHKeyFilePath = "./test-fixtures/.ssh/pkcs8_rsa" + fmt.Println("[INFO] Set the environment variable IS_PRIVATE_SSH_KEY_PATH for testing ibm_is_instance datasource else it is set to default value './test-fixtures/.ssh/pkcs8_rsa'") } IsResourceGroupID = os.Getenv("SL_RESOURCE_GROUP_ID") diff --git a/ibm/service/vpc/data_source_ibm_is_instance_test.go b/ibm/service/vpc/data_source_ibm_is_instance_test.go index d73e11db5b..fe42000ab0 100644 --- a/ibm/service/vpc/data_source_ibm_is_instance_test.go +++ b/ibm/service/vpc/data_source_ibm_is_instance_test.go @@ -180,7 +180,7 @@ func testAccCheckIBMISInstanceDataSourcePKCS8SSHConfig(vpcname, subnetname, sshn resource "ibm_is_ssh_key" "testacc_sshkey" { name = "%s" - public_key = file("./test-fixtures/.ssh/pkcs8_rsa.pub") + public_key = file("%s") } resource "ibm_is_instance" "testacc_instance" { @@ -201,9 +201,9 @@ func testAccCheckIBMISInstanceDataSourcePKCS8SSHConfig(vpcname, subnetname, sshn } data "ibm_is_instance" "ds_instance" { name = ibm_is_instance.testacc_instance.name - private_key = file("./test-fixtures/.ssh/pkcs8_rsa") + private_key = file("%s") passphrase = "" - }`, vpcname, subnetname, acc.ISZoneName, acc.ISCIDR, sshname, instanceName, acc.IsWinImage, acc.InstanceProfileName, acc.ISZoneName) + }`, vpcname, subnetname, acc.ISZoneName, acc.ISCIDR, sshname, acc.ISPublicSSHKeyFilePath, instanceName, acc.IsWinImage, acc.InstanceProfileName, acc.ISZoneName, acc.ISPrivateSSHKeyFilePath) } func testAccCheckIBMISInstanceDataSourceReservedIpConfig(vpcname, subnetname, sshname, publicKey, instanceName string) string { diff --git a/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa b/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa deleted file mode 100644 index 810813f839..0000000000 --- a/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PRIVATE KEY----- -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 -QlSl3WSemtiss8wxJ0GX1UoekYVpWSc= ------END PRIVATE KEY----- diff --git a/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub b/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub deleted file mode 100644 index 7696c9fb67..0000000000 --- a/ibm/service/vpc/test-fixtures/.ssh/pkcs8_rsa.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkP+7MA7O7xdROi1+sn6DoCFSObkNA+VyfSLxfncZ+aXoaqE5nX257iunukXQ9+ugQHhN4s8LPAkibTTY6RgBNpaM9dt/+3mNxlMK350HItjo8BOH02rhBNxw+VLalzUkdFKVHgWoI0WFtkstzt7qF8SjnsE0bFOdoLQqNYztY5mVI2ZKX8ZsoZ+k3QBsTOwBjvoY4zUMmmnubr7FnLwVS0NeykseEBZ3wzVlMA9w464OFgqmN6/75bcK9rMC1CrVR7Hc7D/+Kflf+YlGrBedr5E5eorP8vcSFbv61dU9gcUZgtkuJNWZBEoN8mNyXNMNoweZK77vK/TdZVyRk1byKoesUaXj1liWWE9HvD7dv6zB/PWc1T37W9FUQrx7EsJioNPfZmT+AhBip+6U2/vAEAHL+amjZ+6LECiMzR2tMO4OiH/2iDfGsd1wvgIdwNy1sEJ3I+IrhcTKMGngMPCNjX5CMwx3rjC65FVWNLpOYqJPDoA64N7+rPA2eDFmP6c5tF29yUJASr9spuPRIYKmqp6tcSSGm5xHfTzVj+xHAGBi6IuXqgp6rxnrqO3hAkHkyYdz+tubd5DhNqgXg93SuR81tPL5ZetMzfZlKdqXXCA4l9WqAEgE/jswFfry58CmGCZpSOgL9qzws5q6+5QzwkyoPrRSuk6Q05JYy8q+pGQ== \ No newline at end of file