Skip to content

Commit c03847e

Browse files
committed
More 4096 bit vectors
1 parent b95f6c0 commit c03847e

File tree

1 file changed

+332
-1
lines changed

1 file changed

+332
-1
lines changed

unit_tests/test_tlslite_utils_rsakey.py

Lines changed: 332 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from tlslite.utils.cryptomath import *
1515
from tlslite.errors import *
1616
from tlslite.utils.keyfactory import parsePEMKey, generateRSAKey
17-
from tlslite.utils.compat import a2b_hex, remove_whitespace, b2a_hex
17+
from tlslite.utils.compat import a2b_hex, remove_whitespace
1818
try:
1919
import mock
2020
from mock import call
@@ -3580,6 +3580,337 @@ def test_normal_decrypt(self):
35803580

35813581
self.assertEqual(msg, plaintext)
35823582

3583+
def test_valid_empty(self):
3584+
ciphertext = a2b_hex(remove_whitespace("""
3585+
31529676f990b750e8b742babe933346bd77610e7ea74a6b815bb06ee3c91a37
3586+
6848a4d8b148c2882d65ca0213e68600354b68b7790110ed744e34786fa5f7b7
3587+
03144a12f7f7a4d5402ef048f248fec83dede7f931bcb872054fd25cfe427984
3588+
0352f2c495bcb511cf20269d8177baba474e790a2d16b655c4e07b28ad6a61e8
3589+
1ce5db3845cb5395aa4affa413e3f1bdecf3fa0aa3073b40d23e9bb0aa7cf359
3590+
5bd73d1d38a2661d70a8e4ef525fd446f496ddbe5413657c06d51464977421e0
3591+
57387a92a5b9428d02d1a8fb0d50a1623e1b1d0685c371db24b63dd6a4aebf0e
3592+
31c637997ae26dbd3441b9f7dce164d948a156aee8c9dc4049286244c85178f7
3593+
b4f49d3ba0870f7c71f8f546a902a559fd860ed61e550c4143907d118a15f317
3594+
e9ccd84ce3893db372fff1d9a9e5182258d9f9d840a6b75b1618ce4999734d14
3595+
7f5334763c0b87ca1c8e57c6f923cff9c7107eea45cf5d4fae0ec0b94e892a6f
3596+
6790b07f9e24bff041620b1fb47bcefb956ba61949fea02db6ec785b4070e84f
3597+
390234d83d17dbf89819d5c6b52a488f36cd9f8d81e1811bbadbd6756b9ec5fb
3598+
dcc1d32728efc8ef4318463996c0f829f9064436580f9502af97b1e40c854b0e
3599+
f0a20da4368e5b94327b62c27a8a1cf6103bc780e06e5ee5232624fe5bee59fe
3600+
79a3956a7d782380a3398eab6d11f618fc2c698eb28a6029f846c378ecf2d102
3601+
"""))
3602+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3603+
3604+
# sanity check that the decrypted ciphertext is valid
3605+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3606+
self.assertEqual(dec[0:2], b'\x00\x02')
3607+
self.assertTrue(all(i != 0 for i in dec[2:-1]))
3608+
self.assertEqual(dec[-1:], b'\x00')
3609+
3610+
plaintext = b''
3611+
3612+
msg = self.priv_key.decrypt(ciphertext)
3613+
3614+
self.assertEqual(msg, plaintext)
3615+
3616+
def test_valid_with_zero_padded_ciphertext(self):
3617+
ciphertext = a2b_hex(remove_whitespace("""
3618+
00c40ab6440e544ced2c0bbd3f6db05fd0068eb8e9ed83099cf5843ea3d2cfd6
3619+
adf7ede1c61f1974a5696f503205346b51d7b00eca20432f0082abf2a3cd6743
3620+
3c5f860b32f1f6fe9985dcec65e7f19949999e142bc76ce5b2dcb80615d379e9
3621+
715ac24ef77fbbe3d969131c0f39666b3ad641fac669d53542ae9389d86f6f28
3622+
fe63ba272b1f6bd015b4187b6e2014fb74fc32bf4a2e48abfbfc0470956c7379
3623+
1c1d81db6c024f4d1cc81ba01be114b41ddb95572a832086c33fcaf90b32358b
3624+
5b13ef0bea74a6dd01d5c351a231d4e7d15d121cffff023e0c2bdac11c982fb2
3625+
419955a495e8dac3d84cbd8d71ac380072a02bb026ed61151f0d202b3133e603
3626+
0a2db7560ca926de3927f1ed578522edac441071498b4565fb0c8071886b79fc
3627+
9e8d8c14bec1d7a6106441c16e9b2bd3090dad1fe82d0e43f40b036f00506cea
3628+
36af61d5f10aac0d0591c12107ceb8999787e34943974025b9c47d16cb523a58
3629+
c5828da975fa74e431ace2dcf934e21613f877f65c67b729ca79ee25f27ea07a
3630+
74ff38c3b25bcaf22dfe2e9e5d0adecaa01d98d55b5cd0b20f80e672d1bedf4a
3631+
cda32184db0f5ce89dd64f538f038cbefb625347ef77a16ab9d48dbee9549f1c
3632+
8d55b5470a5c6693bec146f0190bbca5b93a66667150a661851add729b24dca7
3633+
8a1f051093ecd40a0ac43a593101f579597b7638065bdff4191bdc0cae12c052
3634+
"""))
3635+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3636+
3637+
# sanity check that the decrypted ciphertext is valid
3638+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3639+
self.assertEqual(dec[0:2], b'\x00\x02')
3640+
self.assertTrue(all(i != 0 for i in dec[2:-12]))
3641+
self.assertEqual(dec[-12:], b'\x00lorem ipsum')
3642+
3643+
plaintext = b'lorem ipsum'
3644+
3645+
msg = self.priv_key.decrypt(ciphertext)
3646+
3647+
self.assertEqual(msg, plaintext)
3648+
3649+
def test_invalid_decrypting_to_empty(self):
3650+
ciphertext = a2b_hex(remove_whitespace("""
3651+
577d6457be536bf1fac80993f5f76e797607227a42e325deb246bf8bf475e1d1
3652+
819c5dfb6d288eb131ead32238b7a8796b76517e78f979b34f5c2272ae4d40e6
3653+
0b265ad3c897ecc4d26587c8ac32db431ed8d2996d64edadf7719baa4b4292b3
3654+
4e042f26693c90f04addffe8ba0e3c3f1cbabafbfd2e3a6bcd9203e9a1cebb1c
3655+
968caa73430556ea5743ecfa49edab656bfeadf7c114105f3e222fe60983d55b
3656+
c48cb738c5a307353281c573be6ffc69630185ae6de695c35fbf8cbc24b5590f
3657+
5e511adb68a38a37bc6dc74a5052e5063f20c30d2f331dafb07797f9e577cb3d
3658+
18280f318fe2a6116cef6846b7a8384663a5aaac32693b9b159f506d8812f76a
3659+
1ee405abb1e5e439a0aee4d1b51f435ea2d043fe4f4ef1a6ccf069201ceb7978
3660+
139eed579b01bcb5b4e525cce6b179f72fcb6aabbd916538d580ce3e1ed57a4d
3661+
3433efd826fffd75d8fdc43de69afab66dc32a4f4f81b14c0650a097709265e2
3662+
6b57f233008013b275e7b58817b02f4473a99bb48ec7d9562bc78d1f032340d3
3663+
083b762f19fb204be7f26d7ceef6c7ff712479a6cdf18123586b87c2751493f1
3664+
bb2585626b1aa486a2ec50a197728cf24d3968e6d9b9bdfedfda91db292abdef
3665+
fda2334c85fd359e65e7e662193b6feb5df6d70c7727880150c785d809ba3ffc
3666+
e3b2701aad313da60cd4affe85e85d32c4fe271b0b107e529a22cffbb01871c8
3667+
"""))
3668+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3669+
3670+
# sanity check that the decrypted ciphertext is invalid
3671+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3672+
self.assertNotEqual(dec[0:1], b'\x00')
3673+
self.assertNotEqual(dec[1:2], b'\x02')
3674+
self.assertNotEqual(dec[-1:], b'\x00')
3675+
3676+
plaintext = b''
3677+
3678+
msg = self.priv_key.decrypt(ciphertext)
3679+
3680+
self.assertEqual(msg, plaintext)
3681+
3682+
def test_invalid_decrypting_to_max_length(self):
3683+
ciphertext = a2b_hex(remove_whitespace("""
3684+
09be60b83b63aa1f2398c6ccd7ba602917dfffbc1a2ee01094221ef7140ba8b3
3685+
64b4979b7d068be084d34b70309bc48103d9e7dc76c042d1063ce6d7239d3542
3686+
ad511da821c6ad53dcaefdd9e950de889d1d462a5a8bcdda4e2ac579c0dc12ab
3687+
684a16a3c4075ec5062db79f95e5b436a8927fe7e3a795152cb6407faedf088a
3688+
e4531cca8482348a3c44267b1ea46fa3bfcb4754be735e434c4ef17b84f6fd6c
3689+
184e8c4adf91fbf00be6a6ff86351e6fd76c8929ef7fae14113370cbe6ba0181
3690+
ef6970855a2cfde5b366a44bf0575e7e5d5354676b5429a6916bb7065c234174
3691+
42150f8fa23a1ae284a27008980691eb886b693adb1bf4d38faae5037007900e
3692+
47124a695c67b51fe9e1e66153cb32fae0e7370151024fe49b2781e50ac5a31d
3693+
1c7de58923c0360ae61f4a3bcfd7839a104c23d95ddeb76bcaf2b1956f81c355
3694+
aeb11a46b48762baf072318727e56d4e682a3b71898d3725b00a334c94cb1adc
3695+
cea81525b28c2a1c2b82950b93786ea5b893ffe6dc0932a95b064c838d6f04ea
3696+
a8334f92b0dec8c7bbc1a5900d7e7680c24e66867ec2b837e30be18083c6fb2b
3697+
fc67ace569989171f05d312ce97307b477379837351e9199528e88671a93e558
3698+
68a577fb9eae76a2cbf3cc62c6aaabbee88cf6638012554ba92772e923fbe531
3699+
fe8aa2036ee7230954ffa24e802a399f531c8cad0a78262442c92089f06b06c7
3700+
"""))
3701+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3702+
# sanity check that the decrypted ciphertext is invalid
3703+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3704+
self.assertEqual(
3705+
dec[0:4],
3706+
b'\r\xfe\xa0t')
3707+
3708+
plaintext = a2b_hex(remove_whitespace("""
3709+
7a57bf4c557abe6bdd45ed471260ec2749e66710b707ff4e4761738dbe2cdc19
3710+
267aec5070d2472f53ba0c86e8b607566c871b6c3de28772aa197e369fad293f
3711+
8218fd32178ecebe60cc7926e093bbdd629ed6a6a29b4a905eefe443f3621d89
3712+
582a41bac7d4f6b77f9c935681e892d17b2261151a4b4244506cfc49ba578b97
3713+
5840d88f637321d20c25950640d2b43aa660611cc07d016534324b84bada2244
3714+
85488af08a8d54af1698babccd76b87218b074987273dd3746eacd2dee8068d0
3715+
c4f5e8f219689d55deea3cccb86e52599cebf3777cab3bfc2da5ae31c9019973
3716+
9ba5d5e01816f8f8a21c7f6b6acdada8a2b2ab4f32502d6296a365267a768378
3717+
78d204a1b8cc5299708e9eb1b44d9663c75c9b8c17dd8f1a9f04109087e22329
3718+
769fcc5fa65506a0f6294d8bf4a362559c497a36b2a5c55ee12213bd9c42a2dc
3719+
0f6f35176e194641dcfbb334b13924e6883b4f68c88d016ecdc67bafdeff4b2e
3720+
4122777726e06b0e37642d42090be622288ce11a8af4261b5d186092002e7d71
3721+
cb43fc2182e4d341c610e6860904cbc526e74292aa1df81dd08d87b51a953c0b
3722+
e511346d604aa3a8e87f943db3e951a69cc4dcd1b996d3d8ab595aa9b7ca591a
3723+
e2e9b49798a9b98aa1c1c233f938937c88ad675e6297f36ba0fb161a8b42e9ee
3724+
9a98d8b781165ed75d30cc55d88e6df5c688c32390
3725+
"""))
3726+
3727+
msg = self.priv_key.decrypt(ciphertext)
3728+
3729+
self.assertEqual(len(msg), numBytes(self.pub_key.n) - 1 - 1 - 8 - 1)
3730+
3731+
self.assertEqual(msg, plaintext)
3732+
3733+
def test_invalid_with_bad_version_byte(self):
3734+
ciphertext = a2b_hex(remove_whitespace("""
3735+
0eb5e0c87c4ffffb760c8fac2a7f5b06f46301ab5b8374a59cc7006aa16e7f38
3736+
f27d957a4b475b41975246ffb5f2387ffdb62565411733331a4522a07a70bd40
3737+
ffe23f28f457be55a6cd1b6aab8c7127ec4b0c9d653c3d979fbd371854a80727
3738+
c0546d9852ccd6220b32a9081f6687fd2262dc806e55964ac799cfba56c0be1a
3739+
9fb3d4f46161cc5f251ddf3579a87c48c086da786d953829e513a525a87d8896
3740+
61606593600109a98159a91b606f138b9da1b2d427418d50647476fbdd17b521
3741+
11ca1a2ff9896167277d158d82ade196ad52ea6d381a63748e0068b160331c9c
3742+
b27c20afbeb696c1db16ea145e96a6e54a825c87c10f85b0d92fc299e254aa7f
3743+
74c73f17bc704407c31dba9fbda37e31f1231d06744beacb82a0130a9e7d004b
3744+
ed7e7036e33f1c89bd8ed0833def8e946efb53a9ea4abda91f1e1ed44e884d8e
3745+
45ea692e8f7e2b0f698024c8ed7ade62b251dcb91b249e937a85f823e6978e01
3746+
e8f7e9ed9c53f2f16d99afe58d3b77b3818aba64e139b3fcb0174542f348f9d2
3747+
c47dc9d78902a28e1a6613397a0f5938b860a3f6cd44e3b74a37ccdeda248cde
3748+
ee4a39497d76722e6860127eefdd80f447e69279bf177c1cd6c27ddd3f2f8992
3749+
4f21775df4824ece7f2a6f16266772a13669bfc04aa3b998ad03de17bbc27e62
3750+
9a495052e3e7f0b7b1c06dd4b429585a663172ba20527ad5186447bb74b5f368
3751+
"""))
3752+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3753+
3754+
# sanity check that the decrypted ciphertext is invalid
3755+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3756+
self.assertEqual(dec[0:2], b'\x01\x02')
3757+
self.assertTrue(all(i != 0 for i in dec[2:-11]))
3758+
self.assertEqual(dec[-11:-10], b'\x00')
3759+
self.assertNotEqual(dec[-2:], b'\x59\x40')
3760+
3761+
plaintext = a2b_hex(remove_whitespace("""
3762+
8bf3b682d8b950055940
3763+
"""))
3764+
self.assertEqual(len(plaintext), 10)
3765+
3766+
msg = self.priv_key.decrypt(ciphertext)
3767+
3768+
self.assertEqual(msg, plaintext)
3769+
3770+
def test_invalid_with_wrong_padding_type(self):
3771+
ciphertext = a2b_hex(remove_whitespace("""
3772+
714102bbe701855ec564853befd91262dc4cfbb3c417113c0c650b49c6878b10
3773+
1a76ba4822bde7ca538a2726c6eb9272a3dbda84119ec107d86d2b3a49d82de9
3774+
d176824f1c2d9cd9b432064c45dbfc60f1e71ec2772aef2669e756cae67ed757
3775+
b528cccc4ac6f1437a2d4bbedefece1bb5c21381eb4aebc1670c5bd65d408a19
3776+
c1329b9d9d236939da58a1285357e910edc83d428d1e5315c81cb070aecc24be
3777+
7fde807ce5d4f50dbe14478334c26be91ed4cb7335c63561b1a8c8c67e40844b
3778+
465fcf7df6e0df031572682427c62d3cd0c650ec5ef3875fd420516c5cb8089a
3779+
34757c81360dda37f7fbbd5ea9c8a54ff29f702741a0d496e268a8934b32cd16
3780+
bea2aa2628397097df0ba08545b9b23bc103a08077745239de34eec09f63fdcb
3781+
f3aece33a796adbd8dba0705ee3a1092d51f18f195e896b9c35b1a185752c627
3782+
55c4d9bf2069db141fddc6755c6927cae8d2811aef492f8324ca555b51a4eaf7
3783+
3001ddf88918798df67138a5475fd881b79a158dbe7dd61f241680039a7ae312
3784+
8a7b925ec7577cddbe116940e2f50ffa3ed36aee7e46ed6dc5b26e7c5f1d16cd
3785+
c199140742d3fe6bb7d2d4b74d0be675a3388c6fd6d09112dfdea93a701486e3
3786+
8f28add60fb674ac141b389eb4e09153167596a96d2e6618d98593278d22f560
3787+
5041882743ebafbeb18cdae093609ae6852498bedd8fb6b0a18ce358bfc9d6f2
3788+
"""))
3789+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3790+
3791+
# sanity check that the decrypted ciphertext is invalid
3792+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3793+
self.assertEqual(dec[0:2], b'\x00\x01')
3794+
self.assertTrue(all(i != 0 for i in dec[2:-11]))
3795+
self.assertEqual(dec[-11:-10], b'\x00')
3796+
self.assertNotEqual(dec[-2:], b'\x79\x0d')
3797+
3798+
plaintext = a2b_hex(remove_whitespace("""
3799+
630fbcef34c1b72f790d
3800+
"""))
3801+
self.assertEqual(len(plaintext), 10)
3802+
3803+
msg = self.priv_key.decrypt(ciphertext)
3804+
3805+
self.assertEqual(msg, plaintext)
3806+
3807+
def test_with_zero_byte_in_first_byte_of_PS(self):
3808+
ciphertext = a2b_hex(remove_whitespace("""
3809+
1dd961276ba110ba4fdaf4f177780cbcb6373d2ae6769417a32c9b02eb00a48b
3810+
427e7e6edefac562fc42c5e2216c885af0f76bcfaf3da4db54ce9db0e22c498c
3811+
71e146561c1bbf7ff6246ffc6b0bfcd107830790c07ed9aeda70f2ead9e95799
3812+
2e3ed781e054f336e2ab08110f14ca3be11b92d77b0048c334d97d61c8bc4d82
3813+
db9c7236973d9ba4da066643440333b5a9e905e799f966c9164907866d9e6af2
3814+
d7f83466fe8409f24d5c9b3a06614af620087e838039355e65bde8f3ab7a8e06
3815+
943613e00fd143e21ec2684ac07e1dfdef85da32188a97e7585a667f89694111
3816+
6250f30e31bc0e2b20e536366e225759b12cdd578df18799dfee20b529189ad4
3817+
9789f60ce3649431889d740641df90d1dc372a62b4d77f9f5f9677b4f96770b0
3818+
7107ef37afe4e4dd6af4838ae18b61ce953eedcfc95d081951cbe0b097c6c334
3819+
489cf46fbba26009d7ebc8ecaa0b155ac60e1f40cc381cd9c85ac7fb25f8458d
3820+
964bd6e1fc85d6e18bc0fa5491c6995fa7225dcfe43d6a12bde24343d16ce421
3821+
46cf26a5ec1fd7fae5d829e1f274819a10445ac106f5a517ab89e62455c02469
3822+
271812be18e972af7d5ba3079dc427f1b7ff7eda2d0cba55f28edef280f5d924
3823+
3466d1c6f9c4b671777c75c9464e571e7115d97d0d86712781e6346a4472c98d
3824+
a976032ff1073850e7304b6bb4b60b019a7bd870c8d3fb26b212ddfd889b9fae
3825+
"""))
3826+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3827+
3828+
# sanity check that the decrypted ciphertext is invalid
3829+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3830+
self.assertEqual(dec[0:3], b'\x00\x02\x00')
3831+
self.assertNotEqual(dec[-2:], b'\x60\xa8')
3832+
3833+
plaintext = a2b_hex(remove_whitespace("""
3834+
778f208b90bef0f260a8
3835+
"""))
3836+
self.assertEqual(len(plaintext), 10)
3837+
3838+
msg = self.priv_key.decrypt(ciphertext)
3839+
3840+
self.assertEqual(msg, plaintext)
3841+
3842+
def test_with_zero_byte_in_eight_byte_of_PS(self):
3843+
ciphertext = a2b_hex(remove_whitespace("""
3844+
3d4477615f8b49c9453d31a5d5a228610d6d3e476737c163725106fa386440ff
3845+
23a9139f57977c09a1e885ddf2f180ddf0f0b0502ef60f0ff53d2ba444f03228
3846+
20f11acdd70e48543bd8ddd40d00ad9214d03487b265910cf423dea905af9088
3847+
36bf56ef872493b686aa15731714d1f0280e5cddad24ada53374c8aad063184d
3848+
62bbdc00efd4839b8f06de6c258d26149480b2fad6fcb2fc97cd78fb60305aa2
3849+
54cf1186fa134741a2340dc1d5243423c82c442f3afd915241f317607a2e2236
3850+
64601932e7b967d6793a7fde2819d475e2b8ab0117e3cc4854063a0c1ff1f5cd
3851+
9c9dc3e6c993d8861c11ee7155dd0ba2d4f47ff0ffc9c7fc8a891284789e5988
3852+
806fe7b5f5ec5783861fef756ef7339380215de11337ec8f2379b293c3cacf2f
3853+
81691c1ad75c9223a6c8edfb0451373d0b759d9d701f547b3c46d3fe1f3d24d3
3854+
3447a52bb55b9dd7050c41d11f3108ddccd5738a072905eb48067350e76a65f0
3855+
d274b0f4bde004cb673b715d4ab01dded4b6b7f69e133135ffcad4b1776e3610
3856+
830ae55a98d23610256865e305153ad7319ff905c16453297f5ebe64b8857bff
3857+
69c750d338368f6a55d73ae363a516fa4bf719cd01d46b609c134e3508d9616f
3858+
495ff2c869db7ad146376b102529c26407d8ffdedbfb005b7b220e0dcb089da3
3859+
682c9af7c278472cc19b6523b09661fe6f165bd7b7765ca2524eefa3526397b0
3860+
"""))
3861+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3862+
3863+
# sanity check that the decrypted ciphertext is invalid
3864+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3865+
self.assertEqual(dec[0:2], b'\x00\x02')
3866+
self.assertTrue(all(i != 0 for i in dec[2:9]))
3867+
self.assertEqual(dec[9:10], b'\x00')
3868+
3869+
plaintext = a2b_hex(remove_whitespace("""
3870+
364cfecf7e70a0829f28
3871+
"""))
3872+
self.assertEqual(len(plaintext), 10)
3873+
3874+
msg = self.priv_key.decrypt(ciphertext)
3875+
3876+
self.assertEqual(msg, plaintext)
3877+
3878+
def test_invalid_with_no_padding_separator(self):
3879+
ciphertext = a2b_hex(remove_whitespace("""
3880+
44c5b648e960aed2ad38497b6af118577a7978db288c0019cb6f8818578021ca
3881+
0d782c4e87bd6c3a73ef89e379311f0d449410c336bffdc9d970f995e7b59789
3882+
10c230b1ef11c06cc5de6ee79ca2f85f6f14e5c42cbb8269d40c032b91783755
3883+
fbfa7b87f16790bfea91933c67d2499a3d815cb70142285449757e606a438752
3884+
b803b0928c28dab4fd21125e5b79af04fe912fb444d32039e9e0e10210fbe017
3885+
4f43e2833ab862e4370b007025a919cf7b9c11241cf95ab10a9baa44a7ce7fa6
3886+
e802c5b8e5c466dba52704fc2325317526f36d25842e130fcdbbc3c631a1e4c6
3887+
7d23ffcb2218065863c178526616e8429916dff9101baf71857901bdaf305d26
3888+
9c944994f9cf0e02a5499432324b90a62c3c78bd7a7821420a11c43d0a80ee39
3889+
68ab8a363d6e6476f5424ae98bd59352aa9842e8f42cb0a34da68eac9dd16cf7
3890+
04573007efc4b3fc97161c342c836ff781c331c306f61052d3877ab190e307f4
3891+
f8d63c3bc8f6ab9a6920f9d1b9be482d3096b0b02447f53b0f974693e2a49b73
3892+
3684d8e33d7dfbb60d3b1aae02c222c395209b1e2647e7fcbf3c44cdee9c7332
3893+
9ce9ed255e011847d6d2e119d252d57c72572b2a309472f059cdae1f24e9cf1f
3894+
fddebc70b8b252229c7c0adfa763bda2243840bc9a553b6a4ea7737c0a002261
3895+
b36e198fca4314f659ca1071aceb2668079d663e4ed40e15e10d764aa8cb0c68
3896+
"""))
3897+
self.assertEqual(len(ciphertext), numBytes(self.pub_key.n))
3898+
3899+
# sanity check that the decrypted ciphertext is invalid
3900+
dec = self.priv_key._raw_private_key_op_bytes(ciphertext)
3901+
self.assertEqual(dec[0:2], b'\x00\x02')
3902+
for val in dec[2:]:
3903+
self.assertNotEqual(val, 0)
3904+
3905+
plaintext = a2b_hex(remove_whitespace("""
3906+
750d91268328712552cd
3907+
"""))
3908+
self.assertEqual(len(plaintext), 10)
3909+
3910+
msg = self.priv_key.decrypt(ciphertext)
3911+
3912+
self.assertEqual(msg, plaintext)
3913+
35833914
def test_with_no_version_byte(self):
35843915
ciphertext = a2b_hex(remove_whitespace("""
35853916
6b11bd1777ac4f1d8f36a3ebd01090a4c2be1e2deb928cef6427c107f8cb1d70

0 commit comments

Comments
 (0)