Use private key fixtures for kubeadm unit tests

This commit is contained in:
Jordan Liggitt 2021-02-01 10:06:10 -05:00
parent b418bc83db
commit 8761972f68
45 changed files with 956 additions and 7 deletions

View File

@ -77,6 +77,7 @@ go_test(
"config_test.go",
"init_test.go",
"join_test.go",
"main_test.go",
"token_test.go",
"version_test.go",
],
@ -95,6 +96,7 @@ go_test(
"//cmd/kubeadm/app/util/kubeconfig:go_default_library",
"//cmd/kubeadm/app/util/output:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/app/util/runtime:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//cmd/kubeadm/test/cmd:go_default_library",

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package cmd
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -63,6 +63,7 @@ go_test(
srcs = [
"certs_test.go",
"data_test.go",
"main_test.go",
],
embed = [":go_default_library"],
deps = [
@ -71,6 +72,7 @@ go_test(
"//cmd/kubeadm/app/phases/certs:go_default_library",
"//cmd/kubeadm/app/util/certs:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",

View File

@ -26,6 +26,7 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
certstestutil "k8s.io/kubernetes/cmd/kubeadm/app/util/certs"
"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
testutil "k8s.io/kubernetes/cmd/kubeadm/test"
)
@ -85,6 +86,8 @@ func TestCertsWithCSRs(t *testing.T) {
func TestCreateSparseCerts(t *testing.T) {
for _, test := range certstestutil.GetSparseCertTestCases(t) {
t.Run(test.Name, func(t *testing.T) {
pkiutiltesting.Reset()
tmpdir := testutil.SetupTempDir(t)
defer os.RemoveAll(tmpdir)

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package phases
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -11,6 +11,7 @@ go_test(
srcs = [
"certlist_test.go",
"certs_test.go",
"main_test.go",
],
embed = [":go_default_library"],
deps = [
@ -18,6 +19,7 @@ go_test(
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/util/certs:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//staging/src/k8s.io/client-go/util/cert:go_default_library",
"//staging/src/k8s.io/client-go/util/keyutil:go_default_library",

View File

@ -37,6 +37,7 @@ import (
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
certstestutil "k8s.io/kubernetes/cmd/kubeadm/app/util/certs"
"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
testutil "k8s.io/kubernetes/cmd/kubeadm/test"
)
@ -486,6 +487,8 @@ func TestSharedCertificateExists(t *testing.T) {
func TestCreatePKIAssetsWithSparseCerts(t *testing.T) {
for _, test := range certstestutil.GetSparseCertTestCases(t) {
t.Run(test.Name, func(t *testing.T) {
pkiutiltesting.Reset()
tmpdir := testutil.SetupTempDir(t)
defer os.RemoveAll(tmpdir)
@ -587,6 +590,8 @@ func TestUsingExternalCA(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
pkiutiltesting.Reset()
dir := testutil.SetupTempDir(t)
defer os.RemoveAll(dir)
@ -776,6 +781,8 @@ func TestCreateCertificateFilesMethods(t *testing.T) {
}
for _, test := range tests {
pkiutiltesting.Reset()
// Create temp folder for the test case
tmpdir := testutil.SetupTempDir(t)
defer os.RemoveAll(tmpdir)

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package certs
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -28,6 +28,7 @@ go_test(
srcs = [
"expiration_test.go",
"filerenewer_test.go",
"main_test.go",
"manager_test.go",
"readwriter_test.go",
],
@ -38,6 +39,7 @@ go_test(
"//cmd/kubeadm/app/util/certs:go_default_library",
"//cmd/kubeadm/app/util/kubeconfig:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
"//staging/src/k8s.io/client-go/util/cert:go_default_library",

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package renewal
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -9,6 +9,7 @@ load(
go_test(
name = "go_default_test",
srcs = [
"main_test.go",
"manifests_test.go",
"volumes_test.go",
],
@ -18,6 +19,7 @@ go_test(
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/features:go_default_library",
"//cmd/kubeadm/app/phases/certs:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/app/util/staticpod:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package controlplane
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -33,6 +33,7 @@ import (
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/features"
"k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
staticpodutil "k8s.io/kubernetes/cmd/kubeadm/app/util/staticpod"
testutil "k8s.io/kubernetes/cmd/kubeadm/test"
)
@ -920,6 +921,8 @@ func TestGetControllerManagerCommandExternalCA(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
pkiutiltesting.Reset()
// Create temp folder for the test case
tmpdir := testutil.SetupTempDir(t)
defer os.RemoveAll(tmpdir)

View File

@ -41,13 +41,17 @@ filegroup(
go_test(
name = "go_default_test",
srcs = ["copycerts_test.go"],
srcs = [
"copycerts_test.go",
"main_test.go",
],
embed = [":go_default_library"],
deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/phases/certs:go_default_library",
"//cmd/kubeadm/app/util/crypto:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package copycerts
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -44,7 +44,10 @@ filegroup(
go_test(
name = "go_default_test",
srcs = ["kubeconfig_test.go"],
srcs = [
"kubeconfig_test.go",
"main_test.go",
],
embed = [":go_default_library"],
deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
@ -52,6 +55,7 @@ go_test(
"//cmd/kubeadm/app/util:go_default_library",
"//cmd/kubeadm/app/util/certs:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//cmd/kubeadm/test/kubeconfig:go_default_library",
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package kubeconfig
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -72,6 +72,7 @@ go_test(
name = "go_default_test",
srcs = [
"compute_test.go",
"main_test.go",
"policy_test.go",
"postupgrade_test.go",
"staticpods_test.go",
@ -90,6 +91,7 @@ go_test(
"//cmd/kubeadm/app/util/config:go_default_library",
"//cmd/kubeadm/app/util/etcd:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/app/util/pkiutil/testing:go_default_library",
"//cmd/kubeadm/test:go_default_library",
"//staging/src/k8s.io/api/apps/v1:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",

View File

@ -0,0 +1,26 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package upgrade
import (
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
"testing"
)
func TestMain(m *testing.M) {
pkiutiltesting.RunWithPrivateKeyFixtureDirectory(m)
}

View File

@ -45,6 +45,7 @@ import (
configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config"
etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
pkiutiltesting "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing"
testutil "k8s.io/kubernetes/cmd/kubeadm/test"
)
@ -442,7 +443,7 @@ func TestStaticPodControlPlane(t *testing.T) {
for i := range tests {
rt := tests[i]
t.Run(rt.description, func(t *testing.T) {
t.Parallel()
pkiutiltesting.Reset()
waiter := NewFakeStaticPodWaiter(rt.waitErrsToReturn)
pathMgr, err := NewFakeStaticPodPathManager(rt.moveFileFunc)
if err != nil {
@ -762,7 +763,7 @@ func TestRenewCertsByComponent(t *testing.T) {
for i := range tests {
test := tests[i]
t.Run(test.name, func(t *testing.T) {
t.Parallel()
pkiutiltesting.Reset()
// Setup up basic requities
tmpDir := testutil.SetupTempDir(t)

View File

@ -42,6 +42,9 @@ filegroup(
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
srcs = [
":package-srcs",
"//cmd/kubeadm/app/util/pkiutil/testing:all-srcs",
],
tags = ["automanaged"],
)

View File

@ -619,8 +619,10 @@ func EncodePublicKeyPEM(key crypto.PublicKey) ([]byte, error) {
return pem.EncodeToMemory(&block), nil
}
// NewPrivateKey creates an RSA private key
func NewPrivateKey(keyType x509.PublicKeyAlgorithm) (crypto.Signer, error) {
// NewPrivateKey returns a new private key.
var NewPrivateKey = GeneratePrivateKey
func GeneratePrivateKey(keyType x509.PublicKeyAlgorithm) (crypto.Signer, error) {
if keyType == x509.ECDSA {
return ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader)
}

View File

@ -0,0 +1,23 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = ["testing.go"],
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil/testing",
visibility = ["//visibility:public"],
deps = ["//cmd/kubeadm/app/util/pkiutil:go_default_library"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAmRRc5Tbro3KP3FqQPczZeESUx+4EBO2sdOj5ew7+pW5j7/Ug
2WplrstguaXAsfoEuUEUvFSUoHtoLT4dXkEcNwkyBNDWasXAY/5Nj1/MoNkwUmhm
N3pyguVBafdq3gGmCgle6JBKAvkTLseXc92H81GoGu3TEZ03qUMpByTJpbZnKyLi
nVYQo5JZCCXZqOWAm8DKUPaGjjUnK8tTum4dBvfWbk2HPPtfcNzuo+8PJigeq1de
x1na+ZuVi70J+FhcVYWECt32gIKa15WXUt3OdiQBLn/UF43029HVOrDN35PTDhxF
Jr9MWWp6Js2CCgldXih9Gr6DzwRNIoqgP519VwIDAQABAoIBAHXkIMbGTSNLj098
z6lIohLlfk+bFq1U/YPsCHalTafKJF0gw3OtZTIAnzVaWdS3X/vsCzQfT3dokwqE
08lLC5e3FTZwPzFrqodXyhOpC8a0fWp5zH7dZmM4e/BIA52GV4FTRiyFMvqnKAbW
3+Tzr0fMk1Jp5iuikMNiXa6KvmFHr5ZaQxJo4k3eGHhcap2XSNdX5I1EaF9qCbBP
MQLy6jsh0gZvOC1rIZmhK1IQEnQ/FvCK6s2zXy71r8gMA4EsR3L0ybW5DTcEGU73
ruDJHbw1qSlbKh0tMQRnkYnI0QW2Jj04mSQfzJshAvLgHX9LarBY6ksEf1fetHIS
L64XlMECgYEAy1TpZ5vuQWYj3BU45sMY0KYD3mwrOCoxg/bx2lBe5AetRwpD5G+c
te50k83Kwp6sbkOgJUj+f3TSOlLCqkfknkcOxvL8Ee0XCT7kzHqtqeMZnhqE4MGq
ADT9kpx23OngIoLURbfrLvSUebe6wBobiOgOlJV/8wNcGXGE67Z0pMMCgYEAwLsw
3vah7rGFLdTqF+TGhxC3yfxdUGZvxP7BhvTFq8I+MtVc3ccQRb9CTyJJm1ktUZ6G
mK8ZWsbH0h/h2OgqVeY7BrpMRU+cBBbMeg2rI501SkpfPTlzFGpTcFdoWNggIbyW
kCWfe5lGAPt0OLV+Wt+qBjPvL2OBgpwXba/fq90CgYEAlVNcvoyTo0/h0gV77m0l
UkY53SVPcEX8a0/2OkCAD7NbnCp7xc36JtpinxGpcNibBbeAayF6VhxzMAYLlIaL
7Xl97roQSRH3swCPg2QtGfEApU4QfAd+U/yWpQ9nc8IGqxGt1y3E+I0CZYl7Cw2h
XyAdZR2OA+hZwQ3PclRiwYUCgYA2CkbBvdXZ39y/5RteZ79iz8U41ZI0oQRl8CjD
do6Wgnh+OGU5qj9dzysAlVSeQnr6j8CdvzsUwPf2awogj7iPLWcPk90e8huE6f+b
mYmLCuGOWxwpRpqF9uo+bcPMZY1c6EwvTt1RAsEmNVt5KyqqwFwkMRu35ebCgJHx
J4dH4QKBgGqzsnViHNqI1+LVxBLQTQAckiZCHIYp1Hvh4WHaGCcVEM8ERIDj51cG
0kfQBkNWWOhKszXyxYRMhJmeRLKou61U8ANr1LQmkSLhu22sQ9HQB2w1J9Gmav//
lmi4CwGmYDl1yTsgeHKPCwNQY3IRq1yXXV5NU6GteBbfihZ7mHil
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA9JpkVf5QxpVkjQMU10Pl2LzsceTK7lskq53ouANpZ12NgAag
jqzknjqPoJJbEAJvqFKZacBAUIHv2IrsmRa2LY8SZog/0mWUVOMgH5m3nvhNVtCE
KJ5PyuJ/A3eFMHptEy9fUqxO7pirzLucchFCGoB+LevLfiOPJ9IvWv0VvMxmWygA
kjUhLdEN56foHTigstRImj0Mrc43zvRKCf09E389aHq/3CEJaz/oPIH0geDf2PVp
VLG1JWqQ5b48wqs4dNsNBbPZKQqRWkjkWcPlUpdw7WtAMxgOBnCVt2U7jrP9Tt1d
4H3/u6eItrcDkYil4ZOobW6nEabJF5CbikJT0wIDAQABAoIBAA3tzNDozojAcR1m
k4U+pJQXDg/eS4APSKNNNrdj2li8hxZHSlVVmx83jn5CV1UuDlWzfnD7Na5f99yI
7Lg7BtzJTO7xy1Cb4DqFRIsIIeC3mw/ah+wYN8sB4uG7qKX+EsAI7pCypzwHDaF2
/Y2xVeZUctsClm/0bm6CFZhE2TwK+ziTeaQyuQjmlM3CEo7PcVrbBeoWlGxb00IE
BsKTXviUdlO6+Rv8Gr84OFToOdoc+y1UVcr0BB7vfCQuGzG/fGOd8jtfRabgKaId
lT6RfiDaVazQadx2cTizSao6eHuG6L5YFNUYF18OGV5R8LU+LMqWmI6FoTn2TYK8
nGJqBIECgYEA9vIci7KT1+IxzxWZf7+LqQNdbj8L13EvNBSEAWsvUhTlfLSOQTvz
FYP08W76VJmNMRaTAOTMqk/JC46utCRIqhJzU2Gqvv5PbGDHt6XkkHEI+gzCs/L0
UCpEfE0+qkU1BgJ7ahMrOsCs28aVy4StFdbESCEJbvhd5cwRTycg5lECgYEA/ZJK
r+NySDlDwjof8lIDqVQRjXPaVJbgWBy3kfoHKHW41US1j29BhV+LM11EwpgDMyDO
TQwrWRsTulGxdoT1NHK1P7lVlcRC7fENbbifoHM49ScIH88SnURnNDNDvZmoYR/g
ObBzHWP3oNYcWMIHDNWfJK4zTG5gPyRjpVq7+uMCgYEAiSFPer/y23ovYKjE8azD
eFp3AqaeA8hFhy0xVLxZrcIO4d499Lm+th7t4ThYaKxQPIcloORtRtJBeVqFZ2GS
vGa8hfwBXkhIgI2JulC0CQXMD1cQs+7hfrbKCyC2AMWnuSudrvzwD5M5Kl4vhrGp
kCwQGWHHJEllkxtsLUE0QtECgYBnrWT0PZ8AgMl/pJxjS71LgqAaof/nDjl0TWmR
OhWrKVcFfC5wEyFLEyGrQrtWhSjpwsQXJJ6ktDmAuN5Cg2Juq2gIQhMIRVLITwMa
lZ5O0E29jtP3jYci3lEEOuG7qBP8gjf/3nFy1ujszh6Q++Q+DyoeqUs4OPkJWCuV
9F9f2QKBgBuW7w4wXkOfwuLUQJt6HoHEcLhsYWBtzcArdEKdIzsI87IR/e1HkUNM
0MjX8k7tgYjiiiJ5DQDmfREMtWWPsbCOROad9/qiPJsh3DXyHjs79qgVnk6nNXN2
ZQcT6v4w6mYnKwfxC/95s3ro8rVCjcfRSy2VLkvRz2jOXHeFWudZ
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEAtCvqirdn2wxg2ZtOrkYI+DvBbKQR/dJCkSUyzQW6dtQzeOAU
tveVFJpvveJ/0yy7zlaaclOhJP0e5tbYb1Xu/q/AFzc8FNHkhr71N1DXldiB/viN
GXL4GUWP09utzlxCTZBWvkduMKwDutIAjf3qjzS+xX1/eTW6Q1nAqypyEvyuCw35
Kq1BLXpNwrVJuwSpzQd9jnjBTe1rnBaObwZ+wrMnOm/D9IFSWft6nH4R3sn7CgtG
T/js5ZtPW1S/ekl6IKPCIHkXEl37Z3xKPbHw2X2BR0Vmj4socv3cqEhB8ZXyzl0W
ekRlaR86k6yXBXUlmTY6VByxdkQjRLXv8WUMEQIDAQABAoIBAQCiS+kDucCg7h6U
BrWygL31tgY/se/O/8cc7jA7xQw5nF8dZGTkiFNPcupzVwOkG2i1rweDMtg29JgQ
groGWJdn7rMPdp71djjwNDW59WWtwpEfN5AKu6jHQwUTZ5DCEhNbwUiSMNAOofTe
Jet//Jl9FJtAVRMuAXrezoui5CJL/LL97Fk2TwY0Qv5XiOc1fAbI5kaGZcjVqTly
jyvWf2u8w/Ho3k1dAAoAHJa8SReHtPZI4S1q5Fy3Lk/7MzZ+EtGDVYLIS3X+CgA9
dei3PFRVOxqyiAktLfnYvklUW9wsgXFpiKVFGfxga1yzK0AO57k6TS/pe+Z/a0yX
9FtrnrIBAoGBAMTsEObYIoFN7HOJGvmS444iMxcjGQP0Qsse079MsFdNKOlPRa8Q
fE8Qc2Hh2+5URIsSJOSH4UuT4EXguEx+SmvlwaWBZGeVyRopIFgjhMXCP/9q8i2M
fDxfiZA/48WhScdygTVG8ksBgmVFlMH+xhSdfM/KZMOA8lIgSqJeeIGhAoGBAOo5
YOQM0fW2gB3NJM1E6dSnkYWpDKYP0k8WTryi7WYAnC29gn3IZ1CfQ6WjDGG2jQ+S
FVXX2g4I+WTXLxlmy+ImVTioOsVclmnqpORdJvBTXfYWMhXKalnXJs52bby4hT7d
NZ5DxZ5j60zQcQSih/OLFY9DswMZ6lq/nF9Jy1RxAoGBAK3cVpfZn61WJTtkg6Jx
4+Lrovv8iuuIzygS0ZUGmnKZt1M2ICoOfhI4TgbPqKPlVpcKr/PtXCakKtDHNTCk
GATnV29OrF0gS+uDAAGRanpHpMVXoPZCILYVC5mGLw2f90nWeOmW9/jtHjlXk50r
2ar92OKEqS5LPKbxx7NPgUnBAoGBAKuJnEFIdliK8SdiP6qp5sqccoI+PYo9Ghxb
zQxwEodauQbyvOfb5nZwPb3IPOAvLv4RUdjNvd/7iJLm2ZKz62vUASP+aRRz66Dk
fSDWbBckJzN8K/Azj1H+tWgN6e6GAOf6YDNplQicSw61tZ/cXM7rtL14qlkCGNWf
cSmERQqxAoGBAL/ewfrC5Sh815LBugoOzfbr+8jlTAP58u7Bx9jRzt0jT8g8j/wV
qq5wN8kmT/u4EXJryOO5gR7SctBshE+FZrVmloAhw9FDumtTvT6ELu97Sx4Dsp1A
h2Br4ottcz+LUUoXjep82Ud164yPSF0npVT407Aoj+o+gK9CquQSgtV4
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA7uPj81WDzmL1sx80yfOyPl3oS+HVbYY5oQG6h2QI4FALQGb2
bIevGbdsVqYfeiUkV121n9T3QlRMle9bPbFRP7YkTzf1L1imgb31NJGI0c6hucGd
47RpSERtpxWKcEBb7vtisBOxEcv9Lkneux4Cqw0y2OnMt8r+Kr2LO078dyyCdkN9
qSw9ZKlKA+lzTTgQt9C6DDW6ZeBkOvRrwGk3GC1GICHtCXPJMFrO/isv9dYKKdPG
CRiWPQrqREr1FxuzGZ4bPHulsgPdWzeY0F4bd2bYfekqJdryGjpmTRITyyULZI4Q
J/gX0H8zWO6+Q/eQWKtUzzxbvKn0dZ3Z6AxOwwIDAQABAoIBAE8IkjfFCPBVCRiT
sHFH8KZ1hw7jziqIB7Tez4lPbShZEv/hkJFjamjFqFAacbuFYjqNRDN2z77gCN5p
6/PDIDBF4EldJ/7cA2pVIDSeGXfgNt0v0z6sR1CjYuuuUrjEciXkgUfjm+dZZ4/S
3J9nVFam7TWaVCJSRDh7sP6UKS57pZuMayhx3s42zxVESoXsJQrk3Sg/Kx59iYiA
pNjEqFgwf3ap9UYwVkfcpNaX5v3CfE79f48yqH1kjcab+cnSbDNWRHquolFm0l0i
59mJfTZXu0l/WjigyHY+igTbGGcEX7IM1lDVMW/KBSulPyaswrSh80Em1eoMHY4R
YCCkSSECgYEA/FRLHGcPfG+1DMqH3gR8d56LWtICtmy1GnOj8GJADInpcq8T8YIM
QfqQav5dH9gPGx3NHXW7erd284+z72NjbaJh1iu3z5QOSJhDO/7++UJFdD1zAxbf
HsO81rdp5BsIPVyNPlUJDqECR6WAHMRmxmpWPoEPUmKmpbPTdgImfssCgYEA8l2M
Vlae7FvGMzX891PAr/HiQ1+NiSMTiDy+uFKYhFmYfIc2II3U/1Udkx5ILRhB8Ef1
9PV6QD21RPLc9mD/TVsO7tbfsG220VUEIAexFtPaXWmvIvk5KXhFNvHPOqS+t84w
kBwkovjmEBIMez6Uqzdc55t8vriEGnkql3KDuOkCgYB8AbEoND4YGY4QyzgalHnX
D8PMzokmviYC6fIXoTF4+A4SnpheiFsd0dZHvtplW/mQigTUBZgtpxx+dpEnhODI
cJVEfBfJnCmo46unQJpuRXN8vPZY/lSI+glEPL99qwtRnLqNd50L43ULYPqlKKCZ
wojADw1In9LmfInf5Q6mIQKBgBiS/ai/bau/fnAw2C5nspDkcLGuHZa7FL7qkdf0
n/xDbV+rAgT4/JDLG42QM3dHD2CCm2C0Byo+V4PfMCJXIWvBgNkctl+YMEI3YYyx
2vXakziHf7eHF5Gp3TK9/+oNTD0szeW+xMQ1gnY8rkFMzhwyJ9xf+p0H7nUUtgnX
FZ4JAoGBAPigtLPpqZJ/0ATkEAiAYSawHeytaYdMPVlQHqaHcXr29IEspJwLBTbJ
xxG8DrFCc/w1HWmoWNYbh/G851pBsiRy7WFKws2GFc8uG9U1Ee19FtQKsJjNStO9
gU+edo8WRL945qpY4axgf+idKezmlZ0BrwexmH24oSKOqkUkS5cV
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuxm/+QyQiy+jIKZohSSRiKg6PbLq5v7t8TgnQ75oIHCR7A47
5ihndxDFWvfSjbt02rL6b/D7dl4D1NZzqUnEB8dwbHAlNWRmwnxvqBKBsSIzzIxd
VIk3jwGW9xdycJJasZ7QGTbo7UL9BSmFXzEeAr/BndMqULKDFOllaN/DSthh6Jxi
VchiFsRXCXHagmQw7X+H1e+gACmwjCaD6388SANi71l2SrnSX4PV+gALDtl6/qZf
Vc4mN2X+8eioqXkk2DM0kUhDVoJrBTG4Se6dU56wZrKwEPhL4m10kRTZlgQoLQm1
OhhMhE8yYkTdZBDQ8DFjV20wduMKtYTBHTcaZwIDAQABAoIBAHzzImB5QqKhSqjI
WS7pkAOajWKc9QEVKOSaIqa8Jx/a7aiejOQVAZvjaFlq/YNHuC9BrbxKTDTtblOa
cB2TNMYZK/xPHJo+ld22an7s9Q3NkJg++Sk2hhML9bzIPNXu94B9Ve4w3Hdu8Did
VQOQcsFVPEFhP3Yq8R1rDR1vqiV1ndTu/0tbcgtSqtvyoKDh5Y5DaO73UGLwfjU5
OKBa3HHKpi4eth4E9XFTyTNZTD+XQSDfer19/R786nA9C89WHeUdieFRISoZLkIL
fiEm5my9I0FDAZRWxSY7TPhtvHXnITsikFj+7x/vTrCvUY5rttM7dCKdAfr71ytS
4zHz4/kCgYEA4sQTY9zbBxty4Jk7LknSoLDkUnFjEUOuOKwfliurNuEbOFyVopaB
lCJbLBSAmS5v3FAfoZagk0SaM3vS8Q084DBzzxzi7GPlgwFs0dnEgIrjm9QIuXGP
7Onr1dWRHeRqSbSfSPnNb4jSZIIi9NsU6nDPHIr0EFxP7uNztBTMLAsCgYEA0zia
xi2S8tDBbpXNoVarz9brPc05Xmo28c1rG6rtI3f6473KvsD+amj5OVKlYQOfHizP
2KEyY9/ispP7njYFmEMBTfucWR9MZvyj9miN+MFjBXfSE+tJaJYz6a9ll9ctrSkS
t8EuyttKjmmHcUK465YwKKnZ5W5UaqGSKAKXaJUCgYEAnhGVfo/t8WdVzW+ijCKT
esWzcjBtoRQvdnuszO4FvAxv//qxp5MIIi1Mpk5oUd7HxKfpVKb9qYoxft+6a6MR
oyjDIUT+fU8pJgexRhppWjz2aaIErteVPszUQstLC64z1MreGW1foXabScpY+ZtZ
Wg5moHvPozPl2Byeg5HXvH8CgYBWd8y8pnmK17ToHYFhtAZ//j6tPS9oHFlD4dEg
MXgE1iAqTU8Lihxc2X51XgT/0yi3hKbNyyfCxSub6YLPQNRHgd6t2vwla++uFWzV
+fVsyVZNLcEdkGur2hmEZ95SK6+yPKdB/F64gs9hv4fH8QWcxA4RB3+BMgpy4JPh
tzXehQKBgC1cYGZiqqvSKZoz21ZRtyQSnC7xrp/mk3Zh7rinTosyGhndbo68TL3a
3uorfMoTdD76poBvuwxf+J4qEdjY7iFcGvYVhLLvr5H2UCIqvXEu8hXWhc4d4ZAw
egR9udlkQXjLS2N5rax516Ra8frqjYp0Nuz/u6YBiEsIvGKZMx++
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwDQznOC4WXYEECU6wawTd6kWmpaeCcweCHZPP9FuOvnvwM8N
W8bgIJc4z9OlsYQ8ETdVOjDNuwNOhxfhz9isSpleRuKR0F/GyYMF7+b9868+RyQD
SSfzJz7aEdkXpOaBMMdGsgix3M0YJLZMf/mzA+x9KY/H+0ZyWOJLjHxeCJNh549O
PWs9UkSpcOsaHtIJCgTaAsL1BM7VxsbP8OjtNVUdVTO3ceDIo4zfHq9djdcAJ8N4
QIhqMkYUe9G5rynl0/+ZIFfybZS8AEIYWDi2TsG2B7ynKMClCUEau78rstIzynvG
BtXe7boeox1H4mcfw+zDRDFiiX7IuOs/Vc1cwQIDAQABAoIBAGvhoQqv86l7HWK2
ktk8LZ0fkmlomwIiyMS1K1xFwBpoSVMupG/cG9cPKjs0r68I6vI63aKQ3BjZDU20
cPHJy0L//LPK3k9YQuq+mSmDvQz3Uvx5UULRoqBnnd0gvi23l9H6OEsbqEGn+KI6
lIvMateL+ODILFZ0vx/2vLL454rlva2tsL/FP0CkaP0grU2z+yO8cMTsQqNe8Azn
zXhdPMXJRp8q+DeHXZATCdprsFHFKlhqf9ZkFfR7qd1RjCf9g2e5IuJVrgSfgF8a
oIToeE72iFJuG9FVS3PPnR6X97G67YZx+a4g5MAQQdglxESKZBxoc3y2O6moJgoJ
m98o35UCgYEA3oJ6FTd5xuDUM5pgrgwvQ0ZuMJCUb4papagBjzV+MXW6tQBEO6Ei
0+yHHvzcaq8ZP9khfp+sPUl2k7BkYmeM7ASm6vn1F/OcRBtCsRV07pMuLK3LGoEu
OYGVLQC8e1fJ+Jihnnl9lsGA/kv0XJ+FE82NYVOGb3EcZXvLg3R9kWsCgYEA3SID
U8dblCydFE5Mt603EhGCJ/bx+Jh8h4DEKiJHPV3INhF12/Zhkd47+Kx4tymdE4Jb
Ekd3tvVP7b5XNPWbPXzxnzKt7bP67M66TK+txfDvUIdH4OiQiuGSdv7V907wfbd2
HqvX/nPbFAUDp9uUpazWClWmZwu/WI4K+YqpmYMCgYBpa5P/vVra2OZw1HF9xJQX
4aSPKdDJz9kGp0Sl3wg80rR00P2C6uMfWO7jxZWAjhj+YRc3cNsf5lBhxK6q2Lix
kbqrlWWDxY2BzxCX6byO0/iKfoS9t/p4kGZm/fRO09cDCv13ocPYyzEcSkwqHgHk
0fxr4jDNV9/GTRKs42IipQKBgBsYNcwoGyJ2rPB1/5Rp1tuR5Z679T3+gROhRWfc
N1pfiU6GqShAcggLcNGxYEEhCiv/xuTgeNykBh0dO1Yz2ceY7YoSDZmYeeBWHCGV
TPd54/i7+qSmGj/KD8Ygx1q8A1+EAScU6yw0Sd2UF7SThQ0ftkIh6HerytAw50tY
IBu9AoGBAIlLTaJvkHvd5w24j0yFv7gX9UlubTg8s6UHeC50sEM1UB89qObIYSPE
xebaO4e1dddIbcf6NzvbgzFVSZCztVbqJJrtbGyD+sz6I88fdY0CogRhXb4HnGD1
AasTDmLeX3ZBfRg55zq1mEngsNoqTA9s6UOnEF/nvYGKJNdUUxo0
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA4KLMcwNPlTdfupXvSdiTiAiqRjgJy8aVVQ/oi622cOHmuwLn
TETENdz6INoE0GYJ+VSouXsLn4+4mm/TySnkTn21g6vUr+3JPdOfrmqn9EJNkBZN
KuzYiXTNckt5YNYL5UG6JdyPzOF0MWt1IG9dRzccE0gbgWWf5zUoPLvGYVdB1Vq0
D+rnGZYSBSf3HHrL7EDgx7gKekA6WM3p3pvkhrRs6+gsg4szEM8SM0bVICia4cBr
ksof8Ht24RFlrkYbrjxyYrIVN8L2lSgo/vdofCxX2ycxJ9wZCvckPFb2cckBP6WH
dOl5OltCM7/dWdcDQf3oXdkyS6k65jdCgr2spQIDAQABAoIBAB9vSLLzjKhx5kiD
AMhRsVuA8ur+nohQkscjgcRCG9yyEAqtflaS7O4orSv5tmC/Vrf4W+AQ0vCSOSAL
dBSbcyJ0vvjdC9dOrDGlspvCuxwYRyhZppTSLf8WREWxQBwH+AQt7XGs6sad6hec
VPij/OahVKFyHr89zGGbc7UEBd/LBf7fWOXucKW2UvuUAgVH1nGlFIKS59uvakAi
QNMfYO00/ISfwank209sDh5b6rQ7TJ05ErOZTqnQz0h2KBKbOqiqxnzEr5cA53xZ
jxYz6nNbyDK1uBus40v2yJqIkmQK8pgYjmeExjDXOuh//sNjdj7ULrk/+xfL9LMj
iRgMPIUCgYEA9OvNN3fFav7dBBB5t6EyzAc4mXjafq/0fULGPLPqa8nuf+FHLLRx
g16PVE1EQdQuO+Do/SHdsLqcH2y2AO3bfk2h49U8Ql1ye3by3c6O1ZZOySW3eJJI
1MyYLSDSIrtHDXKgvVXKO1XtpBqJMRRseOIt6zf5cIuPZjyQQ1/giVcCgYEA6swY
ALQwzT8RWvIOlzUb9Xgf+SiHHKz6e4dKj0nIqrcUw1IjGUbA4syW9UveFwTonz81
1sPiS1ZhDjpzcMoJ1EmI2uHlPyPh0NzqeMeJBQfqBP6vbRDQ5tHBSmwS8I8VYHD0
MdH9jr4BtXEzkS8M+5XtCDCZ7yUXuSophC+x8GMCgYEA367T18rNRHDLzcB2SZ0x
VWFq8c+MTZPJiPUJM7tlZ1gfOC+43z1VRpN/95AxvKVaLFm2sCjT3Wow2ApjFuol
Qm8IYZoH1Nyfh98U5DqX/L2v6slFjRqc5ayNdvm4sPu1YrTD1OebMSHDTdLmZSqv
/p8jLOYMLBtptgeuAbp4yTUCgYEAgSiiL4jvq4f88Q1kb1M8vQxGclYT9PdGlrs2
jZnl89rgZg2B1z6vjlNC207PrdP6btdjs29vxUeP/jazGCFbxNZqnRVUeSYw6ycL
KEODISxYVEURlSqB7+cEr/7BcGkVNkcMXXeJRoNJB1ltJ3k9aAvyJuYtV3sNEMOb
sOZXuMcCgYEA8lAEVkhe1mvd3Gb1hDVUPQ2O/5MdLAne+KHO+Jw29ucY34MhjKPL
nTn05MBMQvad66sR1nG6Dc9Rt5RPZHJefBojap43itTGk0sqNdaiUV0HjxAToCp/
UcrgQfauxr5+gExaxRFF4udBaJzatnv5l5pUyoemw30DCJN3svZZCV0=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpgIBAAKCAQEAy2K7q5QayvbCrNNUmeqfnsBRGY01Vzfyc/TkBpGJ32nmxZI5
X7hB3XYKjhAX8F/z/cuS/tYsRSAG4LKlTA9gznz+5YnOSMI6QTyMZaE1+3gIct0W
KjlcVBeXXxo8mAxoNfHsOwY79tuLgVwezhZLw/mOg7hZSMuZo45Llhx0aee1rfdf
CyZ6busVRmWAWF+H/giOe+hGZW76i7bUYlN7PyArxg0lVeh9Y4TeF0j0i0EhlW/9
KVZb+67jZpHXxKDy5nic4iYi3nKL0Y61RyPcz/48w382hxIxESgXWOA6vu3cLnxi
R5NP2F37Da0jR17PaTvbTJL1a61r3xVdV/886QIDAQABAoIBAQCBSiFdAAhML7Mv
ZCQqt/CCXWTwpkhbSnBw8CMoXcpUYKDXxY19YMdV/dzV1DszjfuvwYKPRxzbUHGu
00Gq6Tez69epmQGuVPHtWI0zadjEI9jTE+IsM0yTFHAgf7A3Q+PXLxPprZve4E99
i0712UyOpwzGhSEU2oCvbRx1r179lrE9sNot1Yi4gR7Z8IvHDs28Dt9Ll/jmpFlP
0dFVQkbmguEFFb7F2b0a7170Zn5Ud130XNNXzy+MgdfV8Ygy8ygLjj3zQb9FVZa9
yZn9nPkelEv0kX34+Pjvn6mrvcj0RZIbCI5/lD96hS3Nt+C7uX14jdUJs3TZs3ba
0Pr77J51AoGBAOoykwx8rYvAR2c6gRtjqRuZ6HenUZPsyNns9VlwlkP/DSjdblF7
fN8otr7jvkbdkJECe1+rW/MluKOL1OQBXl2K05fKMShGxkfDVwPdVKCvoQqqD9iH
nE37/voeet+iIRNZAht8KeV28FFHQuyvYjC9ijFNFUetgZ/90ZODjf2LAoGBAN5R
2JiKwBkytIVLJQibjCXxARerXhHHsc8dL1rpKdABjUpS/S0dliDaPHP9OxxRBXP7
2WbLA0GBLE2uf8ke6g4IM74t2lTlf4TIbbUeCarx9KgOc5K0l5ePGFSwXJbPKbEt
wBKM478gHGIp7SN0eXNxBXBpVr3aiKERMHuIbuXbAoGBANaHZ14b41lN09qCo/tz
6leHP4RDt52aXE4MGp9IW82DmAlj9Qcc6ED/aY8ozYbatO+wZ1U2gi8T0bO2hlgp
zMhBQBweMbNkSYM5M78tgrUCzLEZIRTG/G4PNPzm6MVsHYI8mYqVzUcOEYtSjMKE
0Zw2M51/r8uN61ykQ9MtweaLAoGBANGKfwW3sTuOyQrhOrSUN1IDh64RfQZxG6xE
q7+aCCjfbZZiBfKh8kBgsZ35Td9wlh0tgUkbi6QP5fwJvrOHib9UB8D2YtSlwr0a
VBzjhOU0TA6iIFhkEoVs/9fCqmISPA+dOW3CkV4xG8+CCNrkCxy9qAy9nF4xPZni
I7ora6sFAoGBAMPwHCQVzecX1b2bGT8FXqIgENvZ1rVqKRKWHAdPgN6YlfSYlccf
FLTqJPUGlk7cr48bLDh/DyU+whhCc+hI6oAqG1q9OcY0x0pW8lA27qiI6YcfAgvr
Wp+sN6v1DJs9ry1V7BYWuS/nh7ju7sOk5pGyN4DtaRjQPodTgwie9HUu
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAlg70RkBV6Sxz8kLlXzb1BkVlYFHGGvuudHw65XPq/o2yKnD9
LRMozWFnOCdfH0HgxBi3tu2WB880usK4SWqA5cD1zNtFIKmE6Avx3UxyI69TiiLD
hXMz/nkjddH/UZq7YdMzggWKzPAJxag+gDpiiHtnHYIxTJJfg97fc5Uybs/fnTo8
G0ChF2xwsD9nxBD6RqWSQIo87E7j/GSSGAJue6lx7tDypz3bq1LruwEjhggLkUT2
rXF0O4S82k3AkgNIoiRQW92x2upO007uw1f3vN4Vn4NQEoEKxPLw9/XlRAXFIGga
YmjOG03BlQj3wQDuHVIFM6UsdOyi8ZnICA/jiQIDAQABAoIBAB7UA6tLHFtDHq7u
v2DIUZ5wM1uOcTyp6DVWMGNjZSvWwHunqtvPy9ol4KbQr+IkDqE60sNqHCCOmS6l
QmcS0lhhRB5KDfGf4gYqLg5g3jImmusOKU0JVe05xec2tVV2jHiUg0h7CwD/b4KE
BhMh64xOjeiqDqbEi4r0BsQgKrRJAAc8yiQqcfx5rF9aJVRTU+ZDbhEcOK0/PMQ+
duLnTqNgUk45tcIE+9CIp6q0pfRwlLNCrtKdLg2YVVPndgahqGKdwHlGFnY00HNp
anL8sLH417aYYrMT8bXUJyrcD9CFQ713Z7LizTckATQqx/qJC1BTHmJUp8Lwd8rr
0DZsXAECgYEAw/FQFP1rAXukNXTNS69RmoJEozjm80jg4GXWUhEc69uxxyZjk6NC
7u9qd/aoFaP8HLHav4dlQZ7LteUdoiA+mOO2e7wYd34mF6gQ/yYIckJKRpU50cbO
QGUomYKco3UHkouqth9nT8NJ+8VLr5Fk5BPIYse/Fs5CpBigH5FEDBkCgYEAxA1T
O+/2XLNxDn4ZCWaR452agDU6JWiQqBqtX3zQy0g4W4/EJlwmxf5LeLkCfdCU9kDG
z3YiFrkyqLi1olwFzthSskQTas24rkQnAhaO4YfIGjFglt8ePaOr+hUAhsdxalps
ESqe7Lz9/Gpb2moABBQ3EEr8QLSnW5HfIacUgPECgYEAjntjaF/+980Y02ZkAq0y
AdDIaIhwKGjOXV6wQmz/QuM2m0JnFmyZt3WRTjqmb1YXdiY+kxe5ocX/C/3XVpVr
73FmuQNGJ14sBPfJpD/b1Hov2LOan9iZEmp842P+0z2+i+nT8StUzMONgO8u4jQv
0UoxZOMrKUJDY2Akz8+qU8ECgYAZJLBZDoRlDSphtnBVkU8ChxLqgGkNpSRwOsOj
bGmGuKNpsr1wQf9DA0MAn5GfOyHvlw0oTDlA+s1xcAbzZKPmDD5G2I4481tNFjZ+
gRAgAn76RPzjPIgvVY9Xylu/7VIxVplndjTdnbthJO7UyyVnYIRTVZqWXdTc3I9m
THxHsQKBgQCbPrGJ9mhnq7ArnXRta5IscKZGV//WpSpamgwxvSis0lWb4l3siFo4
UEPX8HoDV2g18mSg/XxgHXH9dKDeDtIpeHF6ayiCGSD3mGcv+yd9Z9rYGibC0SOB
Dx/DdFXyWE6OR2f1WVnXTS+DvDAp6r++gaF91C4A0TiDx9jpml5iEQ==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA5zEzkBn1PQ9zW5obGph8mEp3jLK5kYlT2T6jJk9Sj7p5hNDo
vRtIocxPkYEjW6slZ/P5bvW3lcL//gAKVmhr38MVYrbFZoNz5B/unyh5Xm4ZmdzN
axezOpfesa0+RPYZ2ulDW9VC7Rs2dXQqjvK0GZF2QQPJmFZ54CQXdWogQ2SnlLyj
548TGzT6o724lUofFEhZFBDs9lokBy42spZ/3z15KlJz4pp9pTdRbv7tK8JzmyXr
pmVh+K6Z68CPka4xtQKUMxDHv2vvuwRzczodmMSN6txbUk+U+pT3pCJki9fqUq4f
DkClvkIhUHJ8zP+skG1S8sW2VZcNzpWcKgVY2QIDAQABAoIBAHHs/fLJx96iCX+f
TjHp6KQHNihAPk+oc4g/ZJhRSGcJRi6b38SoeD869g7Gq0zV5qX2RPlX3nLPV+Sr
0mxIIrhuYtB1LotYxbgpwCXwBPbynG0EsLlQQYLjKds2etPyzkTg48+SJNvAqDJy
3zH4CaX712EsY6BNJNu+DU1P0bxDIr59euIPp2KiAf+qI/jjQLnVoXSvHloaX/u0
Dp5HgJX36e8wktxDFdCyRLuOp2ricwfMNu9bcKfCrz8e1gvxf+g5pZ0ZEe+NponQ
4YWC/FgOeTF06+LxJI9Pzf+dK+0T+RMhMi7wAzyydi47EpcbIpLc6E/zqonLq8xH
ZUwInIECgYEA98z8OWvpB83PH3uR5Jaqfdaj5mo+4b9+KmSPchfgOCss1mIkn23U
ZYXyH0jIAbKA83F7Y5vOQ2/MgnQlVzGXUjFFqf2y8VAbDPZBlHvpd+LuBw0vEV4P
GF92U43+gvVdahPgL7RQGo44YWL95BrDx8ewGnnj4qpOr5c/g5VizCkCgYEA7teI
SE5FSNpFpNwuv4Lf43g0Iw8G4mecrY9XcmhLvEHTfQRra/Tx1ZnkJq4ulr0OTyob
rKzR25EDdL6vt8laxLU6sVGm/rTiy8TWUCK6DYFOxrnMeoYBBxn+waSFr+576SZA
qrH3cFFTXC9+Hj1ckCX81zfHSqH3hkmC3uKSvTECgYEA2mJIAt8MHrmNiSRg3gC+
PmqURXNq+Y7GxNuc46MREs9SE5moxuyHG/Xg/RsqUPyc0m83nABq1lnH9UwgwGhP
ALu1tmuEcVD0lgbMouxVRDe1KHfA/GBVk1hGMrrYC1fsPJlJoSEa21xtab5RHN9N
nVpp49t6L3+CGxODgRZ9XIkCgYAgGJi41sPayXJIeEpT9BtwLwwalf9f13qnnDat
KjTbRKFOEJT6+fyxrq+JPykFmrxciRUU/FhrQC6Ntr5YXVe0TYJop8dgPSCpL3d5
Z2FHRVQ3wmonIPDsamLg1OIeRVcjer9/8NCGqHciUUOKfsZ8nI5Awb8nWWKxChnr
J9l+UQKBgFFgGNVvL2o4Ioxb/RuSGNwvjaee5nyVBGIEzc2hYjm23uXYNvNnzyrX
nwVvCJe2G3ibIMdqn3y6aN1+8UxPD8azwZl7NzY3dFZtOprWto7UgB0eip2t/EV3
wNyN6zcwnnyVFChkz/E+sl1GCP3BANw5gKWdk0bwZ5U7NmQjP1TQ
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAtswwNsbGcEny+nH7awNM9ngO5yOt1OyB8bFElu1khuaFz/QX
4iPK0rHvWDFPp4FPqb5Lcp6L/e9el1OjwedFbYq8JkoOubJohNV5d9334IkjzIL6
y9+Oo83uCoLT28tMJttjVdvz3yXKIWfidLPZ6w+AF2FiwabNBWH7vBE8HQT5Qof/
q7DNigrBaIwv2QZRUn3887L0ioJryLd2o2rRSrew1xaW1jj7NinVN1IV8LUVCSH/
h595lfHhlCNVYgK8fvYNI9c1Um6FFgU4j9aKYpXX+iQMw07EuF1rrzB3+IulwXC/
k521FejO86paeN/ELTxWZen8jeBnokww7G0q7QIDAQABAoIBADSdsYMS1CueHYJZ
LLUwzgZjqGZ/rpmLOhwHmmaXDkiGMh4ZdIZzJv5emTYZe4QLhJKnY7AqUsFVFTUZ
rhkyKJnPRTkAOBzbbZpOmBgYnDDVSKilSutD/hrIO6xq2/B4JANLQtyD4z5n8jaL
YHOXETLH02bncTWsfXb/LSaFD3iKaST6/hrgeWU8Qh2y9/g8Eo+/zogitoxYoSWl
n8EtlQ6ASWQKL6W0P8D//FZX7u+fYwcq0ZKfrNyQl/IG4PJunIsxZOyB1TYDeMUq
eZh7aOvcu4+4LJvgjM1mmhwCAUNM65W3hvOHJVWF1Igo9zYBlmBv438ECbzw7uqL
KmUmg0ECgYEA50S7gSPH6xr0tmE4xe/FX19Az11B502BMntBN1RcE6LSRF7FnGNk
fZ2XALYFrLF1Jl1UfL+AXMcnTsfpujHnwp6XUpUrZipk9F2mMeakV0crygSxiH3i
opFvJmNdVM8SQNDcnv1E0O+D63jdZyPk6MV3mbOb2biPHNk8xug6mv8CgYEAyliB
G3BC79GWfHRB91R2bjT/iRwtwh98X1MD9kJ//+9CrxI3FuT9PNGu4FyLhnUfG/aG
m1o8NyHFTQ/8jSo/r3vdiG2TP/WLbW1qjQa2aikEVeDE3Ce2tZ0BRsfcS0J4G0u7
eT6muMS/8rTPIWDNhnqS9dFAxat7sHcQbsn+VhMCgYAYKIflv5UcrB4wBwvlMVzO
z6Z3guhlfyUl3tY7L2bG7lVEqxm9cmyG6rVhb6I8HfV84nb26RJBntQuWJfDyX7K
R8LK76Yu7/LHzBiWUd+M9nROkBrzhSLtlH+l5O9U8qSXfLnvKcnMgZioOmH2ajt5
TVdnCOoY3jyk6NR+erfUhQKBgDANAmPMreibYdweE4gzY4haR5B8w5UEuxk78oXp
VtIlNDW04qYqLMTjml6nO27roz6VtXNw4znIaD0bncK8FLGMfZgnRT98BOcwg4wH
2wusv93Q6Y7KU4YfSa1QSs0IdNMukc+CBD9+YYK2UzW+8i+MLhf34CTQyyelrp5Q
k3hHAoGBALzgYeHC/QKauXn2N2oqg5q4YtBTHzBxrOVNr0ObALZEqGsi+Yz3EmU9
JUN1Im5qBknD8CTobcqv6INGTRreVFDbz4zbosKqDcFg6xVPvJiPIw1IuWBTX/ld
Dsk5kzrrixpQTtPNqCtgw+oz5atX2ytUUZtc3Tjqcb1gW3SdbWRR
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA0sb0v9Vijbnt1ZciYTwDM0hLI1VuYewxVYjySOTitbR2FduL
BAw7vsLp5BgYc7QtR5/VOjnaYBirctOq5j5Z9yG6kgFH8Mu6svzIPRPfL/ABvl6Z
782cYKlm+enfHRDbBRSMbX9NbVDg1RyhX+NwUNtygviAw4ea/Dlf2QU3/pKuMCuA
9g3cwK1QSckdRamDNVeLJ8te3KWGykz+v4xm4FASiEByjkB26YYrGstFXgmfEMrN
I/X822AU/PBovU9kbuHuSAS/i7UOuyDroCrioWzJFmiSg/ynNja482ByJCZVUeBW
qAxtLLiz7ll7BD58yojRgaPt4uMYJeCl05PNlQIDAQABAoIBAQDQwRPuWty9GYSg
oor+Wn2g8NzaJeapPVCvMm8kGu0eoZjClSnd3G/fwxP7QJIXJkAiS/7XKC1MN6K2
m0ULvH1F8jXiHTqvFlfWpd18AI5v3/kaHn+/rZhPc/f1VNgQ5XzGT0+1svtwZUYI
S87YNV4r9uw3IwAEp+2sGPcA7dZDXh4oStwzch41fjfTlACtgGpZuo3ui05VKQUf
qvoHD8t12z0Ri6hd4IM7iBPBqTKXvN1koub/KRI0nI2e0EhaaZXuZcmh2DqCPQg5
siag8Vv/6IXE/XJtnx3EXBC5JAiqtr4wWQOkHFjISAVj7nKJmmjuZFQwnGa8ooWt
+K69QS2RAoGBANvBSH0wiKCwuYTAN3JT3HE/Bm6zUHOjWTCnlSH5Iqmq1Hat7Tn9
r00YxMimuDg6OWB2cXyaoOFVNIlaMiFxdCZ1/dz0b1nx1j4JkV9f/mAG0fNhrPpI
g4vcXkpBsLkJe1/7wRQyspFfH0BXGMARcsJR92fYTYrXbiaWLA5p0lszAoGBAPWK
mfwgdgELkJrkcMH0vzQX5pd9MxIYL8G+ALG+0UiyAmOPctAm5Q6BuDCcEDHhAOTQ
lhHxuR+CQzNvAXTtGNjAmkRA4ahTFaCxE/zROFatlN1iDY3e/K676y+dvgprZZZB
yi3BcIaDv3s1/k2GUKoLeIYF+Qq1uV8b8kH6O/QXAoGAEAIGa8grS7lT6k2uPE/L
kRxMNaguRh4yEw9CF9V0JvPgwjxtOXo3WOBjBVLPvJjRMSuvnKoO6hsw1oiRekov
cdXKhlvv+JdbSe2cf1wYxZn5lUcaOKkrm/aTj8k1PGVqbVWDfRssUtahCijODr+2
ol0iLphdHa4PwhPSZcJjpm0CgYEAxY4LkKCpcPPWF9l+o38Aq7AjNnVkNsXA/teZ
hWkqx5t5cpNC5Bi3KLHT+UBHg2ouJutwIuXidWiAGwzQFjyBRjvIouu045Jdj1mJ
5FqNQqgMYwZ2M1Ra51eIxVncQlPge0FZovDFUWUFFeP+RG+xzO7HvMVnd2d4yv4Y
L19fB2cCgYEAmKGQ3naCN7UovNrbFrZHMIwJzL2GPZGqbLTPleI7Xr9Jtw4Gct4A
n/bPBVSPrTWQwzYB+IjIIcpyNfjCug8z5OpbGMc3k+UMQdJQsM/iESoCzRP0P6nR
iYjuid9yrpv/cHewcl9AzElUedQ2ApVlVA5YjNHkLUOc5/BVJCyoiBI=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAnw/muRvrfRVNDk7FjAJgNT+2IDrz+oL7kL/phZ/6vgzECEU7
i9ic5YjLxG9HiUIOTlER6NSCYXr6y/jl8zjWW3CL68PDpu403zGn4Rjbj9P4r4FU
75jYyKCQEAP2Z5OuauoizFFThabk6NQROy8H7/mhhMEyYvM8ZGsoo5adNGwNWC22
7muBpmAmUYPB4LMpMQsM6527TPU9RHAsh05fSYakwjEgMjjPuF10OK17vB66ne9B
2G2wpw5h5VufC/8r+JlKa0dR15sHOmp9Tfk1UOXuB+ePsR3YI66HzovIW8xy1brz
arieyoZBzXBzv9Eg8dHxwqwJ7hSvOLzWmnkCbwIDAQABAoIBAFd/dMjxDdpx5EBx
noPFLs077eDO7TUp5l6a40epWFJBTXjLNNVZ4/z0Ajtdh3l+x8XXHMX6WHptHxcj
JMNlyazlPWME/lSOhrEcbKALf4Qf85X/zAw9BUtf37+fnmUdvP19LIU+W3aS9ysI
tS3cUj51EJ+pcyExclA/Dkzm5jVWOQKd5ZV3/s3uCZ9Gdg3kOyyBxX39VBbU/V07
XRvGANddzYCRH8mfuBxcyZoH+iOfnXBSIh6zKtC7PhbxLGBfFNPMBj10NSmNOm3b
MAlfptl8ld95xE2L2v4LHP2jaWO7cQerK9VJRxgkj0H4GfHNKmrXz8RYgWAY9DRV
OnbnraECgYEAyYFzj9ih7fQdRp7BUVkvf2/zNwjHAY9qFjIG0L60e/vLsl/jSfyW
2b6C7glo24Kndx0BybW2j2qjKWfKtGXhe0ClrMC21kEZ5De4kER964UOwJyjdCHY
eg6x6BvbBc9XQXsB+KbyIVrxLdt5FapZC7lkEqUSilpVaUvsIo3TSBECgYEAyhQE
WaKIghCg0uvYI1aiwEQ2423zG57Ci+mReE67aioHWROnzCYridrUcFYDr4BtrURj
GFYlbxQVnmdJyHmKF/KJTke8Ylo8K+aDgADmDQ2JT9SMfYCSFy2/V2zevTNXPgPI
cSvpVtiEW/QEFDn9LvYwX0KUdzcE8H2CosO2In8CgYEAiTIPSXg4wDe+GxAKFWYA
tea2FNlwDXrkwxnqlAPUBLpqdRdePEizOKvCn2lesF4jwTDJv9lt4/W6A338gJkB
TZa1dop7siL/Cuh5TBimF04vviqoC3Dj4C7TKHKWzDzgbt/edrrMDrPJk+xjY8Hp
ANeH8D3eAr8AekHME7a2jNECgYBNMLxAqQ9P754fM6vKQ+vDWctFsNgucsSJwVyq
AhkhApDv+8wa9XGoJQkFKDYcMgizKO5Ze36tIZTofzf19kdDwoekeU6Cm0lk05bj
rHQ0BDmxXtWTkys642S1toaW6yemLrfAUy+81tQoc9ujBkuqRqxPlxUzPLcMTkU6
e1v1bQKBgBAv6F4N9OP/h/pqRs/cGDcbR9D0yA/sfKdfw1VHzvlTl84H/G07e9AM
Bm4Gyy666LvMJXUmXMNHVEEp0bLXGj/e/X3yRfsOvfQSbwgDuatkxBDRV2GJ9Kr7
fC4hyugi/dy1NnGptKmM95dLdrMlVP0GkgTZgtAB3gAoGszVajoh
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA1OPOMMHdrmugZGb8IHfj4VltOdUnzhoLXrwtJoiIgMmB+NF6
YKjRSuHxzqSNRf0SkwVaNeOb2kP+KbTe9/JiETbUtIag8MEWJ1Eduu0zwWsqx/bQ
dqMP7H4FjNjJH4FaZcj8IkEuafSEpv2TZ0vWTriAbhOSqNZqaREQ8e/ybSedvWwf
J/8nkkMKg6ZnxysHYMqaNue2NyxVHtlQdAFlYLpekB34vLwtPfBLxCku0h7nu5Lp
l2gWvzGGKtR7+MIJRD1rfbkgu1zH6RLi1Qr3ihjZ0sD9Kjn0uMq5HscLs/0p1N61
8+QrIYiw5+8EPWBeSJqUAFNzkEgxGrUnWCRhKQIDAQABAoIBAEoRC76Y5Fh3p3Dn
B5cAPy863q59Q4EIPKZ0D71VSTCNawO3Vb1lXpOP8oHzbBdKifjOpukSzDlu6HF4
NQ7MrGPS0MQSBtJcSynYpeBQAG6tq0+wxixQZQzhd2reTXMBnQLGnzoHtW81nCVB
GdSZZPE0bbJeausE1jbBskSKN6zTtjKsnp3bv+xFN5l814Jt+YHZwWKtMAYvH4u1
2UWwDt4z3Jz5dbiN6qG+9pFqBX8KFNNLWBXkYbdlkVTc4X4PX6tL1YWtHdYBxnKI
b36eynAl4Tbng/cmlI/PXEeMAJnkoxjalqrcS9Lz4sFUU5F9ldMkJdvYoogXV4O8
liyKsAECgYEA6FFVNrXG/Z087PuPTMMIfKD2nIEm5hJEw+ax3gqDNPJ9XxjaBkK7
5/AjH4x9KZBMoNod7gckIk+BY2zsBPcApkL3WAtrhGpDLKJ3CHpbzpBW5xHIkO0j
sp6EqJkEeiqR7J3nK/Zqf9CogO+H7klk3DqG2LBjHYASjieJhCUFXgECgYEA6pd5
kpsg6f5Oub6EP7Rvp1kSAnFzCwGUuNUFePOlAgYsQnlRuhGtsJZTLnswIA6BP7xZ
EQ/LVINd5ZGz5LNxzwd6GGoiMBThMbAu2vW73nhYUKzGZ8j3F/vNi/WjwiRj9rjz
v93B/VShBjlJMveYlAttfCVemRV0R5Q3uwjOUykCgYBzSsnLWPLkMgBma4F2SuQP
VaKNkNrJGw/dWMO0uerbf+wQIbkxmjS+qkIECiijU+VzfkuUMR8Rl/tSaF/JJvu/
h0RRAXneQQ4NPKNuJasiHCfEjOLIaadpoZmcQjQinLXGg6aR/rxjqh21vynqa6oO
UU1ShFbr8P9EZQKt/eFoAQKBgDrcnwiGHBAaWy6H+y7w20MmOjqatL8COorWCHV8
zN5hJiHXxwXlAavZTC3RgxXIDe4sGD0LtX0TKTA9CuJLlDbaLWyK1OEzm/2Xs2oF
VopPr/kuIOpRpo5CBCUmEVzZPKvfZGmz/sTNw0mIfjFnpsUeyO3pgn7uvypmqkUn
xH1hAoGBALka+6BX2TEq+gR4ZSjnpcO0le2mzXHtdLu7EnmfTNezn6vK+IbLlyMY
3N5abRd4ABXi1ChgTww15XcHcKopWjLKTQQ1IA6/Sxu+UR7LPkUUJDfxIC66uqSa
fvppLkjx2iexqE+a64JboVFDaSds+jE+Xxm3uusiuQfoWIarfRXI
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxngEF/YTYsEA5LbYLHEmyVoIf0DIjQO6OvdmbFH0iIR1+8cv
y7r2yXkkCbTTjXLChVzXiq6V0NgpLykb1alhlB3RK3TzraYCQzJ4SskwfxXWmv1s
OmoucpfkKRVTVSWRsYbV/2iEq+ZC26uHqgRygA0/VWJvFJwQR6a77F+Anz5rxFSW
1xz5+E3oGzaa3ff9k4b/Xz69P3/LSeUTgNLq81dxdvy0zoPywm7h3SFwhCIlqQXi
yslA2b4KypBbAUWDZ/ZrQ0+nSUNa48XvOJ6o6u5JYUKmG2m0eGtWcZ4bNZKx4HmW
9BXAiSMAEUPnK7Ugw1yIW/n41XcKzu2lKgFPzQIDAQABAoIBAQCYaq7qH+a/Xm1r
OChH6RXaaDRCVeQut4AbrMeRxFbBSMi69Tt1gD3qeAf/FEmrRUix1p0JOg5/9qGa
QD3KFmyDrWpnr0c8QlNWe7n55QxDbOgE2z50lfrZsmBcVK5Mo6+B4IUTwpaw1QLf
ZJmpLgUo5gOPdSrNbxTpkdicLLPAlns9otMX8W/hon6wsDzkaGlqLCHBeCjzRWCD
W1KM5GurcwEdNkOmNgcINK3ntfuEHCVddPYw9Agg4knsrHXYNIsS7w1HjfoZS/iW
J8IVRwsNKoFxljEgbWCNf5EwJfE70DOst6oU69mZ0dlprJViw3KQ+YOXFqTBpvgp
xR61MPpBAoGBAOOzxMzPU03sZcu9KUKYQWKdson39ZZ33m5sNfXGmCJOX6YnrfyP
TdyGwp3OXD7Lj6yYRPa5hJNrr+n4aIlw9YkJ2FEbAvGEYBJhisVW7Muju8G9Mcpy
DGgeh7OMh7QNzJi5+0gWgbv7inidZAOZgKh61CwU4yfb561HaIMbqQnpAoGBAN8i
M3oZLkCDkW+3wG4RyM4yr68gVJqe/PM6LTBXuyb3wuxHaAaBGj9hkXrq/i+/OhgC
Gl+2g9sHuWopjwzWa/o1IWhC9NF70NnBk2Q/iznmo4wWAPRJc8FDarAMwYN6VFZ3
uh7TibXEGDkFtnMSohDDHX3gJhYosTi4X68uugRFAoGBAM/FARZBN6oqwtgdSsDR
XRg2/OqXrygVSIlJhBM3mynyiaR7IG8L8+f9ryd/XPyPkhHS/1qB/U7nPCUp3XlL
8T+SFCgtlYn7WA5tospefsNyK6ikkgI//sIi2YAkAs9wp/fT/E3S+54j8D4On2wJ
bTROn7t5c6yzI7shJWQ8oQnBAoGBAJiSPjiitymNzQhi0MVyi6fSqKZKqQ8A311A
zl1b37CJgVMmkE7CQDxObrdpr1zemM6JwZboqcg+w91/hTz18OcpJSqxfc0vqGL9
JddKS9zPg8zpzsU65FelzXGLh1Zrcvec7jrd0i/jYdy7t0F/4CkuASBtAB3uvR9X
krWqca8xAoGAb6eNw6x1TcpkBKfCW6o/kdcukFEjF50EK3DBB2Y9ln9+ens7V7ib
0R0XEVrZtNwFsEHY0muxS7FYRj9m6o7IkthPRhNtHQ8YoP6bcY3A64iYnhJuNMR0
ljuS7pISleR6CPSgi8ZnFwMdqirYHL6DP8YwBiNUEC7E2yx5z0XRoeE=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAqxD7M31kqxv4Dz42bReq7lXSsn7btCFOshFbf9oP+54n+a1o
rQbJlsL86A8CAyNnemIgvgoRBJ05n1v4sy7euplY+LR9ynrLtdWAZ6sX3xlWDQbN
sU3111hgyTBPJvVvsNXhkowKk3uSvL1LUPuicNHhAxrZ33fShOCDmB1357f6BY+3
9nNkQupZBFRXJCvhpJMkuWMkJnMl6go4pbTX8tOZLH1XOwCFp9Bkdxn9Xdz0OndB
cTPOtcGBEsXTeG2AKooCmgjdklep4s/BugKsUPAQh2IE5bP8wQstd5fwkuAG/JLF
YvAt+wU1ZmtxO17kZ1vqLFmvMkVYO3HzFN5KzQIDAQABAoIBAHzLfJZJieESHFry
Zb4cIASS84xn41t7WO+qnfedWz+SV1Nb4Bsp8nJbeSjJmgw0Dc9IOt6odVXKZTkO
XVZKgQ3bxP5andHS1z2lrXDzbgzBbPc/2VrZptkcji73YSbosjxtK4w/QY/p/FhY
N9OyXwSy99XOBtdxkFCDgTy9crXFXWRTyVVGuSHfEF9IASvPH6TAUbdDAPRdqr2Q
mWVE++xPoQz8ifxA2ZnabrD9q+Glb2y0x6DHS1R1+NPd74X3vMe2BMfz6Ak+LCvj
bUcApodmb6HSAqKIW05My5SpipdBNmWhd2Mp8BGs8yBSWCEBYoNtf+VFQ/Z61ukR
1CKhobkCgYEA3piy9y/Drkmjq3oplfrcPtSCxwyWEcn1/eF9FtpxYwbM9rLzrjwI
MJOnnf3OaANHEePYZuoTshiFR576ekLVbY4aaEpchN8YZds0xHfbGB0kkP+tLtBB
uDOxcPXVWWdBawNlI88v3eZFhZQk+JwXn2BnfL+iPEq3PC+ycc3HTiMCgYEAxLyx
KIUPm7ZB/Gu4GdgU0GbhON7GwJGidfeicBltR6iX6AxW9VCvtwqbS4a2NXU4+jKH
p/DMJvXguuS/1umruEW96lyQMUNmj3bHPltBzBT4FcxXt/TPgG8FngriMmpSeEEO
5AYCf7eNmKPi8FTdH8FbR+VhSbKKfj+Y7K0l+k8CgYEAhLOHzbEd+SNRfYLgk9bv
wk0ygbPRK125Vtc8mYk0m5KMUm4ws6h6QWtlO9z5VizOC65HbmMRxtSzcBUowgZh
8mQK/i2GpnfRtbdO5+mEJgYJrJ+gAQ6Kf2Ph3rPPsvLJnyBxBT4ZDTKgM5gzyjpU
IuF4EHi2ITdxsWHGAe5paP0CgYBSelS/CwGfIwqI21QEKa2YLPlQ0Tx7sNJuKFIG
MvK4bvq4QqwWDiyMTTsLr78lrC4l3hc3FeFQmBYN5CZ03+OozjwvS3z72ijeDkq7
XqC4ATZ8VP2VVmHDk0fEmQV5Y0+NsKCggdB8YKRREKvsW3eUf4hYHNbrgZlEEj93
QaPBSwKBgELZqh5PsZd0dAEKYX8L+EO+xkZ0DguYddgjfL2Yyg6lxjCRMhSgBS3c
R0bKNmH5nMAe5P+xWWNA+78joC/SPkKnFkJ1q0lRbe+/an3GIN2p17A6cOt2QHCf
7p90hbIjG9zeq3oGv9i0sIjjYgbRcl1tS3NGr8wCDtQPRKkGMwPt
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAsP5ojtqSGVxLg0lBO+zKJ1i5sSSwR0j2zn2tnvjMagk4C/r/
arTlETzodNKUm2CI2PBh+vqZgDc8pyNpXyRiD2k1JLv07C2JGJLr8oFgr+dfM83h
K8wY4nNndkAiNiQGwOSLVv6OuKEsyDpp0i3TvZSS+mEI9Z1RqS1rAz4QeK851abf
yrZhOhNDxhFC4C+26X3Jk1Lfgwr+QGOwiKZBqC7DDWkZDpCqhLBPdhI4itoupIeo
jyO9r7cePeEXYW7vVUgLTWptZp9pN+WLUgziXaYO9aPw/n/gjdZHHGmSJztM/kq8
gr6UBpDhRImXyyRmU1AggJHPKiUu7ZhnXsURbQIDAQABAoIBAGyIJJ9soegRM3DW
67yOT8ve2UcpwzqDIGywnlV8JQTkkEywZg0NzeVLHxP7yQqaIHA+vyZCovv/Yx7u
VP/1dHgUwHS9GMv2hDngZfS3pw1WaIeAuJG9voil0YyueQwP/WAtBNCcmfHXS3mg
cCFk3pFC2PnVpMPP6zI9WoCLf1gwvWwQ6GVIciMGlpRKFfbNsEcP2DZQ1jWAb7j1
aH+7kcIu1tUZ5TAjeHV3rPgi57IzHHARxAgPG/NBhzcatLQ3eakSgIvmsGsbanf+
XbK5ejvGyuuO4ADPOK5uh9HdbJU8bwgfOcM1mWOUUzVYqznlXgkBnBAYYT4QaJNY
vF7kqZUCgYEAybhwFRZU9Be22oZPb+AFqDRPAoNyM3dcKF7Vyqxfjr1gQ31j8ln4
Cft4D8IMtB8YZoZUu2Pvv1NQUmhnG6HQf3QBFzbnVrsg/Tq0IKL6Jd81oeTQ4ZwB
8hDsAS8T5K4MlZJ6TtQdnb6a7uNzjYAZtSlKbVue251FJxkbRDyZqMcCgYEA4J6q
4ti2AEOgxcB08MARwSom47bY3X03GxQH9Gperfz9Y6411+Lytf9n0aCESSOVZxeN
se7m1mKvl5MwQXVUCJ2A3HbvwzCBTCkq7w50D49YdpShyGqHmtYg8nfkSo8Lg1DK
QaX+q6cgk+EO5uPl0/mav+5l5LlVyVBziGJUiCsCgYAfZsC756AN52sllWbkSYFX
79ykzYWHkXsdJbYuOKsfc0d6+hgG8A52r1i/SzvjBjwsKZkjGqmFpRiJ24rBeG0W
ih5pWLimfbbi9LJ5qiU6pAabTx1dIYYEArJadNOp85Yt6oFzp/18QuGncmzYiCp4
Uxcs8uhF07OiJHxkIPLinQKBgF/1qQ+sgWRvf9m7tLm9dFhPh7m0vcUx3z7kOdnD
L5uo/x98p2gJfqMd795wctNELmmSeGhRpbBlDJr2uKDeXP4pO4n0Dc4XhMViuQLT
6+VR2fse2Fbkm/YcEItFiPQJVGPPOfj9z2TJy3MhrNoa9m6urdvdHw6t1uZgRls3
luFtAoGAGuqiHDefcGXhtjjKZRW3C2bvaUOD58VU43bH9prDHCaQ79TM63Xt2wSW
3ncpDOl5rw2gMGkwFZHhDWR+rsID5iVuaMpB6fPsqVKMY2hp06AsaKqzA4jAxlaV
WoBlJu8J5BAEvL1hc1GVa5J2YI8uu//nzzQviuwC5ZXaZJutfh4=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAwZgHg9W9BJkNmTKQRKmhG62aKEaFfJtGlar2QBnRQq8Xddbr
vyhofBZj0S3qcvmUDN4Ey/zD4rtnszYlEx0sXwSBhGFOtuPnfaq18Qpk23vuy3R3
fBkWDyAJHfb/2iscWHhDYtTy5kxkVOiCiPqw/qsbzrey86KGCYC/Qf9FyJl3gT+E
lmrnUOHAoWtlHJ7PAkZ8YBmbSah+OdRaIqFgTMwl1l2KnhhYUa72fTrqCgR68Vyq
lfWqqXhgv0TA8kKxF6JKLBu37D7Ukj1K6dDp8QmoSfBCat941wrO0vnIQIBJIcEM
e7z9Pq+DlCyOwXDoXbj+zB+k31TPLjyKRRjXbwIDAQABAoIBAQCIAaC19AE5K7Wr
/SPxuSJgaZQ122WIZyYtm9AotHqZWJ0owncY8vCEzM4PdSyS3dgvOgMwtEGCFpsC
AnYFeadkkavULvC3+GD3nmj4EI9Oy0C2Wvpeitk+gwkkrhSNV2AwnzzoQCbtuJl8
NWUPit+x6tA8aD4mf/We036KhSaniECLlrjqm/tW9cDa4MsQVBxJ5Ve7t6ABpjq5
jjXXNUSjzhDeKPLIEl6ag9xKFKh2oIL0WmzAc4HgSkR/AljmbYNeVqjd33NRdhN/
DF326sWR2AdgRYsDJb8xFFzhvDPb4QGb5NqEwHv1vgbqzkQxjuMa7ccd4fe/d9cD
YGNJX+yhAoGBAOmqZQ/PzKyTA34GFIAp2K4xDxXL1o6r8Mckls0263tpp5FKZ62E
v7yMj/v0gCOGCdeSScVtpgoROTyb5eym7uBOn15ko4pBpKVQa4XdY23arAo8Uatb
HEaUMy9C7irnpO3jcxIXd2nk2fahb2CWPMM0ZXIKYEqQxlvRGx7nzkNHAoGBANQZ
HK+M3Y9LiNXQRiARkhIa5sUEjt5wBekxMQ38aDKRTghuDxn6FKM3NmeUdMrg8G6c
qVAkDO/qs+ZV7f4GPBu26E2wtzC93bDEzlPyuYAQpBdI6zlTK16GvsUJmFrs2hSX
Wm42LDH1TpGlvyd5r0PmHyDqCpVhhNFbVRd2lU6ZAoGAbV5fDUaTI1dwdAU+hTqQ
+/9kcyxEkeTyvxNmLkl9cPdkAkJUQsh2wjb8kc7AR2BOrQMA2pLW+7FSHAdQWDNO
bdj/CTyLu4O8H9CDc1XLWzjV+7h99Xmgw3xMdNucBKMF9H7YdmhbcUo3pxOqwQex
CyE0Nmua5GvdHE7EpfOT/LMCgYEAue3lqrL3CwXxR1ZUEwq0HTD9+dpcD/zuAZWA
5jzNbv7YBCXPETucWdQt2jFXDP6RZrXo6vsfaDY8TIApqJT4nmcCUBDJFm5q5+ou
4YKXQP/ViSAALHmPPEcs9vfJWnPlXUWtHY5ZwdXEcYN2BfnzPbd+tFDWxEr/rrO8
7Vuj2YkCgYEAxxYj/lSmH3gpo3nGv5Tqy/5ZIuKVGEWJcendiwddt3AuzkVkrG5w
aUpe3w9Kp2yWY+VFD8GQKl6uDCj50DOoSNrl+HIcUniyvdCfcAoff046YJ6b7jyW
z/8sd+iRGefDNkQkepV734AkxZt+hDGtPyadsYfdk6Pq6uLCsyIDF8U=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0qfJLuq9fDncWfWXUsd9BtBM3Ss411DhyLGFDkt8dJMkbh5b
h1XU+TUh3jdrSQU1zS5+qvjJHwCiQ8i7hR/aS316K1nzaAjtu+NuyvDxysrliRQG
/24k/+3kFCeN9QoFbuL6DPBgdcXd3rOBfx/ukiWcO6yPGgjpdl9rejsrZL6ghBgL
IP5Y2Sk/ISkSCWmdYn+QoaHkQSXlmqW5sr5KFwOHHE7HciYFP1J4is+QiJAyvA4r
7UZ/lD7TfHi/W0mzxKRVxyHCHUkbDukp1xikTV9Wd2qaJVsDAFC6K4ce33Ro5vVm
pPOx71zI9YvEdfEelvIZOoAkErr5WSdMTKn8BQIDAQABAoIBAQDKszT9dld6r9p+
nblMqDSAV/N+Zla9qVB5Y4ga5zwMmIHXjFKaeVcDrcK3JzCPBPpuQy0Tq20r7do1
y3PVd38AYO8rw9RZ6S2JPCGiGhMwBei07JaHNx9XPTvYwO7yOQBdYP8ncC4BZbJG
1wfmoX1ZF+Or8DGK5cRwaQTsiv8IYj4llWT3t/twypqeV3DrFtFlrbNxsrZtlTEe
HpwY3KYoS8Xk7tM3oXcBUXNbT4fZK9zs4G41X4CM0mimTJPfMV9DfJdaNT7MhuIl
zAR4pK3dCVpo06twLbvENeCtN3LLKqExQgl3TXydn3ee+vfFecEsF6quaQQi+Fki
AkGucFUJAoGBANpqkkmeysv2fLKqwPgSzf8sLmceJljt31jQNt1dIaq5OrMJQxmb
duE8Ptfpeu4samR+QHG5h5qsCI3jUkthCI+Xf+k2k13LWsWPOf4GUa85o+GXrt/8
aC8R3J0hfMahXvBO89YT4+J9esMWNCmJrM58ydbiE0rKHssINqZwKh4bAoGBAPbn
V0GUyj4Fw5380xBloMmv97PY81sQlnRKWVHyxKUggr6Ws0diF7XyoDBZe2XQUtM3
IeaSv0jAzn89f35MOAFugka4Axkr602IAWxwptg7QCXDAgtyrCC8xEsDPHaUqLc3
TcyTqgGwVXhQ4kpwAe//jlgg3CqDpC1+pPKZZ3BfAoGBAK8vLVhZQcVoVUokxRP0
WT9i23Ef8JgBatPcZTUV3swFN3ykYCpo1GgBn1IkVdI007z4uo28xnQbqdzMSJRn
JqutUw3mFTr0wUCWCWii/t9xdu2ZcMz8sT+XrwBk/KSAiBps6Qx69ZwTEuToqTvr
zivsUSPGPr0M8rfcRaEnc9CjAoGAX/xT2bUEYtRO1i6hxzAbMA1u2MYw5WgvdYop
60fb1u4qpflkPQ4PdbabO/Ctnkk8ycwXK9JE9v2tyZ2Y4Pq0kynpD6Ed4z1FvuBu
3T92PX3bVFLZiqXL8PYxwY/Cg78LUB756dxGLV3l/F5FevbMagcJyY0MyqJewykG
6yFkKzUCgYB678sFFH+TfWtWoW/Z86dEdGx3Ex+YqOkk9Vs6dE/uw2xuQoJshDvg
e2mnmP3PQIntt+SuwfV45IcWOhnZNEkNJzuE+J1MxlixiOlSHFxWPWFpbpFvRGsb
M2hZlMaSHL9LkoUzvvB8+uFutMC16A6sDdQp/QGQindbgHpcSre0tw==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAu863MVpfhsAjLqsIxKXyNkan2WMq2uOdhrcOToxuQDiB26XN
gcwD1VM9M0/J7cHe3P4DVCTVhDoGn1Qcwwd3mu4WRjQ9hZpuxvQmc4VTBaoPe0pn
P2Z4I71tpTDNkdYSGPD2ECn5YPvcWaypJckMWbiCVN2YpVMJgA53Go60dbgBUBEn
ECSDJ2CuzQQbcbqwZQvj8/HzNv9hCgdnxpt56LFwSJ8gppx+osWugZ5qQ2B2lUa7
OUZT6tsf8JNBgnyTTdlLkBKZk3YY7jUKJ7WdBVb2eavfrvALFnxiQ85jQ29JEJmU
iGnd7PfNLP0/7g3hotpIcTC7x2fz3RAZHrlVvwIDAQABAoIBAQC0BjnaSBvLij/v
SymTftLHrkDVA9cfjRICAVTofHpuevwXdT6iDdMa2LiQiAozKySbR64fKVO2dPzG
G5WaaXz/+PtG/mp+uAM6GO0GzSVBB7vhXffMcUf2Um1Y7IgRJFeiqs/jvKh8i9Cz
8OsO+kIpetEL0oKw7wDrTHJk9agMMdpJqirKI4D8W71pLaOXV4UbtaSH/ujmGwPc
3HlLLHvSQq+szG3+eUBfCT8gJGuxIVyN8AgBKgeJRd7hXGLNgzXEYa7NVxof+31j
5jZvBvRdnFRuTGP5i6MGn8uCZe4DFlfKP4e5woYV1RHnmirpZU+1f9ozisLJTAXg
1Qg+/q6JAoGBANtIs6/nRKNM2qsqt8QnzkSNmtPf+3MZtqzTRKm12OGfbj4juF5D
btPsGlojgvn/fe1ai7dzQ/9gf3ktoD5fSrgMokrFPapf5+7UdL5vRWiltMvEk2TK
WV2DFElU3suqSo6u3lrCPhNewIosCpWFgYim4NINJwCwnggeICOJ42a1AoGBANtA
0VJq5tR/N/UIiIr9QCh1l5I8uVmxzvYbua7UiRudUR/uQRipP4t5D1CYuY9iXcBM
d4gkqBOo9+F+m/fUXuBvki6aqjJ9FVltR4zSo7EGCkr4pAFZomQ7S9LygglL87jF
CyiF7TLjWw3crv4xkQRnI2y4EfgiInBYXCschP8jAoGAY37RSPb+RboRXai8SNxm
0uQNZCU0yjzYjgIuHXLNPVJBiyBZ/ytJlg6CxnNmclhiotd6nXpHWBBIxorVMne6
R1g0KwjjufJaIhtz/RQvwhOtvOcsmYbWlX9sLPm9PVu/CI5/hV6tG8zaP9dL1hwF
ciOFzsj48W8xxS0mF/nwnCECgYBLxMKRsM/Eb5Ju41wMbChX0wtmRgXnsULMWhh5
Com3OU5nsnZch2CmWleoip7VpjCv270TF1feM242RwKvSnzfIq9p25kliYRvOwyW
5dQbwPKdpf9HWCp+aN9zLssxW0YGfFG211F5XIiC6divj4GF+/6J+7J6BZHRMTfo
zhpH8QKBgA9g4oQe7ZleoJz/t5471PjytxeEIZjZ/k8Z3AkQILuBxgj5Cvq4F9wx
L55jEln5AZdgetBidgxv/dGP7J5Wkn6ROQGm6WhUvNbDP2sgqu3rIIhDRRx/szlv
krzNg3EGgVO5qwAcbp7/TwZUHccC+seXSmk1MeQvTIq5fVFMsXqg
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
Keys in this directory are generated for testing purposes only.

View File

@ -0,0 +1,138 @@
/*
Copyright 2021 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package testing
import (
"crypto"
"crypto/x509"
"fmt"
"os"
"path/filepath"
"regexp"
"runtime"
"runtime/debug"
"strings"
"sync"
"testing"
"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
)
// RunWithPrivateKeyFixtureDirectory overrides NewPrivateKey to return private key fixtures
// while executing tests in m.
func RunWithPrivateKeyFixtureDirectory(m *testing.M) {
defer install()()
os.Exit(m.Run())
}
// Reset() indicates a new test is starting and previously returned private key fixtures may be reused.
func Reset() {
lock.Lock()
defer lock.Unlock()
ecdsa = 0
rsa = 0
}
var (
testFunction = regexp.MustCompile(`.*\.Test[^./]+(.func[0-9]*)?$`)
lock = sync.Mutex{}
fixtureDir = ""
lastTest = ""
ecdsa = 0
rsa = 0
)
func install() (cleanup func()) {
lock.Lock()
defer lock.Unlock()
_, filename, _, ok := runtime.Caller(1)
if !ok {
fmt.Println("Could not determine testdata location, skipping private key fixture installation")
return func() {}
}
fixtureDir = filepath.Join(filepath.Dir(filename), "testdata")
originalNewPrivateKey := pkiutil.NewPrivateKey
pkiutil.NewPrivateKey = newPrivateKey
return func() {
pkiutil.NewPrivateKey = originalNewPrivateKey
}
}
func newPrivateKey(keyType x509.PublicKeyAlgorithm) (crypto.Signer, error) {
lock.Lock()
defer lock.Unlock()
var pcs [50]uintptr
nCallers := runtime.Callers(2, pcs[:])
frames := runtime.CallersFrames(pcs[:nCallers])
thisTest := ""
for {
frame, more := frames.Next()
if strings.HasSuffix(frame.File, "_test.go") && testFunction.MatchString(frame.Function) {
thisTest = frame.Function
break
}
if !more {
break
}
}
if len(thisTest) == 0 {
fmt.Println("could not determine test for private key fixture")
debug.PrintStack()
return pkiutil.GeneratePrivateKey(keyType)
}
if thisTest != lastTest {
rsa = 0
ecdsa = 0
lastTest = thisTest
}
keyName := ""
switch keyType {
case x509.ECDSA:
ecdsa++
keyName = fmt.Sprintf("%d.ecdsa", ecdsa)
default:
rsa++
keyName = fmt.Sprintf("%d.rsa", rsa)
}
if len(keyName) > 0 {
privKey, err := pkiutil.TryLoadKeyFromDisk(fixtureDir, keyName)
if err == nil {
return privKey, nil
}
}
fmt.Println("GeneratePrivateKey " + keyName + " for " + thisTest)
signer, err := pkiutil.GeneratePrivateKey(keyType)
if err != nil {
return signer, err
}
if len(keyName) > 0 {
pkiutil.WriteKey(fixtureDir, keyName, signer)
}
return signer, err
}