| Jean-Paul Calderone | 5f2cd26 | 2012-04-03 15:04:55 -0400 | [diff] [blame] | 1 | # 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 | |
| 8 | from threading import Thread |
| 9 | |
| 10 | from OpenSSL.crypto import TYPE_RSA, TYPE_DSA, PKey |
| 11 | |
| Alex Gaynor | 0373718 | 2020-07-23 20:40:46 -0400 | [diff] [blame] | 12 | |
| Jean-Paul Calderone | 5f2cd26 | 2012-04-03 15:04:55 -0400 | [diff] [blame] | 13 | def 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 Gaynor | 0373718 | 2020-07-23 20:40:46 -0400 | [diff] [blame] | 20 | |
| Jean-Paul Calderone | 5f2cd26 | 2012-04-03 15:04:55 -0400 | [diff] [blame] | 21 | def 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 | |
| 29 | def 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 Gaynor | 0373718 | 2020-07-23 20:40:46 -0400 | [diff] [blame] | 40 | |
| Jean-Paul Calderone | 5f2cd26 | 2012-04-03 15:04:55 -0400 | [diff] [blame] | 41 | main() |