39 lines
868 B
Python
39 lines
868 B
Python
# 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()
|