|
20 | 20 | from .keys import SigningKey, VerifyingKey |
21 | 21 | from .keys import BadSignatureError, MalformedPointError, BadDigestError |
22 | 22 | from . import util |
23 | | -from .util import sigencode_der, sigencode_strings |
24 | | -from .util import sigdecode_der, sigdecode_strings |
| 23 | +from .util import ( |
| 24 | + sigencode_der, |
| 25 | + sigencode_strings, |
| 26 | + sigencode_strings_canonize, |
| 27 | + sigencode_string_canonize, |
| 28 | + sigencode_der_canonize, |
| 29 | +) |
| 30 | +from .util import sigdecode_der, sigdecode_strings, sigdecode_string |
25 | 31 | from .util import number_to_string, encoded_oid_ecPublicKey, MalformedSignature |
26 | 32 | from .curves import Curve, UnknownCurveError |
27 | 33 | from .curves import ( |
@@ -451,6 +457,78 @@ def test_signature_strings(self): |
451 | 457 | self.assertEqual(type(sig_der), binary_type) |
452 | 458 | self.assertTrue(pub1.verify(sig_der, data, sigdecode=sigdecode_der)) |
453 | 459 |
|
| 460 | + def test_sigencode_string_canonize_no_change(self): |
| 461 | + r = 12 |
| 462 | + s = 400 |
| 463 | + order = SECP112r1.order |
| 464 | + |
| 465 | + new_r, new_s = sigdecode_string( |
| 466 | + sigencode_string_canonize(r, s, order), order |
| 467 | + ) |
| 468 | + |
| 469 | + self.assertEqual(r, new_r) |
| 470 | + self.assertEqual(s, new_s) |
| 471 | + |
| 472 | + def test_sigencode_string_canonize(self): |
| 473 | + r = 12 |
| 474 | + order = SECP112r1.order |
| 475 | + s = order - 10 |
| 476 | + |
| 477 | + new_r, new_s = sigdecode_string( |
| 478 | + sigencode_string_canonize(r, s, order), order |
| 479 | + ) |
| 480 | + |
| 481 | + self.assertEqual(r, new_r) |
| 482 | + self.assertEqual(order - s, new_s) |
| 483 | + |
| 484 | + def test_sigencode_strings_canonize_no_change(self): |
| 485 | + r = 12 |
| 486 | + s = 400 |
| 487 | + order = SECP112r1.order |
| 488 | + |
| 489 | + new_r, new_s = sigdecode_strings( |
| 490 | + sigencode_strings_canonize(r, s, order), order |
| 491 | + ) |
| 492 | + |
| 493 | + self.assertEqual(r, new_r) |
| 494 | + self.assertEqual(s, new_s) |
| 495 | + |
| 496 | + def test_sigencode_strings_canonize(self): |
| 497 | + r = 12 |
| 498 | + order = SECP112r1.order |
| 499 | + s = order - 10 |
| 500 | + |
| 501 | + new_r, new_s = sigdecode_strings( |
| 502 | + sigencode_strings_canonize(r, s, order), order |
| 503 | + ) |
| 504 | + |
| 505 | + self.assertEqual(r, new_r) |
| 506 | + self.assertEqual(order - s, new_s) |
| 507 | + |
| 508 | + def test_sigencode_der_canonize_no_change(self): |
| 509 | + r = 13 |
| 510 | + s = 200 |
| 511 | + order = SECP112r1.order |
| 512 | + |
| 513 | + new_r, new_s = sigdecode_der( |
| 514 | + sigencode_der_canonize(r, s, order), order |
| 515 | + ) |
| 516 | + |
| 517 | + self.assertEqual(r, new_r) |
| 518 | + self.assertEqual(s, new_s) |
| 519 | + |
| 520 | + def test_sigencode_der_canonize(self): |
| 521 | + r = 13 |
| 522 | + order = SECP112r1.order |
| 523 | + s = order - 14 |
| 524 | + |
| 525 | + new_r, new_s = sigdecode_der( |
| 526 | + sigencode_der_canonize(r, s, order), order |
| 527 | + ) |
| 528 | + |
| 529 | + self.assertEqual(r, new_r) |
| 530 | + self.assertEqual(order - s, new_s) |
| 531 | + |
454 | 532 | def test_sig_decode_strings_with_invalid_count(self): |
455 | 533 | with self.assertRaises(MalformedSignature): |
456 | 534 | sigdecode_strings([b("one"), b("two"), b("three")], 0xFF) |
|
0 commit comments