|
268 | 268 | pskDwcHyZmbKZuk+NU/FJ8IAcmvk9y7m25nSSc8=""" |
269 | 269 |
|
270 | 270 |
|
| 271 | +def _legacy_invalid_private_key_pkcs8_der(): |
| 272 | + legacy_key = LEGACY_INVALID_PRIVATE_KEY_PKCS8_PEM.strip() |
| 273 | + legacy_key = legacy_key[legacy_key.index(b"\n"):legacy_key.rindex(b"\n")] |
| 274 | + return base64.b64decode(legacy_key) |
| 275 | + |
| 276 | + |
| 277 | +def _actually_invalid_private_key_pkcs8_der(): |
| 278 | + legacy_key = _legacy_invalid_private_key_pkcs8_der() |
| 279 | + invalid_key = legacy_key[:len(rsa_backend.LEGACY_INVALID_PKCS8_RSA_HEADER)] |
| 280 | + invalid_key += b"\x00" |
| 281 | + invalid_key += legacy_key[len(rsa_backend.LEGACY_INVALID_PKCS8_RSA_HEADER):] |
| 282 | + return invalid_key |
| 283 | + |
| 284 | + |
| 285 | +def _actually_invalid_private_key_pkcs8_pem(): |
| 286 | + invalid_key = b"-----BEGIN PRIVATE KEY-----\n" |
| 287 | + invalid_key += base64.b64encode(_actually_invalid_private_key_pkcs8_der()) |
| 288 | + invalid_key += b"\n-----END PRIVATE KEY-----\n" |
| 289 | + return invalid_key |
| 290 | + |
| 291 | + |
271 | 292 | @pytest.mark.skipif(PurePythonRSAKey is None, reason="python-rsa backend not available") |
272 | 293 | class TestPurePythonRsa(object): |
| 294 | + |
273 | 295 | def test_python_rsa_legacy_pem_read(self): |
274 | 296 | key = PurePythonRSAKey(LEGACY_INVALID_PRIVATE_KEY_PKCS8_PEM, ALGORITHMS.RS256) |
275 | 297 | new_pem = key.to_pem(pem_format="PKCS8") |
276 | 298 | assert new_pem != LEGACY_INVALID_PRIVATE_KEY_PKCS8_PEM |
277 | 299 |
|
| 300 | + def test_python_rsa_legacy_pem_invalid(self): |
| 301 | + with pytest.raises(JWKError) as excinfo: |
| 302 | + PurePythonRSAKey(_actually_invalid_private_key_pkcs8_pem(), ALGORITHMS.RS256) |
| 303 | + |
| 304 | + excinfo.match("Invalid private key encoding") |
| 305 | + |
| 306 | + def test_python_rsa_legacy_private_key_pkcs8_to_pkcs1(self): |
| 307 | + legacy_key = _legacy_invalid_private_key_pkcs8_der() |
| 308 | + legacy_pkcs1 = legacy_key[len(rsa_backend.LEGACY_INVALID_PKCS8_RSA_HEADER):] |
| 309 | + |
| 310 | + assert rsa_backend._legacy_private_key_pkcs8_to_pkcs1(legacy_key) == legacy_pkcs1 |
| 311 | + |
| 312 | + def test_python_rsa_legacy_private_key_pkcs8_to_pkcs1_invalid(self): |
| 313 | + invalid_key = _actually_invalid_private_key_pkcs8_der() |
| 314 | + |
| 315 | + with pytest.raises(ValueError) as excinfo: |
| 316 | + rsa_backend._legacy_private_key_pkcs8_to_pkcs1(invalid_key) |
| 317 | + |
| 318 | + excinfo.match("Invalid private key encoding") |
| 319 | + |
278 | 320 | def test_python_rsa_private_key_pkcs1_to_pkcs8(self): |
279 | 321 | pkcs1 = base64.b64decode(PKCS1_PRIVATE_KEY) |
280 | 322 | pkcs8 = base64.b64decode(PKCS8_PRIVATE_KEY) |
|
0 commit comments