2
2
import random
3
3
import sys
4
4
5
- from . import cryptomath_module as cryptoMath
6
- from . import rabin_miller as rabinMiller
5
+ from . import cryptomath_module as cryptomath
6
+ from . import rabin_miller
7
7
8
8
min_primitive_root = 3
9
9
10
10
11
- def main ():
12
- print ("Making key files..." )
13
- makeKeyFiles ("elgamal" , 2048 )
14
- print ("Key files generation successful" )
15
-
16
-
17
11
# I have written my code naively same as definition of primitive root
18
12
# however every time I run this program, memory exceeded...
19
13
# so I used 4.80 Algorithm in
20
14
# Handbook of Applied Cryptography(CRC Press, ISBN : 0-8493-8523-7, October 1996)
21
15
# and it seems to run nicely!
22
- def primitiveRoot (p_val : int ) -> int :
16
+ def primitive_root (p_val : int ) -> int :
23
17
print ("Generating primitive root of p" )
24
18
while True :
25
19
g = random .randrange (3 , p_val )
@@ -30,20 +24,20 @@ def primitiveRoot(p_val: int) -> int:
30
24
return g
31
25
32
26
33
- def generateKey ( keySize : int ) -> (( int , int , int , int ), ( int , int )) :
27
+ def generate_key ( key_size : int ) -> tuple [ tuple [ int , int , int , int ], tuple [ int , int ]] :
34
28
print ("Generating prime p..." )
35
- p = rabinMiller .generateLargePrime (keySize ) # select large prime number.
36
- e_1 = primitiveRoot (p ) # one primitive root on modulo p.
29
+ p = rabin_miller .generateLargePrime (key_size ) # select large prime number.
30
+ e_1 = primitive_root (p ) # one primitive root on modulo p.
37
31
d = random .randrange (3 , p ) # private_key -> have to be greater than 2 for safety.
38
- e_2 = cryptoMath . findModInverse (pow (e_1 , d , p ), p )
32
+ e_2 = cryptomath . find_mod_inverse (pow (e_1 , d , p ), p )
39
33
40
- publicKey = (keySize , e_1 , e_2 , p )
41
- privateKey = (keySize , d )
34
+ public_key = (key_size , e_1 , e_2 , p )
35
+ private_key = (key_size , d )
42
36
43
- return publicKey , privateKey
37
+ return public_key , private_key
44
38
45
39
46
- def makeKeyFiles (name : str , keySize : int ):
40
+ def make_key_files (name : str , keySize : int ) -> None :
47
41
if os .path .exists ("%s_pubkey.txt" % name ) or os .path .exists (
48
42
"%s_privkey.txt" % name
49
43
):
@@ -55,7 +49,7 @@ def makeKeyFiles(name: str, keySize: int):
55
49
)
56
50
sys .exit ()
57
51
58
- publicKey , privateKey = generateKey (keySize )
52
+ publicKey , privateKey = generate_key (keySize )
59
53
print ("\n Writing public key to file %s_pubkey.txt..." % name )
60
54
with open ("%s_pubkey.txt" % name , "w" ) as fo :
61
55
fo .write (
@@ -67,5 +61,11 @@ def makeKeyFiles(name: str, keySize: int):
67
61
fo .write ("%d,%d" % (privateKey [0 ], privateKey [1 ]))
68
62
69
63
64
+ def main () -> None :
65
+ print ("Making key files..." )
66
+ make_key_files ("elgamal" , 2048 )
67
+ print ("Key files generation successful" )
68
+
69
+
70
70
if __name__ == "__main__" :
71
71
main ()
0 commit comments