Open SCAP Library
xccdf_session.h
Go to the documentation of this file.
1 
12 /*
13  * Copyright 2013 Red Hat Inc., Durham, North Carolina.
14  * All Rights Reserved.
15  *
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  *
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24  * Lesser General Public License for more details.
25  *
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29  *
30  */
31 
32 #ifndef XCCDF_SESSION_H_
33 #define XCCDF_SESSION_H_
34 
35 #include "xccdf_policy.h"
36 #include "oscap_download_cb.h"
37 #include "oscap_export.h"
38 
43 struct xccdf_session;
44 
50 typedef enum {
51  XCCDF_SESSION_LOAD_NONE = 0,
52  XCCDF_SESSION_LOAD_XCCDF = 1 << 0,
53  XCCDF_SESSION_LOAD_CPE = 1 << 1,
54  XCCDF_SESSION_LOAD_OVAL = 1 << 2,
55  XCCDF_SESSION_LOAD_CHECK_ENGINE_PLUGINS = 1 << 3,
56  XCCDF_SESSION_LOAD_ALL = XCCDF_SESSION_LOAD_XCCDF | XCCDF_SESSION_LOAD_CPE | XCCDF_SESSION_LOAD_OVAL | XCCDF_SESSION_LOAD_CHECK_ENGINE_PLUGINS
58 
66 OSCAP_API struct xccdf_session *xccdf_session_new(const char *filename);
67 
76 
82 OSCAP_API void xccdf_session_free(struct xccdf_session *session);
83 
88 OSCAP_API const char *xccdf_session_get_filename(const struct xccdf_session *session);
89 
96 OSCAP_API bool xccdf_session_is_sds(const struct xccdf_session *session);
97 
105 OSCAP_API void xccdf_session_set_rule(struct xccdf_session *session, const char *rule);
106 
118 
126 
133 OSCAP_API void xccdf_session_set_signature_enforcement(struct xccdf_session *session, bool enforce);
134 
143 OSCAP_API void xccdf_session_set_thin_results(struct xccdf_session *session, bool thin_result);
144 
153 OSCAP_API void xccdf_session_set_datastream_id(struct xccdf_session *session, const char *datastream_id);
154 
160 OSCAP_API const char *xccdf_session_get_datastream_id(struct xccdf_session *session);
161 
170 OSCAP_API void xccdf_session_set_component_id(struct xccdf_session *session, const char *component_id);
171 
177 OSCAP_API const char *xccdf_session_get_component_id(struct xccdf_session *session);
178 
185 OSCAP_API void xccdf_session_set_benchmark_id(struct xccdf_session *session, const char *benchmark_id);
186 
192 OSCAP_API const char *xccdf_session_get_benchmark_id(struct xccdf_session *session);
193 
198 OSCAP_API const char *xccdf_session_get_result_id(struct xccdf_session *session);
199 
207 OSCAP_API void xccdf_session_set_user_cpe(struct xccdf_session *session, const char *user_cpe);
208 
216 OSCAP_API void xccdf_session_set_user_tailoring_file(struct xccdf_session *session, const char *user_tailoring_file);
217 
225 OSCAP_API void xccdf_session_set_user_tailoring_cid(struct xccdf_session *session, const char *user_tailoring_cid);
226 
235 OSCAP_API void xccdf_session_set_remote_resources(struct xccdf_session *session, bool allowed, download_progress_calllback_t callback);
236 
244 
253 OSCAP_API void xccdf_session_set_custom_oval_files(struct xccdf_session *session, char **oval_filenames);
254 
263 
271 OSCAP_API bool xccdf_session_set_product_cpe(struct xccdf_session *session, const char *product_cpe);
272 
280 
287 OSCAP_API void xccdf_session_set_oval_results_export(struct xccdf_session *session, bool to_export_oval_results);
288 
295 OSCAP_API void xccdf_session_set_check_engine_plugins_results_export(struct xccdf_session *session, bool to_export_results);
296 
303 OSCAP_API void xccdf_session_set_oval_variables_export(struct xccdf_session *session, bool to_export_oval_variables);
304 
312 OSCAP_API bool xccdf_session_set_xccdf_export(struct xccdf_session *session, const char *xccdf_file);
313 
322 
330 OSCAP_API bool xccdf_session_set_arf_export(struct xccdf_session *session, const char *arf_file);
331 
339 OSCAP_API bool xccdf_session_set_report_export(struct xccdf_session *session, const char *report_file);
340 
348 OSCAP_API bool xccdf_session_set_profile_id(struct xccdf_session *session, const char *profile_id);
349 
358 OSCAP_API int xccdf_session_set_profile_id_by_suffix(struct xccdf_session *session, const char *profile_suffix);
359 
365 OSCAP_API const char *xccdf_session_get_profile_id(struct xccdf_session *session);
366 
374 OSCAP_API struct ds_sds_index *xccdf_session_get_sds_idx(struct xccdf_session *session);
375 
383 OSCAP_API int xccdf_session_load(struct xccdf_session *session);
384 
397 OSCAP_API int xccdf_session_load_xccdf(struct xccdf_session *session);
398 
406 OSCAP_API int xccdf_session_load_cpe(struct xccdf_session *session);
407 
414 OSCAP_API int xccdf_session_load_oval(struct xccdf_session *session);
415 
430 OSCAP_API int xccdf_session_load_check_engine_plugin2(struct xccdf_session *session, const char* plugin_name, bool quiet);
431 OSCAP_API int xccdf_session_load_check_engine_plugin(struct xccdf_session *session, const char* plugin_name);
432 
443 OSCAP_API int xccdf_session_load_check_engine_plugins(struct xccdf_session *session);
444 
451 OSCAP_API int xccdf_session_load_tailoring(struct xccdf_session *session);
452 
459 OSCAP_API int xccdf_session_evaluate(struct xccdf_session *session);
460 
467 OSCAP_API int xccdf_session_export_xccdf(struct xccdf_session *session);
468 
475 OSCAP_API int xccdf_session_export_oval(struct xccdf_session *session);
476 
485 OSCAP_API int xccdf_session_export_check_engine_plugins(struct xccdf_session *session);
486 
493 OSCAP_API int xccdf_session_export_arf(struct xccdf_session *session);
494 
502 OSCAP_API struct xccdf_policy_model *xccdf_session_get_policy_model(const struct xccdf_session *session);
503 
510 OSCAP_API struct xccdf_policy *xccdf_session_get_xccdf_policy(const struct xccdf_session *session);
511 
518 OSCAP_API float xccdf_session_get_base_score(const struct xccdf_session *session);
519 
526 OSCAP_API unsigned int xccdf_session_get_oval_agents_count(const struct xccdf_session *session);
527 
536 OSCAP_API unsigned int xccdf_session_get_cpe_oval_agents_count(const struct xccdf_session *session);
537 
544 OSCAP_API bool xccdf_session_contains_fail_result(const struct xccdf_session *session);
545 
554 OSCAP_API int xccdf_session_remediate(struct xccdf_session *session);
555 
566 OSCAP_API int xccdf_session_build_policy_from_testresult(struct xccdf_session *session, const char *testresult_id);
567 
575 OSCAP_API int xccdf_session_add_report_from_source(struct xccdf_session *session, struct oscap_source *report_source);
576 
583 OSCAP_API int xccdf_session_generate_guide(struct xccdf_session *session, const char *outfile);
584 
594 OSCAP_API int xccdf_session_export_all(struct xccdf_session *session);
595 
598 #endif
OSCAP_API void xccdf_session_set_without_sys_chars_export(struct xccdf_session *session, bool without_sys_chars)
Set whether the System Characteristics shall be exported in result files.
Definition: xccdf_session.c:470
OSCAP_API unsigned int xccdf_session_get_cpe_oval_agents_count(const struct xccdf_session *session)
Get count of OVAL agent sessions for CPE in the xccdf_session.
Definition: xccdf_session.c:1790
OSCAP_API bool xccdf_session_set_arf_export(struct xccdf_session *session, const char *arf_file)
Set where to export ARF file.
Definition: xccdf_session.c:490
OSCAP_API struct xccdf_session * xccdf_session_new(const char *filename)
Costructor of xccdf_session.
Definition: xccdf_session.c:180
OSCAP_API int xccdf_session_load_oval(struct xccdf_session *session)
Load and parse OVAL definitions files for the XCCDF session.
Definition: xccdf_session.c:1109
A structure encapsulating the context of XCCDF operations.
Definition: xccdf_session.c:69
OSCAP_API const char * xccdf_session_get_result_id(struct xccdf_session *session)
Retrieves the result id.
Definition: xccdf_session.c:434
OSCAP_API struct xccdf_policy * xccdf_session_get_xccdf_policy(const struct xccdf_session *session)
Get xccdf_policy of the session.
Definition: xccdf_session.c:1772
OSCAP_API void xccdf_session_set_custom_oval_eval_fn(struct xccdf_session *session, xccdf_policy_engine_eval_fn eval_fn)
Set custom OVAL eval function to register with each OVAL session.
Definition: xccdf_session.c:458
OSCAP_API void xccdf_session_set_thin_results(struct xccdf_session *session, bool thin_result)
Set whether the thin results override is enabled.
Definition: xccdf_session.c:390
Open-scap XCCDF Policy library interface.
OSCAP_API bool xccdf_session_set_profile_id(struct xccdf_session *session, const char *profile_id)
Select XCCDF Profile for evaluation.
Definition: xccdf_session.c:518
OSCAP_API int xccdf_session_export_all(struct xccdf_session *session)
Export XCCDF results, ARF results and HTML report from the given XCCDF session based on values set in...
Definition: xccdf_session.c:1934
OSCAP_API void xccdf_session_set_signature_enforcement(struct xccdf_session *session, bool enforce)
Set XML signature enforcement.
Definition: xccdf_session.c:385
OSCAP_API void xccdf_session_set_oval_variables_export(struct xccdf_session *session, bool to_export_oval_variables)
Set whether the OVAL variables files shall be exported.
Definition: xccdf_session.c:480
char * xccdf_stig_viewer_file
Path to STIG Viewer XCCDF file to export.
Definition: xccdf_session.c:104
char * profile_id
Last selected profile.
Definition: xccdf_session.c:77
OSCAP_API int xccdf_session_export_arf(struct xccdf_session *session)
Export ARF (if enabled by xccdf_session_set_arf_export).
Definition: xccdf_session.c:1746
OSCAP_API bool xccdf_session_is_sds(const struct xccdf_session *session)
Query if the session is based on Source DataStream.
Definition: xccdf_session.c:364
OSCAP_API void xccdf_session_set_remote_resources(struct xccdf_session *session, bool allowed, download_progress_calllback_t callback)
Set properties of remote content.
Definition: xccdf_session.c:629
OSCAP_API int xccdf_session_evaluate(struct xccdf_session *session)
Evaluate XCCDF Policy.
Definition: xccdf_session.c:1304
char * xccdf_file
Path to XCCDF file to export.
Definition: xccdf_session.c:103
OSCAP_API int xccdf_session_load_check_engine_plugins(struct xccdf_session *session)
Load extra check engines (if any are available) to the XCCDF session.
Definition: xccdf_session.c:1220
OSCAP_API void xccdf_session_set_component_id(struct xccdf_session *session, const char *component_id)
Set requested component_id for this session.
Definition: xccdf_session.c:409
OSCAP_API const char * xccdf_session_get_benchmark_id(struct xccdf_session *session)
Retrieves the benchmark_id.
Definition: xccdf_session.c:429
OSCAP_API void xccdf_session_set_datastream_id(struct xccdf_session *session, const char *datastream_id)
Set requested datastream_id for this session.
Definition: xccdf_session.c:395
OSCAP_API const char * xccdf_session_get_component_id(struct xccdf_session *session)
Retrieves the component id.
Definition: xccdf_session.c:415
OSCAP_API void xccdf_session_set_loading_flags(struct xccdf_session *session, xccdf_session_loading_flags_t flags)
Disable or allow loading of depending content (OVAL, SCE, CPE)
XCCDF policy model structure contains xccdf_benchmark as reference to Benchmark element in XML file a...
Definition: xccdf_policy_priv.h:38
OSCAP_API struct xccdf_session * xccdf_session_new_from_source(struct oscap_source *source)
Costructor of xccdf_session.
Definition: xccdf_session.c:135
OSCAP_API int xccdf_session_export_oval(struct xccdf_session *session)
Export OVAL (result and variables) files.
Definition: xccdf_session.c:1669
char * report_file
Path to HTML file to eport.
Definition: xccdf_session.c:105
const char * rule
Single-rule feature: if not NULL, the session will work only with this one rule.
Definition: xccdf_session.c:71
OSCAP_API int xccdf_session_set_profile_id_by_suffix(struct xccdf_session *session, const char *profile_suffix)
Select XCCDF Profile for evaluation with only profile suffix as input.
Definition: xccdf_session.c:572
OSCAP_API int xccdf_session_export_check_engine_plugins(struct xccdf_session *session)
Export results (if any) from any check engine plugins that are loaded.
Definition: xccdf_session.c:1722
OSCAP_API void xccdf_session_set_rule(struct xccdf_session *session, const char *rule)
Set rule for session - if rule is not NULL, session will use only this one rule.
Definition: xccdf_session.c:369
OSCAP_API void xccdf_session_set_benchmark_id(struct xccdf_session *session, const char *benchmark_id)
Sets requested benchmark_id for this session.
Definition: xccdf_session.c:423
OSCAP_API int xccdf_session_add_report_from_source(struct xccdf_session *session, struct oscap_source *report_source)
Load xccdf:TestResult to the session from oscap_source.
Definition: xccdf_session.c:1881
Represents <data-stream-collection> element - the root element of each source datastream.
Definition: sds_index.c:214
OSCAP_API int xccdf_session_remediate(struct xccdf_session *session)
Run XCCDF Remediation.
Definition: xccdf_session.c:1825
char * user_cpe
Path to CPE dictionary required by user.
Definition: xccdf_session.c:112
OSCAP_API float xccdf_session_get_base_score(const struct xccdf_session *session)
Get the base score of the latest XCCDF evaluation in the session.
OSCAP_API int xccdf_session_export_xccdf(struct xccdf_session *session)
Export XCCDF file.
Definition: xccdf_session.c:1458
bool without_sys_chars
Shall system characteristics be exported?
Definition: xccdf_session.c:109
OSCAP_API int xccdf_session_load(struct xccdf_session *session)
Load and parse all XCCDF structures needed to evaluate this session.
Definition: xccdf_session.c:666
xccdf_test_result_type_t(* xccdf_policy_engine_eval_fn)(struct xccdf_policy *policy, const char *rule_id, const char *definition_id, const char *href_if, struct xccdf_value_binding_iterator *value_binding_it, struct xccdf_check_import_iterator *check_imports_it, void *user_data)
Type of function which implements OpenSCAP checking engine.
Definition: xccdf_policy.h:103
OSCAP_API int xccdf_session_build_policy_from_testresult(struct xccdf_session *session, const char *testresult_id)
Load xccdf:TestResult to the session from file and prepare session for remediation.
Definition: xccdf_session.c:1851
Definition: oscap_source.c:66
OSCAP_API bool xccdf_session_set_xccdf_export(struct xccdf_session *session, const char *xccdf_file)
Set where to export XCCDF file.
Definition: xccdf_session.c:497
OSCAP_API void xccdf_session_set_user_tailoring_file(struct xccdf_session *session, const char *user_tailoring_file)
Set path to custom Tailoring file for the session.
Definition: xccdf_session.c:445
OSCAP_API bool xccdf_session_set_product_cpe(struct xccdf_session *session, const char *product_cpe)
Set custom product CPE name.
Definition: xccdf_session.c:463
OSCAP_API int xccdf_session_load_tailoring(struct xccdf_session *session)
Load Tailoring file (if applicable) to the XCCDF session.
Definition: xccdf_session.c:1255
OSCAP_API bool xccdf_session_set_xccdf_stig_viewer_export(struct xccdf_session *session, const char *xccdf_stig_viewer_file)
Set where to export STIG Viewer XCCDF file.
Definition: xccdf_session.c:504
OSCAP_API void xccdf_session_set_user_cpe(struct xccdf_session *session, const char *user_cpe)
Set path to custom CPE dictionary for the session.
Definition: xccdf_session.c:439
OSCAP_API void xccdf_session_set_custom_oval_files(struct xccdf_session *session, char **oval_filenames)
Set custom oval files for this session.
Definition: xccdf_session.c:945
OSCAP_API int xccdf_session_load_check_engine_plugin2(struct xccdf_session *session, const char *plugin_name, bool quiet)
Load extra check engine from a plugin of given name to the XCCDF session.
Definition: xccdf_session.c:1194
const char * filename
File name of SCAP (SDS or XCCDF) file for this session.
Definition: xccdf_session.c:70
OSCAP_API bool xccdf_session_set_report_export(struct xccdf_session *session, const char *report_file)
Set where to export HTML Report file.
Definition: xccdf_session.c:511
char * arf_file
Path to ARF file to export.
Definition: xccdf_session.c:102
OSCAP_API void xccdf_session_set_user_tailoring_cid(struct xccdf_session *session, const char *user_tailoring_cid)
Set ID of Tailoring component for the session.
Definition: xccdf_session.c:452
OSCAP_API void xccdf_session_set_signature_validation(struct xccdf_session *session, bool validate)
Set XML signature validation.
Definition: xccdf_session.c:380
OSCAP_API int xccdf_session_generate_guide(struct xccdf_session *session, const char *outfile)
Generate HTML guide form a loaded XCCDF session.
Definition: xccdf_session.c:1893
XCCDF policy structure is abstract (class) structure of Profile element from benchmark.
Definition: xccdf_policy_priv.h:57
xccdf_session_loading_flags_t
Loading flags for XCCDF session.
Definition: xccdf_session.h:50
OSCAP_API int xccdf_session_load_cpe(struct xccdf_session *session)
Load and parse CPE dictionaries.
Definition: xccdf_session.c:860
OSCAP_API void xccdf_session_set_oval_results_export(struct xccdf_session *session, bool to_export_oval_results)
Set whether the OVAL result files shall be exported.
Definition: xccdf_session.c:475
OSCAP_API struct ds_sds_index * xccdf_session_get_sds_idx(struct xccdf_session *session)
Get Source DataStream index of the session.
Definition: xccdf_session.c:658
bool full_validation
True value indicates that every possible step will be validated by XSD.
Definition: xccdf_session.c:118
OSCAP_API const char * xccdf_session_get_profile_id(struct xccdf_session *session)
Retrieves ID of the profile that we will evaluate with, or NULL.
Definition: xccdf_session.c:614
char * product_cpe
CPE of scanner product.
Definition: xccdf_session.c:95
bool validate
False value indicates to skip any XSD validation.
Definition: xccdf_session.c:117
OSCAP_API bool xccdf_session_contains_fail_result(const struct xccdf_session *session)
Query if the result of evaluation contains FAIL, ERROR, or UNKNOWN rule-result elements.
Definition: xccdf_session.c:1808
struct oscap_source * source
Main source assigned with the main file (SDS or XCCDF)
Definition: xccdf_session.c:72
OSCAP_API const char * xccdf_session_get_filename(const struct xccdf_session *session)
Retrieves the filename the session was created with.
Definition: xccdf_session.c:359
OSCAP_API void xccdf_session_free(struct xccdf_session *session)
Destructor of xccdf_session.
Definition: xccdf_session.c:323
struct ds_sds_session * session
SDS Registry abstract structure.
Definition: xccdf_session.c:83
OSCAP_API unsigned int xccdf_session_get_oval_agents_count(const struct xccdf_session *session)
Get count of OVAL agent sessions not used for CPE in the xccdf_session.
Definition: xccdf_session.c:1781
OSCAP_API void xccdf_session_set_check_engine_plugins_results_export(struct xccdf_session *session, bool to_export_results)
Set that check engine plugin&#39;s result files shall be exported.
Definition: xccdf_session.c:485
OSCAP_API struct xccdf_policy_model * xccdf_session_get_policy_model(const struct xccdf_session *session)
Get policy_model of the session.
OSCAP_API int xccdf_session_load_xccdf(struct xccdf_session *session)
Load and parse XCCDF file.
Definition: xccdf_session.c:805
OSCAP_API const char * xccdf_session_get_datastream_id(struct xccdf_session *session)
Retrieves the datastream id.
Definition: xccdf_session.c:401
OSCAP_API void xccdf_session_set_validation(struct xccdf_session *session, bool validate, bool full_validation)
Set XSD validation level to one of three possibilities:
Definition: xccdf_session.c:374