| # Copyright (C) Jean-Paul Calderone |
| # See LICENSE for details. |
| # |
| # Stress tester for thread-related bugs in RSA and DSA key generation. 0.12 and |
| # older held the GIL during these operations. Subsequent versions release it |
| # during them. |
| |
| from threading import Thread |
| |
| from OpenSSL.crypto import TYPE_RSA, TYPE_DSA, PKey |
| |
| def generate_rsa(): |
| keys = [] |
| for i in range(100): |
| key = PKey() |
| key.generate_key(TYPE_RSA, 1024) |
| keys.append(key) |
| |
| def generate_dsa(): |
| keys = [] |
| for i in range(100): |
| key = PKey() |
| key.generate_key(TYPE_DSA, 512) |
| keys.append(key) |
| |
| |
| def main(): |
| threads = [] |
| for i in range(3): |
| t = Thread(target=generate_rsa, args=()) |
| threads.append(t) |
| t = Thread(target=generate_dsa, args=()) |
| threads.append(t) |
| |
| for t in threads: |
| t.start() |
| |
| main() |