8000 modified: Fixed a bug in rsa/core.py where the message should not … · sybrenstuvel/python-rsa@b94766f · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Apr 20, 2025. It is now read-only.

Commit b94766f

Browse files
Misaka-No-10032sybrenstuvel
authored andcommitted
modified: Fixed a bug in rsa/core.py where the message should not be equals to the modulus
modified: Added test cases in tests/test_integers.py
1 parent 5045b14 commit b94766f

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ __pycache__/
1818

1919
/build/
2020
/doc/_build/
21+
.vscode/settings.json

rsa/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def encrypt_int(message: int, ekey: int, n: int) -> int:
3636
if message < 0:
3737
raise ValueError("Only non-negative numbers are supported")
3838

39-
if message > n:
39+
if message >= n:
4040
raise OverflowError("The message %i is too long for n=%i" % (message, n))
4141

4242
return pow(message, ekey, n)

tests/test_integers.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,31 @@ def test_sign_verify(self):
4646
print("\tVerified: %d" % verified)
4747

4848
self.assertEqual(message, verified)
49+
50+
def test_extreme_values(self):
51+
# message < 0
52+
message = -1
53+
print("\n\tMessage: %d" % message)
54+
55+
with self.assertRaises(ValueError):
56+
rsa.core.encrypt_int(message, self.pub.e, self.pub.n)
57+
58+
# message == 0
59+
message = 0
60+
print("\n\tMessage: %d" % message)
61+
62+
encrypted = rsa.core.encrypt_int(message, self.pub.e, self.pub.n)
63+
print("\tEncrypted: %d" % encrypted)
64+
65+
decrypted = rsa.core.decrypt_int(encrypted, self.priv.d, self.pub.n)
66+
print("\tDecrypted: %d" % decrypted)
67+
68+
self.assertEqual(message, decrypted)
69+
70+
# message >= n
71+
message = self.pub.n
72+
print("\n\tMessage: %d" % message)
73+
74+
with self.assertRaises(OverflowError):
75+
rsa.core.encrypt_int(message, self.pub.e, self.pub.n)
76+

0 commit comments

Comments
 (0)
0