File: certs.go

package info (click to toggle)
golang-k8s-sigs-apiserver-network-proxy 0.33.0%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,068 kB
  • sloc: makefile: 220; sh: 118
file content (195 lines) | stat: -rw-r--r-- 9,131 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
/*
Copyright 2023 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 framework

import (
	"fmt"
	"os"
	"path/filepath"
)

var CertsDir string // Initialized with InitCertsDir

// The certificates & keys in this file are insecure and for testing use only.
// Use `make certs` to generate certificates & keys for other uses.

const testCA = `-----BEGIN CERTIFICATE-----
MIIDSDCCAjCgAwIBAgIUWvgHsWuJgLnna8Yl8I+rBui0XGIwDQYJKoZIhvcNAQEL
BQAwFTETMBEGA1UEAwwKMTI3LjAuMC4xQDAeFw0yMzEwMDYyMDAxMzdaFw0zMzEw
MDMyMDAxMzdaMBUxEzARBgNVBAMMCjEyNy4wLjAuMUAwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCCJ3zvMr+obQNH6W268sOWO089pl98cQ3r5CxkJrNk
I59dOAtaEnCYSo+WNUZI+7hsEUqHb/bnJQu4ydTA+Y5LEwwtW3kcDterVakPd7oG
i6XqxoQat+5wrXXhASmZnZv6ilgqOyDCJhJsT4QljdG4bHLJFfW8wWdrHZpII87a
OP3yvUPX0grQkBNKiwvxvmTpa4R2EysaEiBSemGF0kIF5FI7lfkjGXjQBNeFW74s
KW+aToflU2Tus5U9CXpOzjwYJZVKvAEV4FtjCjCIwIPc2VLx3nv89o7ui4ax1y3I
UrtlaPe7XWfWEUo9hMgo33+1SrMwWcJMRiM3KRtqD7XPAgMBAAGjgY8wgYwwHQYD
VR0OBBYEFNXp9CUZJqP3z9oVX92PGy0prsriMFAGA1UdIwRJMEeAFNXp9CUZJqP3
z9oVX92PGy0prsrioRmkFzAVMRMwEQYDVQQDDAoxMjcuMC4wLjFAghRa+Aexa4mA
uedrxiXwj6sG6LRcYjAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG
9w0BAQsFAAOCAQEAH2xugrzi0T7CK17QEdsA5iING2Fvjf7Oe7L4c/knvlkaSeJZ
kEYJEGbzD8mMJPPz7Q8/zJMlFxbKOVrNxipUaFb2VJDcZg4fKbRwkUjIB+nvCrfy
fLei2XRgjW5fG94G0Z+E0hD6KQxY6wEAfyZnpsBJdETo4bYAkd5h4h6dwgFx66NF
ERjoxlSBVsnqksGID1/Q3pNdRP1si9OyLTs+WFVCbGW2O4+czY6EeGw9BEMtS35M
ZFow5H5OAshlvxbUftmK0TEnFhs509sKjgJVZMpSIr7ImqLPmRytJJ8zCoNQevuc
zVji1R3oGpF5D2FBzbtMuT3ydGX9DPxgt1s8Kw==
-----END CERTIFICATE-----
`

const testServerCert = `-----BEGIN CERTIFICATE-----
MIIDczCCAlugAwIBAgIBATANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDDAoxMjcu
MC4wLjFAMB4XDTIzMTAwNjIwMDEzN1oXDTMzMTAwMzIwMDEzN1owGTEXMBUGA1UE
AwwOcHJveHktZnJvbnRlbmQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQC5MCsFMaac22FuamGZcUhd2WoMTasFt//o3ondhRKhabFgUIoiQqVGUz/Pe/vI
Et5ixDU3wntGRBcceBMkOO9kWdFUQ1Rzxk1amg926ROA0LND4w2tVCsFHbCfny7A
PmnV40m3ayzIknGvnGNl52RP2vRTr1zocMkd3brRBESeAt2C/Fr8MjcsGLBIjAab
mp1P6bozOgjEZOA4gMCVVIl5VvZ2O1xgoVU7Q5RQBu+xydBmMcdKMjQh4IkxEuSH
HEJ9YVVZEmi11yqv+t6cTf2rnj32iW5oLJRbY+mzRPnfpTDsAM52gUXVJSGujohf
VTIZ9OrW3/8YXx2O7CBJFlWXAgMBAAGjgckwgcYwCQYDVR0TBAIwADAdBgNVHQ4E
FgQUK+SBt6V3wln+gF7YNxLeaIydk7kwUAYDVR0jBEkwR4AU1en0JRkmo/fP2hVf
3Y8bLSmuyuKhGaQXMBUxEzARBgNVBAMMCjEyNy4wLjAuMUCCFFr4B7FriYC552vG
JfCPqwbotFxiMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAsGA1UdDwQEAwIFoDAmBgNV
HREEHzAdggprdWJlcm5ldGVzgglsb2NhbGhvc3SHBH8AAAEwDQYJKoZIhvcNAQEL
BQADggEBAETRBhlXT42bBm77k+C+lqc6EI+swinal1PmeLiOjm1o/66l4wF/XD3V
z167HsQlJ4cP6wMDOHhP7VLVxywhbwO43mXt0Q3SZ2vyJBjosmOC+8g1XLBL5MQT
NJjBjFf2mObWB6DM5XCfRLbMKA+odqoWl4sRvhqg8LuxhScb4Ul/IyT4HpULBhNT
oSjj8gGCbUT3qsERlopx6KUC1doHw3b/faKMfY0zSPfn5HIPWBdhE1FumXGuJ/oi
bauj4tNadWNkXrUQ01/aRnOb0zTCCbmvCbfWsjkdw6Oku9yfEvgndClY56O5lXOK
QvPH9fTYK2ruBXC9zikrAXTs6QpBAgY=
-----END CERTIFICATE-----
`

const testServerKey = `-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5MCsFMaac22Fu
amGZcUhd2WoMTasFt//o3ondhRKhabFgUIoiQqVGUz/Pe/vIEt5ixDU3wntGRBcc
eBMkOO9kWdFUQ1Rzxk1amg926ROA0LND4w2tVCsFHbCfny7APmnV40m3ayzIknGv
nGNl52RP2vRTr1zocMkd3brRBESeAt2C/Fr8MjcsGLBIjAabmp1P6bozOgjEZOA4
gMCVVIl5VvZ2O1xgoVU7Q5RQBu+xydBmMcdKMjQh4IkxEuSHHEJ9YVVZEmi11yqv
+t6cTf2rnj32iW5oLJRbY+mzRPnfpTDsAM52gUXVJSGujohfVTIZ9OrW3/8YXx2O
7CBJFlWXAgMBAAECggEAMv80QaRoJPb28ECkaux6yLloDkZPK+59LyQlZBbSyBeC
jKrxNzkSKXkgb+NNNU4Y5qrwms/YQcPbd3ALmWSCbCid0C4QcidwQtx9GLpbsBQI
4c+DgzFT/X8tFe/woGkvnQKP2M5PUVaerwUKjFP52FHMCcWXeL0ibTKT0R5zRO2+
Bfo2BmQlzskooq2qhGgzLZ6mXtnDQVTIeRdoB4kgtqZzzPzWO6S8oeSh4vH7gmoO
NzF9mUlYvbvYuQ2tZp+mLqb5qub5kLCIa1pGESnHWy58hV4X1uRSwGvH4WyR3A93
4OpD/Jv1KISgXFJW0QTBH4Ll2cvcqq1XmTNvWhV0wQKBgQDj3WoDyPkJiW+KfOIz
yQ+tPS+F8dyEe/TQltRHUUbJ69VpPhb5hAUjeOzX5FDjJl4P/4v1K5SCpNelFGeP
eXvAGX4kGh0zCX7SrEdQfsxR2oRWzew9zOJ4wdrz3H3cCBl5P2WZvaj/kaUoHmOW
HE/YLM/NWhNwgFdnBCJhJgBdVwKBgQDQDciyW3EeyOy3zxsizWXNAPo/o3yYFzdK
CghuleP/trXk6uk9VD69tiZ7hGMunjGMrgBbr9VjtkpXHdkX0C9TFjPFiRQVVF6g
SZ9g368uyulozXfRLbsfguN2SyS3zUV2CSj0uNh58kCiZ8uF9oOkv1IarRhh4DHz
klOqIt5hwQKBgQDKEsX8e1LW8Um4j81uTUUYxeUKLRX5a5ANF2VDpcFYOkt03Ho1
Zq3D6m5nevN8rb7HA0IT90TpotQWcoTwiLSFBFaIH5x7cVVF8UABE6GQiW/JJy71
E2hX3NqWXphC8+/bRayNbdOcaYYEkQaRzaPFOuBB5TrODxLzqYfvjWrPWwKBgQCP
gtKLZNP0njfa2jsnmHK+JAx6VTUeW/VBVwZV8YKh4tA5JWjZawEUL08AKGOZxnj7
RxLsK6+P5jAFQ4t6B5p9P3VarqFxzQ6wldggJGtcZY73QbOCUH8gz1JDSLX9KtTd
BJiBpfd8toOrAtm6gD5yJ55k1D1bViBemPKpCwBGgQKBgCN+2x414z/Ok4Bc79+M
nnL5xgORgGCcqWhfl9nEfcG+NqVu2WnyRoGmk5OPRavfkTnmqqnZhs508+WVKL6O
gBiLDxqRqqdCGSDEN06iUHseTiFmT7nSlOKVhOdUTVoxEXJYe7qD3Rj0U+QC1CNb
ZSwx3ZMKdQL8ikQf7cEZuV9O
-----END PRIVATE KEY-----
`

const testAgentCert = `-----BEGIN CERTIFICATE-----
MIIDSDCCAjCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDDAoxMjcu
MC4wLjFAMB4XDTIzMTAwNjIwMDEzOFoXDTMzMTAwMzIwMDEzOFowFjEUMBIGA1UE
AwwLcHJveHktYWdlbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB
5emcdqRr2VJ23plXWRhDbfDe/lyqZ44lkfrjGhh6fIRIWfjnCYhhPSLiWiG0LIf1
RGSyLJ5jQcs8pwAMwE3KUc0tA4/whF088QXExOtnSlIvZG2pTXmeuMXxidlcv3jE
mI2Y0gcvvFhfkRuxckJSuvfaOjVbL1dBJe0W9m3oVqZLLYuZ8KGMvJBGWipjGlaE
EX3oP8S2ef7JwVMJ4vJRC+yGOIGoEDkUGFxiZLGxnq8qGCYEU8upOCCJt7LCvwQh
SB3/PQreq1q8qcc/sKsTF8QV09k+VbQ77n8HFGttDnbHYRPX6C9fNyU2bqwJOvd0
giUKAwyL7D/MnF6K9Z11AgMBAAGjgaEwgZ4wCQYDVR0TBAIwADAdBgNVHQ4EFgQU
9++eLNBpGZ6qurgprQQTaduj1PEwUAYDVR0jBEkwR4AU1en0JRkmo/fP2hVf3Y8b
LSmuyuKhGaQXMBUxEzARBgNVBAMMCjEyNy4wLjAuMUCCFFr4B7FriYC552vGJfCP
qwbotFxiMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAsGA1UdDwQEAwIHgDANBgkqhkiG
9w0BAQsFAAOCAQEAPra+ZeyI5X86PZuHOSq/s8xWMEAo34B//N7ipv4yyYUtlcOl
WNBtRWi9gtnQz1NAZplsjxMDSKCTuZScNtUUMJLpoTPzfE2UdvLN4eZ2hJGKZLXD
qlljvKGTcFyzcxSXcO3lqWJP6jhnb5JIgiK3qqW/UXTY8DEN1h9P+v9lcP7oOjTP
smXGG+fREUlt0dyTkJWcP4m/84XmhRCbktQ7nYnk4f3Yq0eq8bkZ+BCAoMePrYf9
nTXUWUjxbwRWvbtd8bKm2BkWLeVyNYxxghUZg0wycIV556lkNARO+mN6Q3hDGx7n
zAAE7B/05pCD7R7zER4/I0S/rgZbyNFpq/N6tA==
-----END CERTIFICATE-----
`

const testAgentKey = `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDB5emcdqRr2VJ2
3plXWRhDbfDe/lyqZ44lkfrjGhh6fIRIWfjnCYhhPSLiWiG0LIf1RGSyLJ5jQcs8
pwAMwE3KUc0tA4/whF088QXExOtnSlIvZG2pTXmeuMXxidlcv3jEmI2Y0gcvvFhf
kRuxckJSuvfaOjVbL1dBJe0W9m3oVqZLLYuZ8KGMvJBGWipjGlaEEX3oP8S2ef7J
wVMJ4vJRC+yGOIGoEDkUGFxiZLGxnq8qGCYEU8upOCCJt7LCvwQhSB3/PQreq1q8
qcc/sKsTF8QV09k+VbQ77n8HFGttDnbHYRPX6C9fNyU2bqwJOvd0giUKAwyL7D/M
nF6K9Z11AgMBAAECggEAManDxjGVN5J4Tr4BJKBLWKoGMfeQoIzZmcHkMtryPh06
fJWe7P5CEjXog3V2gIGPaUDVUdWf0+h8N9LGbn2q7xE4rjjlW0Nr5joNsjKF4PTm
TAE7HUwcxIyrFoyqQdlBA4nXarcQ5Ccns4KlRzPuzOXaqeiS1gIwJR2jtmf0CrgE
ykFyLGhfSvc/fiCr7EDxr/eOANx7mf6ONsPHOIEA/mvs/V48OndsZdgryrVvsvXJ
/Mn2iw/S6CbmQtTjW+2zbknh3wbRiVC3ZToCtg2xIYmh04TjW+eb3Ly84BAflMbB
+nTuT8cl7qe407RaAX5YOxLyog86yPKUDXqRl1CZmQKBgQDfWMJ4uIopTNBpjgIK
yEq4HxYLLYcHanjjAhG15gwATmqr6h4q7uotR1Lstz2n//xrysDFTc90wB3eiciI
xcdmXrx+oDjVoiq1/lui2lqFgQkOPvkwaCa5u82qjrTW567jB7HrwhJ4KDf4Z3Z2
vjgzHGDldrzZKKujm9Rbylnt3wKBgQDePvlEBVKl84H32UDCKgiJHvZLOTRTLK1B
pJQpoEhjdFs6y3QFB3toK4AkYI6tFb94IaMnalF+aRccHu/VB1olbmbla2O6+92h
0OuXqRMOP6Fm+Z11u/+VI2y5T8KvcLAmoEDxSyjtsZaIK2bnJnbr2kry0WCpytCn
ag3IOLh3KwKBgQC1OzXadYwOxTjcXhIEI9CVpQvjGBdYiin7soMigcA9Q2RFiZzf
I6y7/wMn9+y89Pgjk4tmzqPHTdku6cjiSvJpe/giG+riV0unD/XVqK8JY9IwUCMu
B2VdEypo+pF9TNRZfrX94yXPgHsiQvoaknHR73Yk3HuTDvBvuxPPQ9xDKwKBgE7P
dgUw/gXrPANv/w7baPt3B0/VkUCNb0L/4aqBNCpQcKmAzDucU561DlPYCcBHHgaz
pu+rPArfqVpHfjTEzqrHY6WnV05PUmC3fVPimOdMmSezDKtbZ16zmTJ9nkQoac7I
tT7bsD/Z4c+X1H3Tngg0+K7yoJyVVziG2yxNMNzRAoGAFpFz1nci58g7UobjvM9q
TZoVJGWe0YlufRJ7TiWnHGqptgHr+Eot4a8PfKLikhDMXQUSf5VjqK23IrX+pW2R
DHNQLqjuhU8espwRnA1qzWd3Ss1LccVe/v+2EQcVio95mK4iEGlNXT1bkMcDGhFz
UMKSzlENDkz1zDPyaQmd9wI=
-----END PRIVATE KEY-----
`

const (
	TestCAFile         = "anp-test-ca.crt"
	TestServerCertFile = "anp-test-server.crt"
	TestServerKeyFile  = "anp-test-server.key"
	TestAgentCertFile  = "anp-test-agent.crt"
	TestAgentKeyFile   = "anp-test-agent.key"
)

// InitCertsDir writes the above certificates & keys to a temporary directory.
func InitCertsDir() error {
	dir, err := os.MkdirTemp("", "anp-testing")
	if err != nil {
		return fmt.Errorf("failed to create temp directory: %w", err)
	}
	CertsDir = dir
	defer func() {
		if r := recover(); r != nil && err == nil {
			err = fmt.Errorf("panic: %v", r)
		} else if err == nil {
			return
		}
		// Something failed; clean up the temp directory.
		os.RemoveAll(dir)
	}()

	for filename, contents := range map[string]string{
		TestCAFile:         testCA,
		TestServerCertFile: testServerCert,
		TestServerKeyFile:  testServerKey,
		TestAgentCertFile:  testAgentCert,
		TestAgentKeyFile:   testAgentKey,
	} {
		if err := os.WriteFile(filepath.Join(dir, filename), []byte(contents), 0600); err != nil {
			return fmt.Errorf("failed to write test %s: %w", filename, err)
		}
	}

	return nil
}