Skip to content

Commit baabcc7

Browse files
committed
add assert length check to decrypt_int
refactor to prevent code duplication
1 parent 63772a6 commit baabcc7

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

rsa/core.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,22 @@ def assert_int(var: int, name: str) -> None:
2828
raise TypeError("{} should be an integer, not {}".format(name, var.__class__))
2929

3030

31+
def assert_length(message: int, n: int) -> None:
32+
if message < 0:
33+
raise ValueError("Only non-negative numbers are supported")
34+
35+
if message >= n:
36+
raise OverflowError("The message %i is too long for n=%i" % (message, n))
37+
38+
3139
def encrypt_int(message: int, ekey: int, n: int) -> int:
3240
"""Encrypts a message using encryption key 'ekey', working modulo n"""
3341

3442
assert_int(message, "message")
3543
assert_int(ekey, "ekey")
3644
assert_int(n, "n")
3745

38-
if message < 0:
39-
raise ValueError("Only non-negative numbers are supported")
40-
41-
if message >= n:
42-
raise OverflowError("The message %i is too long for n=%i" % (message, n))
46+
assert_length(message, n)
4347

4448
return pow(message, ekey, n)
4549

@@ -51,6 +55,8 @@ def decrypt_int(cyphertext: int, dkey: int, n: int) -> int:
5155
assert_int(dkey, "dkey")
5256
assert_int(n, "n")
5357

58+
assert_length(cyphertext, n)
59+
5460
message = pow(cyphertext, dkey, n)
5561
return message
5662

0 commit comments

Comments
 (0)