Skip to content

Commit 0f7d124

Browse files
authored
Merge pull request kubernetes#77206 from rojkov/drop-parsePEMCerts
kubeadm: remove duplicated token.parsePEMCerts()
2 parents 855c291 + 358659e commit 0f7d124

File tree

3 files changed

+3
-83
lines changed

3 files changed

+3
-83
lines changed

cmd/kubeadm/app/discovery/token/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ go_library(
2222
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
2323
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
2424
"//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
25+
"//staging/src/k8s.io/client-go/util/cert:go_default_library",
2526
"//staging/src/k8s.io/cluster-bootstrap/token/api:go_default_library",
2627
"//vendor/github.com/pkg/errors:go_default_library",
2728
"//vendor/k8s.io/klog:go_default_library",

cmd/kubeadm/app/discovery/token/token.go

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ package token
1818

1919
import (
2020
"bytes"
21-
"crypto/x509"
22-
"encoding/pem"
2321
"fmt"
2422
"sync"
2523
"time"
@@ -31,6 +29,7 @@ import (
3129
"k8s.io/apimachinery/pkg/util/wait"
3230
"k8s.io/client-go/tools/clientcmd"
3331
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
32+
certutil "k8s.io/client-go/util/cert"
3433
bootstrapapi "k8s.io/cluster-bootstrap/token/api"
3534
"k8s.io/klog"
3635
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
@@ -119,7 +118,7 @@ func RetrieveValidatedConfigInfo(cfg *kubeadmapi.JoinConfiguration) (*clientcmda
119118
for _, cluster := range insecureConfig.Clusters {
120119
clusterCABytes = cluster.CertificateAuthorityData
121120
}
122-
clusterCAs, err := parsePEMCerts(clusterCABytes)
121+
clusterCAs, err := certutil.ParseCertsPEM(clusterCABytes)
123122
if err != nil {
124123
return nil, errors.Wrapf(err, "failed to parse cluster CA from the %s configmap", bootstrapapi.ConfigMapClusterInfo)
125124

@@ -225,28 +224,3 @@ func fetchKubeConfigWithTimeout(apiEndpoint string, discoveryTimeout time.Durati
225224
return resultingKubeConfig, nil
226225
}
227226
}
228-
229-
// parsePEMCerts decodes PEM-formatted certificates into a slice of x509.Certificates
230-
func parsePEMCerts(certData []byte) ([]*x509.Certificate, error) {
231-
var certificates []*x509.Certificate
232-
var pemBlock *pem.Block
233-
234-
for {
235-
pemBlock, certData = pem.Decode(certData)
236-
if pemBlock == nil {
237-
return nil, errors.New("invalid PEM data")
238-
}
239-
240-
cert, err := x509.ParseCertificate(pemBlock.Bytes)
241-
if err != nil {
242-
return nil, errors.Wrap(err, "unable to parse certificate")
243-
}
244-
certificates = append(certificates, cert)
245-
246-
if len(certData) == 0 {
247-
break
248-
}
249-
}
250-
251-
return certificates, nil
252-
}

cmd/kubeadm/app/discovery/token/token_test.go

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -25,30 +25,6 @@ import (
2525
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
2626
)
2727

28-
// testCertPEM is a simple self-signed test certificate issued with the openssl CLI:
29-
// openssl req -new -newkey rsa:2048 -days 36500 -nodes -x509 -keyout /dev/null -out test.crt
30-
const testCertPEM = `
31-
-----BEGIN CERTIFICATE-----
32-
MIIDRDCCAiygAwIBAgIJAJgVaCXvC6HkMA0GCSqGSIb3DQEBBQUAMB8xHTAbBgNV
33-
BAMTFGt1YmVhZG0ta2V5cGlucy10ZXN0MCAXDTE3MDcwNTE3NDMxMFoYDzIxMTcw
34-
NjExMTc0MzEwWjAfMR0wGwYDVQQDExRrdWJlYWRtLWtleXBpbnMtdGVzdDCCASIw
35-
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK0ba8mHU9UtYlzM1Own2Fk/XGjR
36-
J4uJQvSeGLtz1hID1IA0dLwruvgLCPadXEOw/f/IWIWcmT+ZmvIHZKa/woq2iHi5
37-
+HLhXs7aG4tjKGLYhag1hLjBI7icqV7ovkjdGAt9pWkxEzhIYClFMXDjKpMSynu+
38-
YX6nZ9tic1cOkHmx2yiZdMkuriRQnpTOa7bb03OC1VfGl7gHlOAIYaj4539WCOr8
39-
+ACTUMJUFEHcRZ2o8a/v6F9GMK+7SC8SJUI+GuroXqlMAdhEv4lX5Co52enYaClN
40-
+D9FJLRpBv2YfiCQdJRaiTvCBSxEFz6BN+PtP5l2Hs703ZWEkOqCByM6HV8CAwEA
41-
AaOBgDB+MB0GA1UdDgQWBBRQgUX8MhK2rWBWQiPHWcKzoWDH5DBPBgNVHSMESDBG
42-
gBRQgUX8MhK2rWBWQiPHWcKzoWDH5KEjpCEwHzEdMBsGA1UEAxMUa3ViZWFkbS1r
43-
ZXlwaW5zLXRlc3SCCQCYFWgl7wuh5DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEB
44-
BQUAA4IBAQCaAUif7Pfx3X0F08cxhx8/Hdx4jcJw6MCq6iq6rsXM32ge43t8OHKC
45-
pJW08dk58a3O1YQSMMvD6GJDAiAfXzfwcwY6j258b1ZlI9Ag0VokvhMl/XfdCsdh
46-
AWImnL1t4hvU5jLaImUUMlYxMcSfHBGAm7WJIZ2LdEfg6YWfZh+WGbg1W7uxLxk6
47-
y4h5rWdNnzBHWAGf7zJ0oEDV6W6RSwNXtC0JNnLaeIUm/6xdSddJlQPwUv8YH4jX
48-
c1vuFqTnJBPcb7W//R/GI2Paicm1cmns9NLnPR35exHxFTy+D1yxmGokpoPMdife
49-
aH+sfuxT8xeTPb3kjzF9eJTlnEquUDLM
50-
-----END CERTIFICATE-----`
51-
5228
func TestFetchKubeConfigWithTimeout(t *testing.T) {
5329
const testAPIEndpoint = "sample-endpoint:1234"
5430
tests := []struct {
@@ -94,34 +70,3 @@ func TestFetchKubeConfigWithTimeout(t *testing.T) {
9470
})
9571
}
9672
}
97-
98-
func TestParsePEMCert(t *testing.T) {
99-
for _, testCase := range []struct {
100-
name string
101-
input []byte
102-
expectValid bool
103-
}{
104-
{"invalid certificate data", []byte{0}, false},
105-
{"certificate with junk appended", []byte(testCertPEM + "\nABC"), false},
106-
{"multiple certificates", []byte(testCertPEM + "\n" + testCertPEM), true},
107-
{"valid", []byte(testCertPEM), true},
108-
{"empty input", []byte{}, false},
109-
} {
110-
certs, err := parsePEMCerts(testCase.input)
111-
if testCase.expectValid {
112-
if err != nil {
113-
t.Errorf("failed TestParsePEMCert(%s): unexpected error %v", testCase.name, err)
114-
}
115-
if certs == nil {
116-
t.Errorf("failed TestParsePEMCert(%s): returned nil", testCase.name)
117-
}
118-
} else {
119-
if err == nil {
120-
t.Errorf("failed TestParsePEMCert(%s): expected an error", testCase.name)
121-
}
122-
if certs != nil {
123-
t.Errorf("failed TestParsePEMCert(%s): expected not to get a certificate back, but got some", testCase.name)
124-
}
125-
}
126-
}
127-
}

0 commit comments

Comments
 (0)