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 | |
| 12 | def 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 | |
| 19 | def 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 | |
| 27 | def 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 | |
| 38 | main() |