@@ -18,9 +18,11 @@ package pki
18
18
19
19
import (
20
20
"context"
21
+ "crypto/rand"
21
22
"crypto/rsa"
22
23
"crypto/x509"
23
24
"crypto/x509/pkix"
25
+ "math/big"
24
26
"net"
25
27
"os"
26
28
"testing"
@@ -54,12 +56,27 @@ func TestIssueCert(t *testing.T) {
54
56
os .Setenv ("KOPS_RSA_PRIVATE_KEY_SIZE" , origSize )
55
57
}()
56
58
57
- caCertificate , err := ParsePEMCertificate ([] byte ( "-----BEGIN CERTIFICATE----- \n MIIBRjCB8aADAgECAhAzhRMOcwfggPtgZNIOFU19MA0GCSqGSIb3DQEBCwUAMBIx \n EDAOBgNVBAMTB1Rlc3QgQ0EwHhcNMjAwNTE1MDIzNjI0WhcNMzAwNTE1MDIzNjI0 \n WjASMRAwDgYDVQQDEwdUZXN0IENBMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAM/S \n cagGaiDA3jJWBXUr8rM19TWLA65jK/iA05FCsmQbyvETs5gbJdBfnhQp8wkKFlkt \n KxZ34k3wQUzoB1lv8/kCAwEAAaMjMCEwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB \n /wQFMAMBAf8wDQYJKoZIhvcNAQELBQADQQCDOxvs58AVAWgWLtD3Obvy7XXsKx6d \n Mzg9epbiQchLE4G/jlbgVu7vwh8l5XFNfQooG6stCU7pmLFXkXzkJQxr \n -----END CERTIFICATE----- \n " ) )
59
+ caKey , err := rsa . GenerateKey ( rand . Reader , 2048 )
58
60
require .NoError (t , err )
59
- caPrivateKey , err := ParsePEMPrivateKey ([]byte ("-----BEGIN RSA PRIVATE KEY-----\n MIIBPAIBAAJBAM/ScagGaiDA3jJWBXUr8rM19TWLA65jK/iA05FCsmQbyvETs5gb\n JdBfnhQp8wkKFlktKxZ34k3wQUzoB1lv8/kCAwEAAQJBAJzXQZeBX87gP9DVQsEv\n Lbc6XZjPFTQi/ChLcWALaf5J7drFJHUcWbKIHzOmM3fm3lQlb/1IcwOBU5cTY0e9\n BVECIQD73kxOWWAIzKqMOvFZ9s79Et7G1HUMnVAVKJ1NS1uvYwIhANM7LULdi0YD\n bcHvDl3+Msj4cPH7CXAJFyPWaQZPlXPzAiEAhDg6jpbUl0n57guzT6sFFk2lrXMy\n zyB2PeVITp9UzkkCIEpcF7flQ+U2ycmuvVELbpdfFmupIw5ktNex4DEPjR5PAiEA\n 68vR1L1Kaja/GzU76qAQaYA/V1Ag4sPmOQdEaVZKu78=\n -----END RSA PRIVATE KEY-----\n " ))
61
+
62
+ // Create pki.PrivateKey wrapper for CA key
63
+ caPrivateKey := & PrivateKey {Key : caKey } // Use your package's PrivateKey type
64
+
65
+ caTemplate := & x509.Certificate {
66
+ SerialNumber : big .NewInt (1 ),
67
+ Subject : pkix.Name {CommonName : "Test CA" },
68
+ NotBefore : time .Now (),
69
+ NotAfter : time .Now ().Add (10 * 365 * 24 * time .Hour ),
70
+ KeyUsage : x509 .KeyUsageCertSign | x509 .KeyUsageCRLSign ,
71
+ BasicConstraintsValid : true ,
72
+ IsCA : true ,
73
+ }
74
+
75
+ caCertDER , err := x509 .CreateCertificate (rand .Reader , caTemplate , caTemplate , & caKey .PublicKey , caKey )
60
76
require .NoError (t , err )
61
- privateKey , err := ParsePEMPrivateKey ([] byte ( "-----BEGIN RSA PRIVATE KEY----- \n MIIBOQIBAAJBANgL5cR2cLOB7oZZTiuiUmMwQRBaia8yLULt+XtBtDHf0lPOrn78 \n vLPh7P7zRBgHczbTddcsg68g9vAfb9TC5M8CAwEAAQJAJytxCv+WS1VhU4ZZf9u8 \n KDOVeEuR7uuf/SR8OPaenvPqONpYbZSVjnWnRBRHvg3HaHchQqH32UljZUojs9z4 \n EQIhAO/yoqCFckfqswOGwWyYX1oNOtU8w9ulXlZqAtZieavVAiEA5n/tKHoZyx3U \n bZcks/wns1WqhAoSmDJpMyVXOVrUlBMCIDGnalQBiYasYOMn7bsFRSYjertJ2dYI \n QJ9tTK0Er90JAiAmpVQx8SbZ80pmhWzV8HUHkFligf3UHr+cn6ocJ6p0mQIgB728 \n pdvrS5zRPoUN8BHfWOZcPrElKTuJjP2kH6eNPvI= \n -----END RSA PRIVATE KEY-----" ) )
77
+ caCert , err := x509 . ParseCertificate ( caCertDER )
62
78
require .NoError (t , err )
79
+ caCertificate := & Certificate {Certificate : caCert }
63
80
64
81
for _ , tc := range []struct {
65
82
name string
@@ -115,7 +132,7 @@ func TestIssueCert(t *testing.T) {
115
132
CommonName : "Test client/server" ,
116
133
},
117
134
AlternateNames : []string {"*.internal.test.cluster.local" , "localhost" , "127.0.0.1" },
118
- PrivateKey : privateKey ,
135
+ PrivateKey : caPrivateKey ,
119
136
},
120
137
expectedKeyUsage : x509 .KeyUsageDigitalSignature | x509 .KeyUsageKeyEncipherment ,
121
138
expectedExtKeyUsage : []x509.ExtKeyUsage {x509 .ExtKeyUsageClientAuth , x509 .ExtKeyUsageServerAuth },
@@ -131,7 +148,7 @@ func TestIssueCert(t *testing.T) {
131
148
CommonName : "Test server" ,
132
149
},
133
150
AlternateNames : []string {"*.internal.test.cluster.local" , "localhost" , "127.0.0.1" },
134
- PrivateKey : privateKey ,
151
+ PrivateKey : caPrivateKey ,
135
152
},
136
153
expectedKeyUsage : x509 .KeyUsageDigitalSignature | x509 .KeyUsageKeyEncipherment ,
137
154
expectedExtKeyUsage : []x509.ExtKeyUsage {x509 .ExtKeyUsageServerAuth },
0 commit comments