@@ -18,7 +18,7 @@ package server
1818
1919import (
2020 "context"
21- "crypto/rsa "
21+ "crypto"
2222 "crypto/tls"
2323 "crypto/x509"
2424 "fmt"
@@ -387,7 +387,7 @@ func (m *WorkloadClustersMux) WorkloadClusterByResourceGroup(resouceGroup string
387387// AddAPIServer mimics adding an API server instance behind the WorkloadClusterListener.
388388// When the first API server instance is added the serving certificates and the admin certificate
389389// for tests are generated, and the listener is started.
390- func (m * WorkloadClustersMux ) AddAPIServer (wclName , podName string , caCert * x509.Certificate , caKey * rsa. PrivateKey ) error {
390+ func (m * WorkloadClustersMux ) AddAPIServer (wclName , podName string , caCert * x509.Certificate , caKey crypto. Signer ) error {
391391 // Start server
392392 // Note: It is important that we unlock once the server is started. Because otherwise the server
393393 // doesn't work yet as GetCertificate (which is required for the tls handshake) also requires the lock.
@@ -420,7 +420,12 @@ func (m *WorkloadClustersMux) AddAPIServer(wclName, podName string, caCert *x509
420420 return errors .Wrapf (err , "failed to create serving certificate for API server %s" , podName )
421421 }
422422
423- certificate , err := tls .X509KeyPair (certs .EncodeCertPEM (cert ), certs .EncodePrivateKeyPEM (key ))
423+ encodedKey , err := certs .EncodePrivateKeyPEM (key )
424+ if err != nil {
425+ return errors .Wrapf (err , "failed to encode private key for API server %s" , podName )
426+ }
427+
428+ certificate , err := tls .X509KeyPair (certs .EncodeCertPEM (cert ), encodedKey )
424429 if err != nil {
425430 return errors .Wrapf (err , "failed to create X509KeyPair for API server %s" , podName )
426431 }
@@ -533,7 +538,7 @@ func (m *WorkloadClustersMux) HasAPIServer(wclName, podName string) bool {
533538// AddEtcdMember mimics adding an etcd Member behind the WorkloadClusterListener;
534539// every etcd member gets a dedicated serving certificate, so it will be possible to serve port forward requests
535540// to a specific etcd pod/member.
536- func (m * WorkloadClustersMux ) AddEtcdMember (wclName , podName string , caCert * x509.Certificate , caKey * rsa. PrivateKey ) error {
541+ func (m * WorkloadClustersMux ) AddEtcdMember (wclName , podName string , caCert * x509.Certificate , caKey crypto. Signer ) error {
537542 m .lock .Lock ()
538543 defer m .lock .Unlock ()
539544
@@ -552,7 +557,12 @@ func (m *WorkloadClustersMux) AddEtcdMember(wclName, podName string, caCert *x50
552557 return errors .Wrapf (err , "failed to create serving certificate for etcd member %s" , podName )
553558 }
554559
555- certificate , err := tls .X509KeyPair (certs .EncodeCertPEM (cert ), certs .EncodePrivateKeyPEM (key ))
560+ encodedKey , err := certs .EncodePrivateKeyPEM (key )
561+ if err != nil {
562+ return err
563+ }
564+
565+ certificate , err := tls .X509KeyPair (certs .EncodeCertPEM (cert ), encodedKey )
556566 if err != nil {
557567 return errors .Wrapf (err , "failed to create X509KeyPair for etcd member %s" , podName )
558568 }
0 commit comments