Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 87fd5afc

Přidáno uživatelem Stanislav Král před asi 4 roky(ů)

Re #8472 - Changed some parameter names in create_csr method and renamed make_csr_test.py to create_csr_test.py

Zobrazit rozdíly:

proj/services/cryptography.py
121 121

  
122 122
            return self.__run_for_output(args, proc_input=bytes(key, encoding="utf-8")).decode()
123 123

  
124
    def __create_csr(self, subject, subject_key, subject_key_pass=""):
124
    def __create_csr(self, subject, key, key_pass=""):
125 125
        """
126 126
        Creates a CSR (Certificate Signing Request)
127 127

  
128 128
        :param subject: an instance of <Subject> representing the subject to be added to the CSR
129
        :param subject_key: the private key of the subject to be used to generate the CSR
130
        :param subject_key_pass: passphrase of the subject's private key
129
        :param key: the private key of the subject to be used to generate the CSR
130
        :param key_pass: passphrase of the subject's private key
131 131
        :return: string containing the generated certificate signing request in PEM format
132 132
        """
133 133

  
......
137 137

  
138 138
        # add the passphrase even when None is passed. Otherwise when running tests with pytest some tests freeze
139 139
        # waiting for the passphrase to be typed in
140
        args.extend(["-passin", f"pass:{subject_key_pass}"])
140
        args.extend(["-passin", f"pass:{key_pass}"])
141 141

  
142
        return self.__run_for_output(args, proc_input=bytes(subject_key, encoding="utf-8")).decode()
142
        return self.__run_for_output(args, proc_input=bytes(key, encoding="utf-8")).decode()
143 143

  
144 144
    def __sign_csr(self, csr, issuer_pem, issuer_key, issuer_key_pass=None, extensions="", days=30):
145 145
        """
......
193 193
        :param days: number of days for which the certificate will be valid
194 194
        :return: string containing the generated certificate in PEM format
195 195
        """
196
        csr = self.__create_csr(subject, subject_key, subject_key_pass=subject_key_pass)
196
        csr = self.__create_csr(subject, subject_key, key_pass=subject_key_pass)
197 197
        return self.__sign_csr(csr, issuer_pem, issuer_key, issuer_key_pass=issuer_key_pass, extensions=extensions,
198 198
                               days=days)
199 199

  
proj/tests/services/cryptography/create_csr_test.py
1
import subprocess
2

  
3
from proj.model.subject import Subject
4

  
5

  
6
def get_csr_pem(csr):
7
    return subprocess.check_output(["openssl", "req", "-noout", "-text", "-verify", "-in", "-"],
8
                                   input=bytes(csr, encoding="utf-8"), stderr=subprocess.STDOUT).decode()
9

  
10

  
11
def test_make_csr(service):
12
    private_key = service.create_private_key()
13

  
14
    subject = Subject(common_name="foo", country="CZ")
15
    csr = service._CryptographyService__create_csr(subject, private_key)
16

  
17
    assert "Subject: CN = foo, C = CZ" in get_csr_pem(csr)
18

  
19

  
20
def test_make_csr_pkey_passphrase(service):
21
    private_key = service.create_private_key(passphrase="foobar")
22

  
23
    subject = Subject(common_name="foo", country="CZ", organization_unit="Mysterious Unit")
24
    csr = service._CryptographyService__create_csr(subject, private_key, key_pass="foobar")
25

  
26
    assert "Subject: CN = foo, C = CZ, OU = Mysterious Unit" in get_csr_pem(csr)
proj/tests/services/cryptography/make_csr_test.py
1
import subprocess
2

  
3
from proj.model.subject import Subject
4

  
5

  
6
def get_csr_pem(csr):
7
    return subprocess.check_output(["openssl", "req", "-noout", "-text", "-verify", "-in", "-"],
8
                                   input=bytes(csr, encoding="utf-8"), stderr=subprocess.STDOUT).decode()
9

  
10

  
11
def test_make_csr(service):
12
    private_key = service.create_private_key()
13

  
14
    subject = Subject(common_name="foo", country="CZ")
15
    csr = service._CryptographyService__create_csr(subject, private_key)
16

  
17
    assert "Subject: CN = foo, C = CZ" in get_csr_pem(csr)
18

  
19

  
20
def test_make_csr_pkey_passphrase(service):
21
    private_key = service.create_private_key(passphrase="foobar")
22

  
23
    subject = Subject(common_name="foo", country="CZ", organization_unit="Mysterious Unit")
24
    csr = service._CryptographyService__create_csr(subject, private_key, subject_key_pass="foobar")
25

  
26
    assert "Subject: CN = foo, C = CZ, OU = Mysterious Unit" in get_csr_pem(csr)

Také k dispozici: Unified diff