|
5 | 5 |
|
6 | 6 | import base64 |
7 | 7 | import pytest |
8 | | -from .curves import Curve, NIST256p, curves, UnknownCurveError, PRIME_FIELD_OID |
| 8 | +from .curves import ( |
| 9 | + Curve, |
| 10 | + NIST256p, |
| 11 | + curves, |
| 12 | + UnknownCurveError, |
| 13 | + PRIME_FIELD_OID, |
| 14 | + curve_by_name, |
| 15 | +) |
9 | 16 | from .ellipticcurve import CurveFp, PointJacobi, CurveEdTw |
10 | 17 | from . import der |
11 | 18 | from .util import number_to_string |
@@ -288,6 +295,36 @@ def test_decode_malformed_garbage_after_prime(self): |
288 | 295 | self.assertIn("Prime-p element", str(e.exception)) |
289 | 296 |
|
290 | 297 |
|
| 298 | +class TestCurveSearching(unittest.TestCase): |
| 299 | + def test_correct_name(self): |
| 300 | + c = curve_by_name("NIST256p") |
| 301 | + self.assertIs(c, NIST256p) |
| 302 | + |
| 303 | + def test_openssl_name(self): |
| 304 | + c = curve_by_name("prime256v1") |
| 305 | + self.assertIs(c, NIST256p) |
| 306 | + |
| 307 | + def test_unknown_curve(self): |
| 308 | + with self.assertRaises(UnknownCurveError) as e: |
| 309 | + curve_by_name("foo bar") |
| 310 | + |
| 311 | + self.assertIn( |
| 312 | + "name 'foo bar' unknown, only curves supported: " |
| 313 | + "['NIST192p', 'NIST224p'", |
| 314 | + str(e.exception), |
| 315 | + ) |
| 316 | + |
| 317 | + def test_with_None_as_parameter(self): |
| 318 | + with self.assertRaises(UnknownCurveError) as e: |
| 319 | + curve_by_name(None) |
| 320 | + |
| 321 | + self.assertIn( |
| 322 | + "name None unknown, only curves supported: " |
| 323 | + "['NIST192p', 'NIST224p'", |
| 324 | + str(e.exception), |
| 325 | + ) |
| 326 | + |
| 327 | + |
291 | 328 | @pytest.mark.parametrize("curve", curves, ids=[i.name for i in curves]) |
292 | 329 | def test_curve_params_encode_decode_named(curve): |
293 | 330 | ret = Curve.from_der(curve.to_der("named_curve")) |
|
0 commit comments