blob: 346ad7b2f18d9ce3cb18d0bdccc9245b7fa51dac [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
Alex Gaynor03737182020-07-23 20:40:46 -040012
Jean-Paul Calderone5f2cd262012-04-03 15:04:55 -040013def generate_rsa():
14 keys = []
15 for i in range(100):
16 key = PKey()
17 key.generate_key(TYPE_RSA, 1024)
18 keys.append(key)
19
Alex Gaynor03737182020-07-23 20:40:46 -040020
Jean-Paul Calderone5f2cd262012-04-03 15:04:55 -040021def generate_dsa():
22 keys = []
23 for i in range(100):
24 key = PKey()
25 key.generate_key(TYPE_DSA, 512)
26 keys.append(key)
27
28
29def main():
30 threads = []
31 for i in range(3):
32 t = Thread(target=generate_rsa, args=())
33 threads.append(t)
34 t = Thread(target=generate_dsa, args=())
35 threads.append(t)
36
37 for t in threads:
38 t.start()
39
Alex Gaynor03737182020-07-23 20:40:46 -040040
Jean-Paul Calderone5f2cd262012-04-03 15:04:55 -040041main()