summaryrefslogtreecommitdiff
path: root/leakcheck/thread-key-gen.py
blob: 62e1a580860d24bf7084559b1d6fe769e6bdfbff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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()