Skip to content

Commit e5f50be

Browse files
committed
test: Add TLS PEM fixtures for HTTPS support
1 parent 200b884 commit e5f50be

7 files changed

Lines changed: 103 additions & 9 deletions

File tree

docs/superpowers/plans/2026-05-21-https-support.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@
5050

5151
These are deterministic test fixtures, not secrets. They're committed once and reused.
5252

53-
- [ ] **Step 1: Ensure the fixture directory exists**
53+
- [x] **Step 1: Ensure the fixture directory exists**
5454

5555
Run:
5656

5757
```bash
5858
mkdir -p src/test/resources/tls
5959
```
6060

61-
- [ ] **Step 2: Generate the RSA self-signed cert + PKCS#8 key**
61+
- [x] **Step 2: Generate the RSA self-signed cert + PKCS#8 key**
6262

6363
Run from the repo root:
6464

@@ -72,7 +72,7 @@ openssl req -x509 -newkey rsa:2048 -nodes -days 3650 \
7272

7373
`-nodes` makes the key unencrypted. `openssl req` writes PKCS#8 (`-----BEGIN PRIVATE KEY-----`) by default on modern OpenSSL (1.1.1+). `subjectAltName` is required for Java's `HttpClient` to accept the cert without warning.
7474

75-
- [ ] **Step 3: Verify the RSA key is PKCS#8 unencrypted**
75+
- [x] **Step 3: Verify the RSA key is PKCS#8 unencrypted**
7676

7777
Run:
7878

@@ -88,7 +88,7 @@ openssl pkcs8 -topk8 -nocrypt -in src/test/resources/tls/rsa-key.pem \
8888
&& mv src/test/resources/tls/rsa-key.pem.tmp src/test/resources/tls/rsa-key.pem
8989
```
9090

91-
- [ ] **Step 4: Generate the EC (P-256) self-signed cert + PKCS#8 key**
91+
- [x] **Step 4: Generate the EC (P-256) self-signed cert + PKCS#8 key**
9292

9393
Run:
9494

@@ -100,7 +100,7 @@ openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 -nodes -days 3650
100100
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
101101
```
102102

103-
- [ ] **Step 5: Verify the EC key is PKCS#8 unencrypted**
103+
- [x] **Step 5: Verify the EC key is PKCS#8 unencrypted**
104104

105105
Run:
106106

@@ -116,7 +116,7 @@ openssl pkcs8 -topk8 -nocrypt -in src/test/resources/tls/ec-key.pem \
116116
&& mv src/test/resources/tls/ec-key.pem.tmp src/test/resources/tls/ec-key.pem
117117
```
118118

119-
- [ ] **Step 6: Generate a second RSA key (does NOT match `rsa-cert.pem`)**
119+
- [x] **Step 6: Generate a second RSA key (does NOT match `rsa-cert.pem`)**
120120

121121
Run:
122122

@@ -127,7 +127,7 @@ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 \
127127

128128
This produces an unencrypted PKCS#8 key by default.
129129

130-
- [ ] **Step 7: Create a deliberately-broken PEM file**
130+
- [x] **Step 7: Create a deliberately-broken PEM file**
131131

132132
Write `src/test/resources/tls/garbage.pem` with this exact content:
133133

@@ -137,7 +137,7 @@ this is not actually base64 encoded certificate data at all
137137
-----END CERTIFICATE-----
138138
```
139139

140-
- [ ] **Step 8: Sanity-check both happy-path fixtures**
140+
- [x] **Step 8: Sanity-check both happy-path fixtures**
141141

142142
Run:
143143

@@ -150,7 +150,7 @@ openssl pkey -in src/test/resources/tls/ec-key.pem -noout -text 2>&1 | head -3
150150

151151
Expected: subject `CN = localhost`, validity ~10 years, key text confirms RSA 2048 and EC P-256 respectively.
152152

153-
- [ ] **Step 9: Commit the fixtures**
153+
- [x] **Step 9: Commit the fixtures**
154154

155155
```bash
156156
git add src/test/resources/tls/

src/test/resources/tls/ec-cert.pem

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIBmTCCAT+gAwIBAgIUUuAW3n1W16lvRDk4YhVufmUP3cswCgYIKoZIzj0EAwIw
3+
FDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDUyMTA3MzE1N1oXDTM2MDUxODA3
4+
MzE1N1owFDESMBAGA1UEAwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0D
5+
AQcDQgAEMO762s3HsHL7NcUnOsxgB3T16F+9GngVF6c0eV3+AMtgHSev13DimMG7
6+
G9IYM6nRi72ry0WTrj75/Fteq+UZzaNvMG0wHQYDVR0OBBYEFJ6O8HE5ocETBKhy
7+
5SMbUiqyNd2vMB8GA1UdIwQYMBaAFJ6O8HE5ocETBKhy5SMbUiqyNd2vMA8GA1Ud
8+
EwEB/wQFMAMBAf8wGgYDVR0RBBMwEYIJbG9jYWxob3N0hwR/AAABMAoGCCqGSM49
9+
BAMCA0gAMEUCIQDT1+RT/oWzHZmCX+uDhkyx7Dp+Th53REbNYmwy3eSLCgIgC9B9
10+
s2pJC0OJKBzDAuE6q8teluBpxjaw+uBiXased0w=
11+
-----END CERTIFICATE-----

src/test/resources/tls/ec-key.pem

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgpm3qKHPykk2K2wlr
3+
UEYX831QX1y1opx26Iv3m4EF3/ShRANCAAQw7vrazcewcvs1xSc6zGAHdPXoX70a
4+
eBUXpzR5Xf4Ay2AdJ6/XcOKYwbsb0hgzqdGLvavLRZOuPvn8W16r5RnN
5+
-----END PRIVATE KEY-----

src/test/resources/tls/garbage.pem

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
-----BEGIN CERTIFICATE-----
2+
this is not actually base64 encoded certificate data at all
3+
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDM01Ssl34rRJEH
3+
puMh3M+bQWcI2Bnb5sqZuZPI4/RgjeIdq0SVsdF04f5GwPBv+M1gcVjD6mMmlqP7
4+
d36tAHuhs3qGRx3ArGEPqaYBy6wK72oeHtR/vgkf7B2XiqmF40xgMfkWpV5ctrTE
5+
4IjUU5MwS1YOeE/l9R1BrxbtC5dtfd0YO61hMqfd/u4o9cGW7emludsgopgbmgpa
6+
b0fZVoYq6qJgr6Xq56QNHi49mboEvpFiv1UHTEzRXubSHdKCKgJe8DN2jzQ180NN
7+
BGJ4AW5SHO46QRuHrIOzhXdWJ0G1AcLrh+MKZEEQuaDg21DUs4buIyA++LfwZWl9
8+
vA3o9GGbAgMBAAECggEABPEf+7b/E5xgIwePWSqTrotiMXZmqQ4ro5BW21CdfZgY
9+
YA2dUOmRcwOZiydp1sLX+wniItNw4Qyi8cPa83ttqt96JQTqLVuscQsiqAFvP1IH
10+
iUKTPAhS7QlZNdT7irV5z06gBwSMvyEvH5IgPjoqY7152tXa5UCDtdPmNpt50r8Q
11+
LxABenr9e9PrJSW2UCJgCe2S1/CFsChZLz5FrN5L/sjgK2C0WD2gESaP9eI2h1BR
12+
nvloRU0BVfXDf6kmLtJsbaQueXbUmmO2HNcccdmynW6Ap7887blv+WnWoDE1vBji
13+
nA+Smqn+5fAQEBriNJ/gfB12SRORmWiH+DLM1q7U6QKBgQDtsT4784KglVVyHhKs
14+
dAPIvibdTndmP5mNP3QiYcYQgBryfanOrNLIbdMPPJiNnWIkuyujKTvQ0UNQ7h27
15+
ltLVtcwt/6RgjCpZkeNhZ0f63+EdW9MYAE5MkJ3+bAfBVdhcOICU3pozKvpXIpHI
16+
6phvTO6aNi7WP4MbWVgbF3Z38wKBgQDcmgcTKC2+TsPpLF/pvs8YhIh/6Pg62nrD
17+
nn+hcrY7LRc17NJpo/E+iR0qwBZf9XZ9bE0YHFcLeFhEOvFw/8gr+cJnjpz0DPIR
18+
P16ZLPVHOhQwx9MIKOfO4ED1VDRKUWLj79iWRP3XUN8MEKYC4t3LvPla1V256+bs
19+
RlyaZFFBuQKBgQCI97raBx9986+yO9wc3hmUIub4Xg/1rq6IM0lzyo280mU02O7x
20+
9qrb7lVSEWQDLu7wJZ8mvUsHsJ6u0xf1EhtaJRGMbCTHsd1xkdzKMx7KVRo+tbw1
21+
t29nNWqlwpDReutbcP+/SWroE1sAvR3u/ihq8pUH7jMdKKofJ2Pa8LFGuwKBgQCY
22+
Em4yHI58FFwlT3vG7MxiwGpAkt8b4ySh2Y9uQl+xJ4JKoDjkrilNzMOYhtZlzBak
23+
m5YBuveeZpWiY2exWAIrnn8PWFaGPq5YiXCy8zUapsToY7fsdhZmnFzrQeLSIIyl
24+
SN/rpx+94HgCHy/x6WawXlMe9NspoZ+M3WxU2jbRsQKBgB60mokLEJJNNBJ4rfqB
25+
+lzT5Yt7a9z8yxhRhGv0lJ1xzt+KaKZC30yujwheE83omW5Q8RR7nsc/cPD8wAoy
26+
Q+GswtBMEy02jHFJUtl7JZwzpsO6Sg2V/9mEKw5+kPrUT9XoTdrQRn3IWvbr3x8R
27+
3Xg8iJqw39t4FSOW2ZwKl4Hn
28+
-----END PRIVATE KEY-----
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDJTCCAg2gAwIBAgIUF62pYLdthTkgNw94eFEo0QTjXm0wDQYJKoZIhvcNAQEL
3+
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDUyMTA3MzE0OVoXDTM2MDUx
4+
ODA3MzE0OVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
5+
AAOCAQ8AMIIBCgKCAQEAmdNd21DRCVICYf/5KOXy78dES8eKQ5GEEVo/T0mnUUee
6+
nvkQg4qB1RGKSsBZShyqX2MoY2wq9viStfiErk5DIpIdJGFZ04cx9ACRzXy3B8/P
7+
xFCO/1UAxQ34ipLMbXPqpsdcacoUnNnTXKGohavP1KC4ZKuOMsb1M/72EWOivJuJ
8+
aAOjP4NZpGfdMCM6tulPwBA+kGAMShHfL00sA4L4FFSn/lxmhzeFhU1ij4rGqway
9+
DIrb33ovb5p4I1EwdTJ33yQr9pmRnUQesN8ftK1wQnH37kRCjULzAcfPnmD20qSk
10+
YtXlXDVjncrohz6uoHuZ8BIGgjzx5Yse7C0xxaDISQIDAQABo28wbTAdBgNVHQ4E
11+
FgQU2ICOPduZ7az8vS6Q1EZ6vQOuGjkwHwYDVR0jBBgwFoAU2ICOPduZ7az8vS6Q
12+
1EZ6vQOuGjkwDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzARgglsb2NhbGhvc3SH
13+
BH8AAAEwDQYJKoZIhvcNAQELBQADggEBACu6TZBkm2O3YZ+Ac1J5nFm8vs0y2j1O
14+
HEpCNVlbUkYqxrXR8jlZiG6iWF+U/ACdcYnDJQJznHJAvS3HNPQwNNz6D+jzlwNw
15+
4ltv0kOWVa9RtpLVp99i1KBIorJoJi1y93DVorYWdMYJNrsaz6STyEylUTlUIbsM
16+
teIIMSqCrjjFUgoPZalyAVGNTZaT1wWLnc4KeBCQ0gDz2kcLho32frvWsqLtRBdL
17+
ikZWwQCPorMVnxTPl6yntIqfxYO7HghlluyIrukH9yR9aURwPQTtoAZchOPACkpA
18+
JfDdHtm+4Oqr5zgwvNQ+AIGi7QMDBAajrk563+jj8G+nP+pA8PUHj/U=
19+
-----END CERTIFICATE-----

src/test/resources/tls/rsa-key.pem

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCZ013bUNEJUgJh
3+
//ko5fLvx0RLx4pDkYQRWj9PSadRR56e+RCDioHVEYpKwFlKHKpfYyhjbCr2+JK1
4+
+ISuTkMikh0kYVnThzH0AJHNfLcHz8/EUI7/VQDFDfiKksxtc+qmx1xpyhSc2dNc
5+
oaiFq8/UoLhkq44yxvUz/vYRY6K8m4loA6M/g1mkZ90wIzq26U/AED6QYAxKEd8v
6+
TSwDgvgUVKf+XGaHN4WFTWKPisarBrIMitvfei9vmngjUTB1MnffJCv2mZGdRB6w
7+
3x+0rXBCcffuREKNQvMBx8+eYPbSpKRi1eVcNWOdyuiHPq6ge5nwEgaCPPHlix7s
8+
LTHFoMhJAgMBAAECggEADHVuGKFHDPYzczSEPafCMWF2Spzyud5DUBR7JDTW9GJU
9+
mpOZns3NDjDJfpxtnu8LbYZecw8Du9UOLObf+C4midpDufqYh+VfSl/xby82s89F
10+
CKVtr4h2837aLn8NR6An1TI4bekMGlgaIlqFh64Ouy35QU4TylEK8xcnXuku+Q+P
11+
ouac4fcYSxbOr7+9oOFRgvTph5shW46i6Gb3h0z3QQ5nvBTtCfvh71uITrFl00Eh
12+
pGAxI9UmYMCf6v3eeThuxi1Y8CvcPsQwyJrKLheLpRTC7Au4tc5ZjuuJ2/c5mNA/
13+
iRUWWIiaWHiOj6Nvk/uUy5V/PhFJkdQ4yWzbew6X8QKBgQDX8gyjX2MAlmxxdEDT
14+
wpK0ymKynCMkvPgbUsYWJNylOURi1IQu0J9FE20ATr08Mr01OIStuIUDYao0G8V8
15+
/yvp7zQpRGL5Dy6d6IOtUYpC7wnyAztFonw0eMjyWLS4OsWhoLsLNaD8fHHjzRf8
16+
+rqnFLsmoUwhOgFmz1Ea+RPTSwKBgQC2W56nfe7aNAeujXenKmfaORTtKK3oMXc1
17+
697dnygIfEL4EeQf2B4jvKhC5LMWHB+U3r0vTvlPRDI19w/HLrMFnMjkJGGYnwok
18+
h8A1MLP5NUqzHjkuOuHIgWs+6WgR1bVS8n8yPDyuElpqYniHO+IXvnv4l8zB264/
19+
RIVtCWmCOwKBgQCI6UbIAf8T7Usd93XujItVIofG9CV38nNfZ3B9s6tM+ez4uAKC
20+
Z/TC59kQ+9sQop7Bcm70cWurxC0UUpM4d9QQwn8QtvIFNHH63eM2bN87JrDohtH6
21+
iVU0M2w78q/JqkGJAw3zwnGqAwB2TJ8r3o+exQ8PI+7PliYzV7f1YPwH1wKBgQC2
22+
BiQKmgi2I+NbF/jMkuaRDBNYWxekQuP0ndmbLIfgWHDcf7dPFgGXuHPYOcKNGktn
23+
5SHAPDtdJPxdo5xLPNETlBluqOYGWxHbvulb7p5m7gv/WPbIr5u58X0kkgUAcGqL
24+
PmU6tqf3NXis4lfe3SZkfw3t6VBIXUjD/FiWqyN3CwKBgQCX3NoqW0MnXzppPKfy
25+
7wAsZ9ErhEODFq12DWYf582vmx2VlFEiGp8RUOog4Iw4BJpjbQW1Pxo4MNc5Egqk
26+
c9Vg+vK8sKpVzhWkJ0GvCWFxH4jUt401bwICyRktF8RGbl8bnnbrtE7eOjk3JZeS
27+
VRGtDYZsCadvmsAH7o4u7hzdVQ==
28+
-----END PRIVATE KEY-----

0 commit comments

Comments
 (0)