blob: 0423f7d5dabf5ce25bdd87c7ecf2455e3947d8cd [file] [log] [blame]
manashsarmab7af8172020-07-16 05:05:44 -05001*** Settings ***
2
3Documentation VMI certificate exchange tests.
4
shrsuman1235fc20cb2021-02-02 04:55:47 -06005Library ../../lib/jobs_processing.py
manashsarmab7af8172020-07-16 05:05:44 -05006Resource ../../lib/resource.robot
7Resource ../../lib/bmc_redfish_resource.robot
8Resource ../../lib/openbmc_ffdc.robot
9Resource ../../lib/bmc_redfish_utils.robot
10Resource ../../lib/utils.robot
11
12Suite Setup Suite Setup Execution
13Test Teardown FFDC On Test Case Fail
14Suite Teardown Suite Teardown Execution
15
16
17*** Variables ***
18
19# users User Name password
20@{ADMIN} admin_user TestPwd123
21@{OPERATOR} operator_user TestPwd123
Prashanth Katti7ee28252020-09-17 01:55:17 -050022@{ReadOnly} readonly_user TestPwd123
23@{NoAccess} noaccess_user TestPwd123
24&{USERS} Administrator=${ADMIN} Operator=${OPERATOR} ReadOnly=${ReadOnly}
25... NoAccess=${NoAccess}
manashsarmab7af8172020-07-16 05:05:44 -050026${VMI_BASE_URI} /ibm/v1/
shrsuman1235fc20cb2021-02-02 04:55:47 -060027
manashsarmab7af8172020-07-16 05:05:44 -050028
29*** Test Cases ***
30
31Get CSR Request Signed By VMI And Verify
32 [Documentation] Get CSR request signed by VMI using different user roles and verify.
33 [Tags] Get_CSR_Request_Signed_By_VMI_And_Verify
Prashanth Katti7ee28252020-09-17 01:55:17 -050034 [Setup] Redfish Power On
manashsarmab7af8172020-07-16 05:05:44 -050035 [Template] Get Certificate Signed By VMI
36
37 # username password force_create valid_csr valid_status_code
38 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
Prashanth Katti7ee28252020-09-17 01:55:17 -050039
40 # Send CSR request from operator user.
manashsarmab7af8172020-07-16 05:05:44 -050041 operator_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
42
Prashanth Katti7ee28252020-09-17 01:55:17 -050043 # Send CSR request from ReadOnly user.
44 readonly_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
45
46 # Send CSR request from NoAccess user.
47 noaccess_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
48
manashsarmab7af8172020-07-16 05:05:44 -050049
50Get Root Certificate Using Different Privilege Users Roles
51 [Documentation] Get root certificate using different users.
52 [Tags] Get_Root_Certificate_Using_Different_Users
Prashanth Katti7ee28252020-09-17 01:55:17 -050053 [Setup] Redfish Power On
manashsarmab7af8172020-07-16 05:05:44 -050054 [Template] Get Root Certificate
55
56 # username password force_create valid_csr valid_status_code
Prashanth Katti7ee28252020-09-17 01:55:17 -050057 # Request root certificate from admin user.
manashsarmab7af8172020-07-16 05:05:44 -050058 admin_user TestPwd123 ${True} ${True} ${HTTP_OK}
Prashanth Katti7ee28252020-09-17 01:55:17 -050059
60 # Request root certificate from operator user.
manashsarmab7af8172020-07-16 05:05:44 -050061 operator_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
62
Prashanth Katti7ee28252020-09-17 01:55:17 -050063 # Request root certificate from ReadOnly user.
64 readonly_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
65
66 # Request root certificate from NoAccess user.
67 noaccess_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
68
69
70Send CSR Request When VMI Is Off And Verify
71 [Documentation] Send CSR signing request to VMI when it is off and expect an error.
72 [Tags] Get_CSR_Request_When_VMI_Is_Off_And_verify
73 [Setup] Redfish Power Off
74 [Template] Get Certificate Signed By VMI
75
76 # username password force_create valid_csr valid_status_code
77 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_INTERNAL_SERVER_ERROR}
78
79 # Send CSR request from operator user.
shrsuman1233f70a6a2021-04-08 04:48:07 -050080 operator_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
Prashanth Katti7ee28252020-09-17 01:55:17 -050081
82 # Send CSR request from ReadOnly user.
shrsuman1233f70a6a2021-04-08 04:48:07 -050083 readonly_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
Prashanth Katti7ee28252020-09-17 01:55:17 -050084
85 # Send CSR request from NoAccess user.
shrsuman1233f70a6a2021-04-08 04:48:07 -050086 noaccess_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
Prashanth Katti7ee28252020-09-17 01:55:17 -050087
shrsuman1231b1c2a42020-11-02 23:02:30 -060088Get Corrupted CSR Request Signed By VMI And Verify
89 [Documentation] Send corrupted CSR for signing and expect an error.
90 [Tags] Get_Corrupted_CSR_Request_Signed_By_VMI_And_Verify
91 [Setup] Redfish Power On
92 [Template] Get Certificate Signed By VMI
93
94 # username password force_create valid_csr valid_status_code
95 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
96
97 # Send CSR request from operator user.
98 operator_user TestPwd123 ${False} ${False} ${HTTP_FORBIDDEN}
99
100 # Send CSR request from ReadOnly user.
101 readonly_user TestPwd123 ${False} ${False} ${HTTP_FORBIDDEN}
102
103 # Send CSR request from NoAccess user.
104 noaccess_user TestPwd123 ${False} ${False} ${HTTP_FORBIDDEN}
105
shrsuman12368bdcae2021-01-18 00:38:25 -0600106Get Root Certificate When VMI Is Off And Verify
107 [Documentation] Get root certificate when vmi is off and verify.
108 [Tags] Get_Root_Certificate_When_VMI_Is_Off_And_Verify
109 [Setup] Redfish Power Off
110 [Template] Get Root Certificate
shrsuman1231b1c2a42020-11-02 23:02:30 -0600111
shrsuman12368bdcae2021-01-18 00:38:25 -0600112 # username password force_create valid_csr valid_status_code
113 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
114
115 # Request root certificate from operator user.
116 operator_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
117
118 # Request root certificate from ReadOnly user.
119 readonly_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
120
121 # Request root certificate from NoAccess user.
122 noaccess_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
123
124
125Get Root Certificate After BMC Reboot And Verify
126 [Documentation] Get root certificate after bmc reboot and verify.
127 [Tags] Get_Root_Certificate_After_BMC_Reboot_And_Verify
128 [Setup] Run Keywords OBMC Reboot (off) AND Redfish Power On
129 [Template] Get Root Certificate
130
131 # username password force_create valid_csr valid_status_code
132 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
133
134 # Request root certificate from operator user.
135 operator_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
136
137 # Request root certificate from ReadOnly user.
138 readonly_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
139
140 # Request root certificate from NoAccess user.
141 noaccess_user TestPwd123 ${False} ${True} ${HTTP_FORBIDDEN}
manashsarmab7af8172020-07-16 05:05:44 -0500142
shrsuman1235fc20cb2021-02-02 04:55:47 -0600143Get Concurrent Root Certificate Requests From Multiple Admin Users
144 [Documentation] Get multiple concurrent root certificate requests from multiple admins
145 ... and verify no errors.
146 [Tags] Get_Concurrent_Root_Certificate_Requests_From_Multiple_Admin_Users
147
148 FOR ${i} IN RANGE ${5}
149 ${dict}= Execute Process Multi Keyword ${5}
150 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
151 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
152 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
153 Dictionary Should Not Contain Value ${dict} False
154 ... msg=One or more operations has failed.
155 END
156
157Get Concurrent CSR Requests From Multiple Admin Users
158 [Documentation] Get multiple concurrent csr requests from multiple admins and verify no errors.
159 [Tags] Get_Concurrent_CSR_Requests_From_Multiple_Admin_Users
160
161 FOR ${i} IN RANGE ${5}
162 ${dict}= Execute Process Multi Keyword ${5}
163 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
164 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
165 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
166 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
167 Dictionary Should Not Contain Value ${dict} False
168 ... msg=One or more operations has failed.
169 END
170
171Get Concurrent Corrupted CSR Requests From Multiple Admin Users
172 [Documentation] Get multiple concurrent corrupted csr requests from multiple admins and verify no errors.
173 [Tags] Get_Concurrent_Corrupted_CSR_Requests_From_Multiple_Admin_Users
174
175 FOR ${i} IN RANGE ${5}
176 ${dict}= Execute Process Multi Keyword ${5}
177 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
178 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
179 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
180 Dictionary Should Not Contain Value ${dict} False
181 ... msg=One or more operations has failed.
182 END
183
shrsuman12382a9a312021-03-26 05:34:32 -0500184Get Concurrent Root Certificate Request From Operator Users
185 [Documentation] Get multiple concurrent root certificate from non admin users and verify no errors.
186 [Tags] Get_Concurrent_Root_Certificate_Request_From_Operator_Users
187
188 FOR ${i} IN RANGE ${5}
189 ${dict}= Execute Process Multi Keyword ${5}
190 ... Get Root Certificate operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
191 ... Get Root Certificate operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
192 ... Get Root Certificate operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
193 Dictionary Should Not Contain Value ${dict} False
194 ... msg=One or more operations has failed.
195 END
196
197Get Concurrent Root Certificate Request From Admin And Non Admin Users
198 [Documentation] Get multiple concurrent root certificate from admin and non admin users
199 ... and verify no errors.
200 [Tags] Get_Concurrent_Root_Certificate_Request_From_Admin_And_Non_Admin_Users
201
202 FOR ${i} IN RANGE ${5}
203 ${dict}= Execute Process Multi Keyword ${5}
204 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
205 ... Get Root Certificate operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
206 ... Get Root Certificate readonly_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
207 Dictionary Should Not Contain Value ${dict} False
208 ... msg=One or more operations has failed.
209 END
210
211Get Concurrent Root Certificate Request From Different Non Admin Users
212 [Documentation] Get multiple concurrent root certificate from different non admin users
213 ... and verify no errors.
214 [Tags] Get_Concurrent_Root_Certificate_Request_From_Different_Non_Admin_Users
215
216 FOR ${i} IN RANGE ${5}
217 ${dict}= Execute Process Multi Keyword ${5}
218 ... Get Root Certificate operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
219 ... Get Root Certificate readonly_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
220 ... Get Root Certificate noaccess_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
221 Dictionary Should Not Contain Value ${dict} False
222 ... msg=One or more operations has failed.
223 END
224
225Get Concurrent CSR Request From Operator Users
226 [Documentation] Get multiple concurrent csr request from non admin users and verify no errors.
227 [Tags] Get_Concurrent_CSR_Request_From_Operator_Users
228
229 FOR ${i} IN RANGE ${5}
230 ${dict}= Execute Process Multi Keyword ${5}
231 ... Get Certificate Signed By VMI operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
232 ... Get Certificate Signed By VMI operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
233 ... Get Certificate Signed By VMI operator_user TestPwd123 ${True} ${True} ${HTTP_FORBIDDEN}
234 Dictionary Should Not Contain Value ${dict} False
235 ... msg=One or more operations has failed.
236 END
237
shrsuman12394b36572021-03-10 03:15:53 -0600238Get Root Certificate And Send CSR Request Concurrently And Verify
239 [Documentation] Get root certificate and send csr request concurrently and
240 ... verify gets root and signed certificate.
241 [Tags] Get_Root_Certificate_And_Send_CSR_Request_Concurrently_And_Verify
242
243 FOR ${i} IN RANGE ${5}
244 ${dict}= Execute Process Multi Keyword ${5}
245 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
246 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
247 Dictionary Should Not Contain Value ${dict} False
248 ... msg=One or more operations has failed.
249 END
250
251Get Concurrent Root Certificate And Send CSR Request And Verify
252 [Documentation] Get concurrent root certificate and send csr request
253 ... and verify gets root certificate and signed certificate.
254 [Tags] Get_Concurrent_Root_Certificate_And_Send_CSR_Request_And_Verify
255
256 FOR ${i} IN RANGE ${5}
257 ${dict}= Execute Process Multi Keyword ${5}
258 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
259 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
260 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
261 Dictionary Should Not Contain Value ${dict} False
262 ... msg=One or more operations has failed.
263 END
264
265Get Root Certificate And Send Multiple CSR Requests Concurrently And Verify
266 [Documentation] Get root certificate and send multiple csr requests concurrently and
267 ... verify gets root certificate and signed certificates.
268 [Tags] Get_Root_Certificate_And_Send_Multiple_CSR_Requests_Concurrently_And_Verify
269
270 FOR ${i} IN RANGE ${5}
271 ${dict}= Execute Process Multi Keyword ${5}
272 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
273 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
274 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
275 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
276 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
277 Dictionary Should Not Contain Value ${dict} False
278 ... msg=One or more operations has failed.
279 END
280
281Get Root Certificate And Send Multiple Corrupted CSR Requests Concurrently And Verify
282 [Documentation] Get root certificate and send multiple corrupted csr requests concurrently and
283 ... verify gets root certificate and error for corrupted csr requests.
284 [Tags] Get_Root_Certificate_And_Send_Multiple_Corrupted_CSR_Requests_Concurrently_And_Verify
285
286 FOR ${i} IN RANGE ${5}
287 ${dict}= Execute Process Multi Keyword ${5}
288 ... Get Root Certificate ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${True} ${HTTP_OK}
289 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
290 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
291 ... Get Certificate Signed By VMI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${True} ${False} ${HTTP_INTERNAL_SERVER_ERROR}
292 Dictionary Should Not Contain Value ${dict} False
293 ... msg=One or more operations has failed.
294 END
295
manashsarmab7af8172020-07-16 05:05:44 -0500296*** Keywords ***
297
298Generate CSR String
299 [Documentation] Generate a csr string.
300
301 # Note: Generates and returns csr string.
shrsuman1235fc20cb2021-02-02 04:55:47 -0600302 ${csr_gen_time} = Get Current Date Time
303 ${CSR_FILE}= Catenate SEPARATOR=_ ${csr_gen_time} csr_server.csr
304 ${CSR_KEY}= Catenate SEPARATOR=_ ${csr_gen_time} csr_server.key
305 Set Test Variable ${CSR_FILE}
306 Set Test Variable ${CSR_KEY}
manashsarmab7af8172020-07-16 05:05:44 -0500307 ${ssl_cmd}= Set Variable openssl req -new -newkey rsa:2048 -nodes -keyout ${CSR_KEY} -out ${CSR_FILE}
308 ${ssl_sub}= Set Variable
309 ... -subj "/C=XY/ST=Abcd/L=Efgh/O=ABC/OU=Systems/CN=abc.com/emailAddress=xyz@xx.ABC.com"
310
311 # Run openssl command to create a new private key and use that to generate a CSR string
312 # in server.csr file.
313 ${output}= Run ${ssl_cmd} ${ssl_sub}
Prashanth Katti7ee28252020-09-17 01:55:17 -0500314 ${csr}= OperatingSystem.Get File ${CSR_FILE}
manashsarmab7af8172020-07-16 05:05:44 -0500315
316 [Return] ${csr}
317
318
319Send CSR To VMI And Get Signed
George Keishingf9248952021-05-28 07:52:37 -0500320 [Documentation] Upload CSR to VMI and get signed.
manashsarmab7af8172020-07-16 05:05:44 -0500321 [Arguments] ${csr} ${force_create} ${username} ${password}
322
323 # Description of argument(s):
324 # csr Certificate request from client to VMI.
325 # force_create Create a new REST session if True.
326 # username Username to create a REST session.
327 # password Password to create a REST session.
328
329 Run Keyword If "${XAUTH_TOKEN}" != "${EMPTY}" or ${force_create} == ${True}
330 ... Initialize OpenBMC rest_username=${username} rest_password=${password}
331
332 ${data}= Create Dictionary
333 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN}
334 ... Content-Type=application/json
335
336 ${cert_uri}= Set Variable ${VMI_BASE_URI}Host/Actions/SignCSR
337
338 # For SignCSR request, we need to pass CSR string generated by openssl command.
339 ${csr_data}= Create Dictionary CsrString ${csr}
340 Set To Dictionary ${data} data ${csr_data}
341
342 ${resp}= Post Request openbmc ${cert_uri} &{data} headers=${headers}
shrsuman1235fc20cb2021-02-02 04:55:47 -0600343 Log to console ${resp.content}
manashsarmab7af8172020-07-16 05:05:44 -0500344
345 [Return] ${resp}
346
347
348Get Root Certificate
349 [Documentation] Get root certificate from VMI.
350 [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD}
351 ... ${force_create}=${False} ${valid_csr}=${True} ${valid_status_code}=${HTTP_OK}
352
353 # Description of argument(s):
354 # cert_type Type of the certificate requesting. eg. root or SignCSR.
355 # username Username to create a REST session.
356 # password Password to create a REST session.
357 # force_create Create a new REST session if True.
358 # valid_csr Uses valid CSR string in the REST request if True.
359 # This is not applicable for root certificate.
360 # valid_status_code Expected status code from REST request.
361
362 Run Keyword If "${XAUTH_TOKEN}" != "${EMPTY}" or ${force_create} == ${True}
363 ... Initialize OpenBMC rest_username=${username} rest_password=${password}
364
365 ${data}= Create Dictionary
366 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN}
367 ... Content-Type=application/json
368
369 ${cert_uri}= Set Variable ${VMI_BASE_URI}Host/Certificate/root
370
371 ${resp}= Get Request openbmc ${cert_uri} &{data} headers=${headers}
372
373 Should Be Equal As Strings ${resp.status_code} ${valid_status_code}
374 Return From Keyword If ${resp.status_code} != ${HTTP_OK}
375
376 ${cert}= Evaluate json.loads('''${resp.text}''', strict=False) json
377 Should Contain ${cert["Certificate"]} BEGIN CERTIFICATE
378 Should Contain ${cert["Certificate"]} END CERTIFICATE
379
380
381Get Subject
382 [Documentation] Generate a csr string.
383 [Arguments] ${file_name} ${is_csr_file}
384
385 # Description of argument(s):
386 # file_name Name of CSR or signed CERT file.
387 # is_csr_file A True value means a CSR while a False is for signed CERT file.
388
389 ${subject}= Run Keyword If ${is_csr_file} Run openssl req -in ${file_name} -text -noout | grep Subject:
390 ... ELSE Run openssl x509 -in ${file_name} -text -noout | grep Subject:
391
392 [Return] ${subject}
393
394
395Get Public Key
396 [Documentation] Generate a csr string.
397 [Arguments] ${file_name} ${is_csr_file}
398
399 # Description of argument(s):
400 # file_name Name of CSR or CERT file.
401 # is_csr_file A True value means a CSR while a False is for signed CERT file.
402
403 ${PublicKey}= Run Keyword If ${is_csr_file} Run openssl req -in ${file_name} -noout -pubkey
404 ... ELSE Run openssl x509 -in ${file_name} -noout -pubkey
405
406 [Return] ${PublicKey}
407
408
409Get Certificate Signed By VMI
410 [Documentation] Get signed certificate from VMI.
411 [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD}
412 ... ${force_create}=${False} ${valid_csr}=${True} ${valid_status_code}=${HTTP_OK}
413
414 # Description of argument(s):
415 # cert_type Type of the certificate requesting. eg. root or SignCSR.
416 # username Username to create a REST session.
417 # password Password to create a REST session.
418 # force_create Create a new REST session if True.
419 # valid_csr Uses valid CSR string in the REST request if True.
420 # This is not applicable for root certificate.
421 # valid_status_code Expected status code from REST request.
422
423 Set Test Variable ${CSR} CSR
424 Set Test Variable ${CORRUPTED_CSR} CORRUPTED_CSR
425
426 ${CSR}= Generate CSR String
shrsuman1231b1c2a42020-11-02 23:02:30 -0600427 ${csr_left} ${csr_right}= Split String From Right ${CSR} == 1
428 ${CORRUPTED_CSR}= Catenate SEPARATOR= ${csr_left} \N ${csr_right}
manashsarmab7af8172020-07-16 05:05:44 -0500429
430 # For SignCSR request, we need to pass CSR string generated by openssl command
431 ${csr_str}= Set Variable If ${valid_csr} == ${True} ${CSR} ${CORRUPTED_CSR}
432
433 ${resp}= Send CSR To VMI And Get Signed ${csr_str} ${force_create} ${username} ${password}
434
435 Should Be Equal As Strings ${resp.status_code} ${valid_status_code}
436 Return From Keyword If ${resp.status_code} != ${HTTP_OK}
437
438 ${cert}= Evaluate json.loads('''${resp.text}''', strict=False) json
439 Should Contain ${cert["Certificate"]} BEGIN CERTIFICATE
440 Should Contain ${cert["Certificate"]} END CERTIFICATE
441
442 # Now do subject and public key verification
443 ${subject_csr}= Get Subject ${CSR_FILE} True
444 ${pubKey_csr}= Get Public Key ${CSR_FILE} True
445
446 # create a crt file with certificate string
447 ${signed_cert}= Set Variable ${cert["Certificate"]}
shrsuman1235fc20cb2021-02-02 04:55:47 -0600448 ${testcert_gen_time} = Get Current Date Time
449 ${test_cert_file}= Catenate SEPARATOR=_ ${testcert_gen_time} test_certificate.cert
manashsarmab7af8172020-07-16 05:05:44 -0500450
shrsuman1235fc20cb2021-02-02 04:55:47 -0600451 Create File ${test_cert_file} ${signed_cert}
452 ${subject_signed_csr}= Get Subject ${test_cert_file} False
453 ${pubKey_signed_csr}= Get Public Key ${test_cert_file} False
manashsarmab7af8172020-07-16 05:05:44 -0500454
455 Should be equal as strings ${subject_signed_csr} ${subject_csr}
456 Should be equal as strings ${pubKey_signed_csr} ${pubKey_csr}
457
458
459Suite Setup Execution
460 [Documentation] Suite setup execution.
461
shrsuman1235fc20cb2021-02-02 04:55:47 -0600462 Remove Files *.csr *.key *.cert
manashsarmab7af8172020-07-16 05:05:44 -0500463 # Create different user accounts.
464 Redfish.Login
shrsuman1235fc20cb2021-02-02 04:55:47 -0600465 Redfish Power On
manashsarmab7af8172020-07-16 05:05:44 -0500466 Create Users With Different Roles users=${USERS} force=${True}
467
468
469Suite Teardown Execution
470 [Documentation] Suite teardown execution.
471
shrsuman1235fc20cb2021-02-02 04:55:47 -0600472 Remove Files *.csr *.key *.cert
manashsarmab7af8172020-07-16 05:05:44 -0500473 Delete BMC Users Via Redfish users=${USERS}
474 Delete All Sessions
475 Redfish.Logout