mirror of https://github.com/helm/helm.git
				
				
				
			fix(getter): set up TLS options during .Get()
Signed-off-by: Matthew Fisher <matt.fisher@microsoft.com>
This commit is contained in:
		
							parent
							
								
									bf8318ea0b
								
							
						
					
					
						commit
						c9b127c3ee
					
				|  | @ -25,7 +25,7 @@ import ( | |||
| const tlsTestDir = "../../testdata" | ||||
| 
 | ||||
| const ( | ||||
| 	testCaCertFile = "ca.pem" | ||||
| 	testCaCertFile = "rootca.crt" | ||||
| 	testCertFile   = "crt.pem" | ||||
| 	testKeyFile    = "key.pem" | ||||
| ) | ||||
|  |  | |||
|  | @ -29,7 +29,6 @@ import ( | |||
| 
 | ||||
| // HTTPGetter is the efault HTTP(/S) backend handler
 | ||||
| type HTTPGetter struct { | ||||
| 	client *http.Client | ||||
| 	opts options | ||||
| } | ||||
| 
 | ||||
|  | @ -60,7 +59,12 @@ func (g *HTTPGetter) get(href string) (*bytes.Buffer, error) { | |||
| 		req.SetBasicAuth(g.opts.username, g.opts.password) | ||||
| 	} | ||||
| 
 | ||||
| 	resp, err := g.client.Do(req) | ||||
| 	client, err := g.httpClient() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	resp, err := client.Do(req) | ||||
| 	if err != nil { | ||||
| 		return buf, err | ||||
| 	} | ||||
|  | @ -81,28 +85,31 @@ func NewHTTPGetter(options ...Option) (Getter, error) { | |||
| 		opt(&client.opts) | ||||
| 	} | ||||
| 
 | ||||
| 	if client.opts.certFile != "" && client.opts.keyFile != "" { | ||||
| 		tlsConf, err := tlsutil.NewClientTLS(client.opts.certFile, client.opts.keyFile, client.opts.caFile) | ||||
| 	return &client, nil | ||||
| } | ||||
| 
 | ||||
| func (g *HTTPGetter) httpClient() (*http.Client, error) { | ||||
| 	if g.opts.certFile != "" && g.opts.keyFile != "" { | ||||
| 		tlsConf, err := tlsutil.NewClientTLS(g.opts.certFile, g.opts.keyFile, g.opts.caFile) | ||||
| 		if err != nil { | ||||
| 			return &client, errors.Wrap(err, "can't create TLS config for client") | ||||
| 			return nil, errors.Wrap(err, "can't create TLS config for client") | ||||
| 		} | ||||
| 		tlsConf.BuildNameToCertificate() | ||||
| 
 | ||||
| 		sni, err := urlutil.ExtractHostname(client.opts.url) | ||||
| 		sni, err := urlutil.ExtractHostname(g.opts.url) | ||||
| 		if err != nil { | ||||
| 			return &client, err | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		tlsConf.ServerName = sni | ||||
| 
 | ||||
| 		client.client = &http.Client{ | ||||
| 		client := &http.Client{ | ||||
| 			Transport: &http.Transport{ | ||||
| 				TLSClientConfig: tlsConf, | ||||
| 				Proxy:           http.ProxyFromEnvironment, | ||||
| 			}, | ||||
| 		} | ||||
| 	} else { | ||||
| 		client.client = http.DefaultClient | ||||
| 	} | ||||
| 
 | ||||
| 	return &client, nil | ||||
| 		return client, nil | ||||
| 	} | ||||
| 	return http.DefaultClient, nil | ||||
| } | ||||
|  |  | |||
|  | @ -24,7 +24,9 @@ import ( | |||
| 	"strings" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"helm.sh/helm/v3/internal/test" | ||||
| 	"github.com/pkg/errors" | ||||
| 
 | ||||
| 	"helm.sh/helm/v3/internal/tlsutil" | ||||
| 	"helm.sh/helm/v3/internal/version" | ||||
| 	"helm.sh/helm/v3/pkg/cli" | ||||
| ) | ||||
|  | @ -35,18 +37,18 @@ func TestHTTPGetter(t *testing.T) { | |||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if hg, ok := g.(*HTTPGetter); !ok { | ||||
| 	if _, ok := g.(*HTTPGetter); !ok { | ||||
| 		t.Fatal("Expected NewHTTPGetter to produce an *HTTPGetter") | ||||
| 	} else if hg.client != http.DefaultClient { | ||||
| 		t.Fatal("Expected NewHTTPGetter to return a default HTTP client.") | ||||
| 	} | ||||
| 
 | ||||
| 	// Test with SSL:
 | ||||
| 	cd := "../../testdata" | ||||
| 	join := filepath.Join | ||||
| 	ca, pub, priv := join(cd, "ca.pem"), join(cd, "crt.pem"), join(cd, "key.pem") | ||||
| 	ca, pub, priv := join(cd, "rootca.crt"), join(cd, "crt.pem"), join(cd, "key.pem") | ||||
| 
 | ||||
| 	// Test with options
 | ||||
| 	g, err = NewHTTPGetter( | ||||
| 		WithURL("http://example.com"), | ||||
| 		WithBasicAuth("I", "Am"), | ||||
| 		WithUserAgent("Groot"), | ||||
| 		WithTLSClientConfig(pub, priv, ca), | ||||
| 	) | ||||
| 	if err != nil { | ||||
|  | @ -54,27 +56,6 @@ func TestHTTPGetter(t *testing.T) { | |||
| 	} | ||||
| 
 | ||||
| 	hg, ok := g.(*HTTPGetter) | ||||
| 	if !ok { | ||||
| 		t.Fatal("Expected NewHTTPGetter to produce an *HTTPGetter") | ||||
| 	} | ||||
| 
 | ||||
| 	transport, ok := hg.client.Transport.(*http.Transport) | ||||
| 	if !ok { | ||||
| 		t.Errorf("Expected NewHTTPGetter to set up an HTTP transport") | ||||
| 	} | ||||
| 
 | ||||
| 	test.AssertGoldenString(t, transport.TLSClientConfig.ServerName, "output/httpgetter-servername.txt") | ||||
| 
 | ||||
| 	// Test other options
 | ||||
| 	g, err = NewHTTPGetter( | ||||
| 		WithBasicAuth("I", "Am"), | ||||
| 		WithUserAgent("Groot"), | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	hg, ok = g.(*HTTPGetter) | ||||
| 	if !ok { | ||||
| 		t.Fatal("expected NewHTTPGetter to produce an *HTTPGetter") | ||||
| 	} | ||||
|  | @ -90,6 +71,18 @@ func TestHTTPGetter(t *testing.T) { | |||
| 	if hg.opts.userAgent != "Groot" { | ||||
| 		t.Errorf("Expected NewHTTPGetter to contain %q as the user agent, got %q", "Groot", hg.opts.userAgent) | ||||
| 	} | ||||
| 
 | ||||
| 	if hg.opts.certFile != pub { | ||||
| 		t.Errorf("Expected NewHTTPGetter to contain %q as the public key file, got %q", pub, hg.opts.certFile) | ||||
| 	} | ||||
| 
 | ||||
| 	if hg.opts.keyFile != priv { | ||||
| 		t.Errorf("Expected NewHTTPGetter to contain %q as the private key file, got %q", priv, hg.opts.keyFile) | ||||
| 	} | ||||
| 
 | ||||
| 	if hg.opts.caFile != ca { | ||||
| 		t.Errorf("Expected NewHTTPGetter to contain %q as the CA file, got %q", ca, hg.opts.caFile) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestDownload(t *testing.T) { | ||||
|  | @ -149,3 +142,42 @@ func TestDownload(t *testing.T) { | |||
| 		t.Errorf("Expected %q, got %q", expect, got.String()) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestDownloadTLS(t *testing.T) { | ||||
| 	cd := "../../testdata" | ||||
| 	ca, pub, priv := filepath.Join(cd, "rootca.crt"), filepath.Join(cd, "crt.pem"), filepath.Join(cd, "key.pem") | ||||
| 
 | ||||
| 	tlsSrv := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})) | ||||
| 	tlsConf, err := tlsutil.NewClientTLS(pub, priv, ca) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(errors.Wrap(err, "can't create TLS config for client")) | ||||
| 	} | ||||
| 	tlsConf.BuildNameToCertificate() | ||||
| 	tlsConf.ServerName = "helm.sh" | ||||
| 	tlsSrv.TLS = tlsConf | ||||
| 	tlsSrv.StartTLS() | ||||
| 	defer tlsSrv.Close() | ||||
| 
 | ||||
| 	u, _ := url.ParseRequestURI(tlsSrv.URL) | ||||
| 	g, err := NewHTTPGetter( | ||||
| 		WithURL(u.String()), | ||||
| 		WithTLSClientConfig(pub, priv, ca), | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if _, err := g.Get(u.String()); err != nil { | ||||
| 		t.Error(err) | ||||
| 	} | ||||
| 
 | ||||
| 	// now test with TLS config being passed along in .Get (see #6635)
 | ||||
| 	g, err = NewHTTPGetter() | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if _, err := g.Get(u.String(), WithURL(u.String()), WithTLSClientConfig(pub, priv, ca)); err != nil { | ||||
| 		t.Error(err) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| example.com | ||||
|  | @ -1,35 +0,0 @@ | |||
| -----BEGIN CERTIFICATE----- | ||||
| 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 | ||||
| mlK3dw== | ||||
| -----END CERTIFICATE----- | ||||
|  | @ -1,29 +1,73 @@ | |||
| Certificate: | ||||
|     Data: | ||||
|         Version: 3 (0x2) | ||||
|         Serial Number: | ||||
|             55:31:53:9b:41:72:05:dc:90:49:bd:48:13:7c:59:9e:5a:53:5e:86 | ||||
|         Signature Algorithm: sha256WithRSAEncryption | ||||
|         Issuer: C=US, ST=CO, L=Boulder, O=Helm, CN=helm.sh | ||||
|         Validity | ||||
|             Not Before: Nov  1 22:51:49 2019 GMT | ||||
|             Not After : Oct 29 22:51:49 2029 GMT | ||||
|         Subject: C=US, ST=CO, L=Boulder, O=Helm, CN=helm.sh | ||||
|         Subject Public Key Info: | ||||
|             Public Key Algorithm: rsaEncryption | ||||
|                 RSA Public-Key: (2048 bit) | ||||
|                 Modulus: | ||||
|                     00:c8:89:55:0d:0b:f1:da:e6:c0:70:7d:d3:27:cd: | ||||
|                     b8:a8:81:8b:7c:a4:89:e5:d1:b1:78:01:1d:df:44: | ||||
|                     88:0b:fc:d6:81:35:3d:d1:3b:5e:8f:bb:93:b3:7e: | ||||
|                     28:db:ed:ff:a0:13:3a:70:a3:fe:94:6b:0b:fe:fb: | ||||
|                     63:00:b0:cb:dc:81:cd:80:dc:d0:2f:bf:b2:4f:9a: | ||||
|                     81:d4:22:dc:97:c8:8f:27:86:59:91:fa:92:05:75: | ||||
|                     c4:cc:6b:f5:a9:6b:74:1e:f5:db:a9:f8:bf:8c:a2: | ||||
|                     25:fd:a0:cc:79:f4:25:57:74:a9:23:9b:e2:b7:22: | ||||
|                     7a:14:7a:3d:ea:f1:7e:32:6b:57:6c:2e:c6:4f:75: | ||||
|                     54:f9:6b:54:d2:ca:eb:54:1c:af:39:15:9b:d0:7c: | ||||
|                     0f:f8:55:51:04:ea:da:fa:7b:8b:63:0f:ac:39:b1: | ||||
|                     f6:4b:8e:4e:f6:ea:e9:7b:e6:ba:5e:5a:8e:91:ef: | ||||
|                     dc:b1:7d:52:3f:73:83:52:46:83:48:49:ff:f2:2d: | ||||
|                     ca:54:f2:36:bb:49:cc:59:99:c0:9e:cf:8e:78:55: | ||||
|                     6c:ed:7d:7e:83:b8:59:2c:7d:f8:1a:81:f0:7d:f5: | ||||
|                     27:f2:db:ae:d4:31:54:38:fe:47:b2:ee:16:20:0f: | ||||
|                     f1:db:2d:28:bf:6f:38:eb:11:bb:9a:d4:b2:5a:3a: | ||||
|                     4a:7f | ||||
|                 Exponent: 65537 (0x10001) | ||||
|         X509v3 extensions: | ||||
|             X509v3 Subject Alternative Name:  | ||||
|                 DNS:helm.sh, IP Address:127.0.0.1 | ||||
|     Signature Algorithm: sha256WithRSAEncryption | ||||
|          4e:17:27:3d:36:4e:6c:2b:f7:d4:28:33:7e:05:26:7a:42:a0: | ||||
|          2c:44:57:04:a0:de:df:40:fb:af:70:27:e6:55:20:f1:f8:c0: | ||||
|          50:63:ab:b8:f1:31:5d:1e:f4:ca:8d:65:0b:d4:5e:5b:77:2f: | ||||
|          2a:af:74:5f:18:2d:92:29:7f:2d:97:fb:ec:aa:e3:1e:db:b3: | ||||
|          8d:01:aa:82:1a:f6:28:a8:b3:ee:15:9f:9a:f5:76:37:30:f2: | ||||
|          3b:38:13:b2:d4:14:94:c6:38:fa:f9:6e:94:e8:1f:11:0b:b0: | ||||
|          69:1a:b3:f9:f1:27:b4:d2:f5:64:54:7c:8f:e7:83:31:f6:0d: | ||||
|          a7:0e:0e:66:d8:33:2f:e0:a1:93:56:92:58:bf:50:da:56:8e: | ||||
|          db:42:22:f5:0c:6f:f8:4c:ef:f5:7c:2d:a6:b8:60:e4:bb:df: | ||||
|          a3:6c:c2:6b:99:0b:d3:0a:ad:7c:f4:74:72:9a:52:5e:81:d9: | ||||
|          a2:a2:dd:68:38:fb:b7:54:7f:f6:aa:ee:53:de:3d:3a:0e:86: | ||||
|          53:ad:af:72:db:fb:6b:18:ce:ac:e4:64:70:13:68:da:be:e1: | ||||
|          6b:46:dd:a0:72:96:9b:3f:ba:cf:11:6e:98:03:0a:69:83:9e: | ||||
|          37:25:c9:36:b9:68:4f:73:ca:c6:32:5c:be:46:64:bb:a8:cc: | ||||
|          71:25:8f:be | ||||
| -----BEGIN CERTIFICATE----- | ||||
| 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 | ||||
| g543Jck2uWhPc8rGMly+RmS7qMxxJY++ | ||||
| -----END CERTIFICATE----- | ||||
|  |  | |||
|  | @ -0,0 +1,4 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| openssl req -new -config openssl.conf -key key.pem -out key.csr | ||||
| openssl ca -config openssl.conf -create_serial -batch -in key.csr -out crt.pem -key rootca.key -cert rootca.crt | ||||
|  | @ -1,51 +1,27 @@ | |||
| -----BEGIN RSA PRIVATE KEY----- | ||||
| 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 | ||||
| -----END RSA PRIVATE KEY----- | ||||
|  |  | |||
|  | @ -0,0 +1,42 @@ | |||
| [ca] | ||||
| default_ca = CA_default | ||||
| 
 | ||||
| [CA_default] | ||||
| dir = ./ | ||||
| database = $dir/index.txt | ||||
| new_certs_dir = ./ | ||||
| serial = $dir/serial | ||||
| private_key = ./rootca.key | ||||
| certificate = ./rootca.crt | ||||
| default_days = 3650 | ||||
| default_md = sha256 | ||||
| policy = policy_anything | ||||
| copy_extensions = copyall | ||||
| 
 | ||||
| [policy_anything] | ||||
| countryName = optional | ||||
| stateOrProvinceName = optional | ||||
| localityName = optional | ||||
| organizationName = optional | ||||
| organizationalUnitName = optional | ||||
| commonName = supplied | ||||
| emailAddress = optional | ||||
| 
 | ||||
| [ req ] | ||||
| default_bits       = 2048 | ||||
| distinguished_name = req_distinguished_name | ||||
| req_extensions    = v3_req | ||||
| 
 | ||||
| [ req_distinguished_name ] | ||||
| countryName                 = Country Name (2 letter code) | ||||
| stateOrProvinceName         = State or Province Name (full name) | ||||
| localityName               = Locality Name (eg, city) | ||||
| organizationName           = Organization Name (eg, company) | ||||
| commonName                 = Common Name (e.g. server FQDN or YOUR name) | ||||
| 
 | ||||
| [ v3_req ] | ||||
| subjectAltName = @alternate_names | ||||
| 
 | ||||
| [alternate_names] | ||||
| DNS.1   = helm.sh | ||||
| IP.1    = 127.0.0.1 | ||||
|  | @ -0,0 +1,19 @@ | |||
| -----BEGIN CERTIFICATE----- | ||||
| MIIDITCCAgkCFAasUT/De3J4aee7b1VEESf+3ndyMA0GCSqGSIb3DQEBCwUAME0x | ||||
| CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDTzEQMA4GA1UEBwwHQm91bGRlcjENMAsG | ||||
| A1UECgwESGVsbTEQMA4GA1UEAwwHaGVsbS5zaDAeFw0xOTExMDEyMjM2MzZaFw0y | ||||
| MjA4MjEyMjM2MzZaME0xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDTzEQMA4GA1UE | ||||
| BwwHQm91bGRlcjENMAsGA1UECgwESGVsbTEQMA4GA1UEAwwHaGVsbS5zaDCCASIw | ||||
| DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMinBcDJwiG3OVb1bCWQqTAOS3s6 | ||||
| QwWkEXkoYyFFpCNvqEzQPtp+OkfD6gczc0ByGQibDLBApEQhq17inqtAxIUrTgXP | ||||
| ym3l+0/U7ejuTka3ue84slkw2lVobfVEvJWGro+93GzbxvVNNYGJcD2BKJqmCCxD | ||||
| I6tdTEL855kzgQUAvGITzDUxABU9+f06CW/9AlZlmBIuwrzRVjFNjflBrcm1PIUG | ||||
| upMCu8zaWat8o1TnLCDKizw1JJzCgCnMxGXfzeAd1MGUG/rOFkBImHf39Jakp/7L | ||||
| Icq+2FDE+0vNai0lpUpxPVTp8dcug8U3//bL3q0OqROA7Ks4wc0URGH71W8CAwEA | ||||
| ATANBgkqhkiG9w0BAQsFAAOCAQEAMJqzeg6cBbUkrh9a6+qa66IFR1Mf3wVB1c61 | ||||
| JN6Z70kjgSdOZ/NexxxSu347fIPyKGkmokbnE1MJVEETPmzhpuTkQDcq7KT4IcQF | ||||
| S+H4l0lNn09thIlIiAJmpQrNOlrHVtpLCFB4+YnsqqFKPlcO/dGy9U26L4xfn6+n | ||||
| 24/o7pNEu44GnktXPjfcbajaPUSKHxeYibjdftoUEYX/79ROu7E1QnNXj7mXymw0 | ||||
| rqOgIlyCUGw8WvRR8RzR6m+1lnwOc+nxFKXzTt0LqOQt9sHI1V71WrxgDE+Lck+W | ||||
| fybfsgodM2Y7VXnH4A4xoKeOHxW1YcqIKt0ribt8602lD1pYBg== | ||||
| -----END CERTIFICATE----- | ||||
|  | @ -0,0 +1,27 @@ | |||
| -----BEGIN RSA PRIVATE KEY----- | ||||
| MIIEpAIBAAKCAQEAyKcFwMnCIbc5VvVsJZCpMA5LezpDBaQReShjIUWkI2+oTNA+ | ||||
| 2n46R8PqBzNzQHIZCJsMsECkRCGrXuKeq0DEhStOBc/KbeX7T9Tt6O5ORre57ziy | ||||
| WTDaVWht9US8lYauj73cbNvG9U01gYlwPYEomqYILEMjq11MQvznmTOBBQC8YhPM | ||||
| NTEAFT35/ToJb/0CVmWYEi7CvNFWMU2N+UGtybU8hQa6kwK7zNpZq3yjVOcsIMqL | ||||
| PDUknMKAKczEZd/N4B3UwZQb+s4WQEiYd/f0lqSn/sshyr7YUMT7S81qLSWlSnE9 | ||||
| VOnx1y6DxTf/9sverQ6pE4DsqzjBzRREYfvVbwIDAQABAoIBAHwyTbBP8baWx4oY | ||||
| rNDvoplZL8VdgaCbNimNIxa0GW3Jrh2lhFIPcZl8HX5JjVvlg7M87XSm/kYhpQY9 | ||||
| NUMA+uMGs+uK+1xcztpSDNRxtMe27wKwUEw+ndXhprX6ztOqop/cP/StcI/jM2wz | ||||
| muKm8HAQttxWzlxCinKoQd4k8AYcnqc728FSODP7EsdDgiU6BhBZDqjgmqggye0y | ||||
| niog+JBPDgwTgGodJWtSYuP/G2iJDUvm7bGU2gftXTJstrATLftGKX8XOgJMmDx9 | ||||
| 8OgDtU21LzggarOQ/iwUKX2MEfYnP8kgGLgu5nNonJCHWYGeCZoxIn70rs3WoBsU | ||||
| 5+FzmHkCgYEA7MFYixlTSxXfen1MwctuZ9YiwoneSLfjmBb+LP0Pfa2r0CVMPaXM | ||||
| OexroIY14h64nunb7y3YifGk01RXzCBpEF5KhsZuYXAl3lGxbjbTjncU5/11Dim+ | ||||
| W9g+T4zDimlK2tuweAjMfWz6XG2inZ3xvK73mGkEsUnqhWQKXBRf7VsCgYEA2PZp | ||||
| KAwbpRFSYFwcZoRm81fLijZ5NbmOJtND6oG1LZVaVSYuvljvjQzeVfL4+Iju6FzT | ||||
| zbnEfVsatu0cTs6jMy0yJUl6wRbHlH/G6Ra8UxSvUUEFe1Xap33RmjkK+atzALQi | ||||
| pZPCIfLr+f9qQWrPMdZwzRnws0u2pKepSdXR0H0CgYB9chDdWyTkIwnPmDakdIri | ||||
| X/b5Bx4Nf8oLGxvAcLHVkMD5v9l+zKvCgT+hxZslXcvK//S17Z/Pr4b7JrSChyXE | ||||
| M4HfmaKA5HBcNQMDd+9ujDA6n/R29a1UcubJNbeiThoIjuEZKOhZCPY7JShFxZuB | ||||
| s1+jlPmUiqrF1PUcRvtxAwKBgQDGpuelmWB+hRutyujeHQC+cnaU+EeHH3y+o9Wd | ||||
| lGG1ePia2jkWZAwCU/QHMk8wEQDelJAB38O/G3mcYAH5Tk4zf4BYj6zrutXGbDBO | ||||
| H1kToO7dMPG5+eQYU6Vk1jHsZEUKMeU/QckQmIHkBy7c8tT/Rt9FjCjNodd7b2Ab | ||||
| kMFpaQKBgQDggmgsPFSZmo+yYDZucueXqfc8cbSWd9K1UruKMaPOsyoUWJNYARHA | ||||
| cpHTpaIjDth8MUp2zLIZnPUSDkSgEAOcRH4C5CxmgSkmeJdlEEzWMF2yugczlYGO | ||||
| l9SOX07w4/WJCZFeRWTqRGWs7X6iL8um0P9yFelw3SZt33ON+1fRPg== | ||||
| -----END RSA PRIVATE KEY----- | ||||
		Loading…
	
		Reference in New Issue