Projekt

Obecné

Profil

Iteration 5 » Historie » Verze 6

Jan Pašek, 2021-04-22 15:40

1 1 Jan Pašek
h1. Iteration 5
2 2 Jan Pašek
3
4
*Target:* User-provided private key, List filtering and pagination, Robots
5
6
h2. Tasks
7
8 6 Jan Pašek
---
9
10 2 Jan Pašek
h3. User-provided key
11
12
The application shall provide a possibility to provide his own private key or to let the application generate a key with a user-selected password.
13
14 3 Jan Pašek
Req: FR 1.1.2, 1.1.3, 1.1.4, 2.1.2, 2.1.3, 2.1.4
15
16 2 Jan Pašek
h4.  GUI
17
18
* Web GUI - The certificate creation page shall contain a new checkbox "Generate key pair".
19
* Web GUI - The certificate creation page shall contain a text field to specify a password for the private key. 
20
21
h4. Core
22
23
* Rest API shall enable a PEM encoded PK to be specified within the request for creating a certificate.
24
* Rest API shall enable a password to be specified within the request for creating a certificate.
25
26
 * If a password is present in the request and the private key is not present, the server generates a key protected by the given passphrase.
27
 
28
 * If a password is not present in the request and the private key is present, the server uses the given key. However, the server must do a check if the private key is
29 4 Jan Pašek
   not protected by a passphrase -> if yes, an error response is returned.
30 2 Jan Pašek
31
 * If both password and key are not present, the server generates a key without passphrase protection.
32
33 1 Jan Pašek
 * If both password and key are present, the server uses the given key and checks whether the given passphrase decyphers the key-> if not an error response is returned.
34 4 Jan Pašek
35 6 Jan Pašek
---
36
37 4 Jan Pašek
h3. Validity check
38
39
The application shall provide an endpoint to verify the validity of the selected certificate.
40
41 5 Jan Pašek
Req: FR 1.3
42
43 4 Jan Pašek
h4. GUI
44
45
* Web GUI - The certificate details page provides an indication of certificate validity. 
46
47
h4. Core
48
49
* Rest API shall provide an endpoint /api/certificate/{id}/status to query certificate status
50
* The application shall distinguish three types of status: _valid_, _expired_, _revoked_
51 5 Jan Pašek
52 6 Jan Pašek
---
53
54 5 Jan Pašek
h3. Templating
55
56
Req: FR 8.1
57
58
h4. GUI
59
* Web GUI - The certificate creation page shall provide a text area, that enables the user to specify his own extensions that will be added into the certificate.
60
61
 * Specified extensions must follow the OpenSSL format
62
63
h4. Core
64
65
* Rest API endpoint for creating a certificate shall accept extensions specification that will be passed to bottom layers and written into the certificate.
66
* If the user specifies wrong extensions (not in compliance with the OpenSSL), the CryptographyService throws a CryptographyException, that must be intercepted by the controller and the server shall not 
67
  return code 500 in that case.
68
69 6 Jan Pašek
---
70
71 5 Jan Pašek
h3. Robots
72
73
* The Web GUI shall be tested using automatic tests.
74
* The tests shall utilize the Robots framework with the Selenium backend.
75
* The test cases shall follow the user stories (user stories may require to be updated).
76
* The tests must be integrated into the CI/CD pipeline.
77 6 Jan Pašek
78
---
79
80
h3. Filtering
81
82
The application shall enable certificate listing to be filtered and paginated.
83
84
Req: FR 4.2
85
86
h4. GUI
87
88
* The GUI shall provide checkboxes to select the following types of certificates: (Root CA, Intermediate CA, End Certificate)
89
* The GUI shall provide checkboxes to select the following usages: (SSL/TLS, authentication, digital signature, CA)
90
* _The GUI shall enable the certificate to be searched using a Common name_ - to be discussed
91
* The GUI shall paginate the certificate list results
92
93
h4. Core
94
95
* Rest API (GET /api/certificates) must enable to filter the certificates using certificate type (Root CA, Intermediate CA, End Certificate)
96
* Rest API (GET /api/certificates) must enable to filter the certificates using certificate usage (SSL/TLS, authentication, digital signature, CA)
97
* Rest API (GET /api/certificates) must enable to filter the certificates based on the common name
98
* Rest API (GET /api/certificates) must enable to paginate the results (page + certificates per page)