blob: 62e1a580860d24bf7084559b1d6fe769e6bdfbff [file] [log] [blame]
Jean-Paul Calderone5f2cd262012-04-03 15:04:55 -04001# Copyright (C) Jean-Paul Calderone
2# See LICENSE for details.
3#
4# Stress tester for thread-related bugs in RSA and DSA key generation. 0.12 and
5# older held the GIL during these operations. Subsequent versions release it
6# during them.
7
8from threading import Thread
9
10from OpenSSL.crypto import TYPE_RSA, TYPE_DSA, PKey
11
12def generate_rsa():
13 keys = []
14 for i in range(100):
15 key = PKey()
16 key.generate_key(TYPE_RSA, 1024)
17 keys.append(key)
18
19def generate_dsa():
20 keys = []
21 for i in range(100):
22 key = PKey()
23 key.generate_key(TYPE_DSA, 512)
24 keys.append(key)
25
26
27def main():
28 threads = []
29 for i in range(3):
30 t = Thread(target=generate_rsa, args=())
31 threads.append(t)
32 t = Thread(target=generate_dsa, args=())
33 threads.append(t)
34
35 for t in threads:
36 t.start()
37
38main()