00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef XCCDF_ELEMENTS_H_
00024 #define XCCDF_ELEMENTS_H_
00025 #include <libxml/xmlreader.h>
00026 #include <stdbool.h>
00027 #include <time.h>
00028 #include "../common/util.h"
00029
00030 OSCAP_HIDDEN_START;
00031
00032 typedef enum {
00033 XCCDFE_ERROR = -1,
00034 XCCDFE_UNMATCHED = 0,
00035 XCCDFE_BENCHMARK,
00036 XCCDFE_GROUP,
00037 XCCDFE_RULE,
00038 XCCDFE_VALUE,
00039 XCCDFE_PROFILE,
00040 XCCDFE_TESTRESULT,
00041 XCCDFE_RESULT_BENCHMARK,
00042 XCCDFE_CHECK,
00043 XCCDFE_CHECK_IMPORT,
00044 XCCDFE_CHECK_EXPORT,
00045 XCCDFE_CHECK_CONTENT,
00046 XCCDFE_CHECK_CONTENT_REF,
00047 XCCDFE_CHOICES,
00048 XCCDFE_CHOICE,
00049 XCCDFE_COMPLEX_CHECK,
00050 XCCDFE_CONFLICTS,
00051 XCCDFE_CPE_LIST,
00052 XCCDFE_DEFAULT,
00053 XCCDFE_DESCRIPTION,
00054 XCCDFE_FACT,
00055 XCCDFE_FIX,
00056 XCCDFE_FIXTEXT,
00057 XCCDFE_FRONT_MATTER,
00058 XCCDFE_IDENT,
00059 XCCDFE_IDENTITY,
00060 XCCDFE_IMPACT_METRIC,
00061 XCCDFE_INSTANCE,
00062 XCCDFE_LOWER_BOUND,
00063 XCCDFE_MATCH,
00064 XCCDFE_MESSAGE,
00065 XCCDFE_METADATA,
00066 XCCDFE_MODEL,
00067 XCCDFE_NEW_RESULT,
00068 XCCDFE_NOTICE,
00069 XCCDFE_OLD_RESULT,
00070 XCCDFE_ORGANIZATION,
00071 XCCDFE_OVERRIDE,
00072 XCCDFE_PARAM,
00073 XCCDFE_PLAIN_TEXT,
00074 XCCDFE_PLATFORM,
00075 XCCDFE_CPE2_PLATFORMSPEC,
00076 XCCDFE_RESULT_PROFILE,
00077 XCCDFE_PROFILE_NOTE,
00078 XCCDFE_QUESTION,
00079 XCCDFE_RATIONALE,
00080 XCCDFE_REAR_MATTER,
00081 XCCDFE_REFERENCE,
00082 XCCDFE_REFINE_RULE,
00083 XCCDFE_REFINE_VALUE,
00084 XCCDFE_REMARK,
00085 XCCDFE_REQUIRES,
00086 XCCDFE_RESULT,
00087 XCCDFE_RULE_RESULT,
00088 XCCDFE_SCORE,
00089 XCCDFE_SELECT,
00090 XCCDFE_SET_VALUE,
00091 XCCDFE_SIGNATURE,
00092 XCCDFE_SOURCE,
00093 XCCDFE_STATUS,
00094 XCCDFE_SUB,
00095 XCCDFE_TARGET,
00096 XCCDFE_TARGET_ADDRESS,
00097 XCCDFE_TARGET_FACTS,
00098 XCCDFE_TITLE,
00099 XCCDFE_UPPER_BOUND,
00100 XCCDFE_VALUE_VAL,
00101 XCCDFE_VERSION,
00102 XCCDFE_WARNING,
00103 XCCDFE_END_
00104 } xccdf_element_t;
00105
00106 #define XCCDF_XMLNS "http://checklists.nist.gov/xccdf/1.1"
00107
00108 xccdf_element_t xccdf_element_get(xmlTextReaderPtr reader);
00109
00110 #define XCCDF_ASSERT_ELEMENT(reader, element) do { if (xccdf_element_get(reader) != element) return false; } while(false)
00111
00112 typedef enum {
00113 XCCDFA_NONE,
00114 XCCDFA_ABSTRACT,
00115 XCCDFA_AUTHENTICATED,
00116 XCCDFA_AUTHORITY,
00117 XCCDFA_CATEGORY,
00118 XCCDFA_CLUSTER_ID,
00119 XCCDFA_COMPLEXITY,
00120 XCCDFA_CONTEXT,
00121 XCCDFA_DATE,
00122 XCCDFA_DISRUPTION,
00123 XCCDFA_END_TIME,
00124 XCCDFA_EXPORT_NAME,
00125 XCCDFA_EXTENDS,
00126 XCCDFA_FIXREF,
00127 XCCDFA_HIDDEN,
00128 XCCDFA_HREF,
00129 XCCDFA_ID,
00130 XCCDFA_IDREF,
00131 XCCDFA_IID,
00132 XCCDFA_IMPORT_NAME,
00133 XCCDFA_INTERACTIVE,
00134 XCCDFA_INTERFACEHINT,
00135 XCCDFA_MULTIPLE,
00136 XCCDFA_MUSTMATCH,
00137 XCCDFA_NAME,
00138 XCCDFA_NEGATE,
00139 XCCDFA_NOTE_TAG,
00140 XCCDFA_OPERATOR,
00141 XCCDFA_OVERRIDE,
00142 XCCDFA_PARENTCONTEXT,
00143 XCCDFA_PLATFORM,
00144 XCCDFA_PRIVILEDGED,
00145 XCCDFA_PROHIBITCHANGES,
00146 XCCDFA_REBOOT,
00147 XCCDFA_RESOLVED,
00148 XCCDFA_ROLE,
00149 XCCDFA_SELECTED,
00150 XCCDFA_SELECTOR,
00151 XCCDFA_SEVERITY,
00152 XCCDFA_START_TIME,
00153 XCCDFA_STRATEGY,
00154 XCCDFA_STYLE,
00155 XCCDFA_STYLE_HREF,
00156 XCCDFA_SYSTEM,
00157 XCCDFA_TAG,
00158 XCCDFA_TEST_SYSTEM,
00159 XCCDFA_TIME,
00160 XCCDFA_TYPE,
00161 XCCDFA_UPDATE,
00162 XCCDFA_URI,
00163 XCCDFA_VALUE_ID,
00164 XCCDFA_WEIGHT,
00165 XCCDFA_END_
00166 } xccdf_attribute_t;
00167
00168 bool xccdf_attribute_has(xmlTextReaderPtr reader, xccdf_attribute_t attr);
00169 const char *xccdf_attribute_get(xmlTextReaderPtr reader, xccdf_attribute_t attr);
00170 char *xccdf_attribute_copy(xmlTextReaderPtr reader, xccdf_attribute_t attr);
00171 bool xccdf_attribute_get_bool(xmlTextReaderPtr reader, xccdf_attribute_t attr);
00172 int xccdf_attribute_get_int(xmlTextReaderPtr reader, xccdf_attribute_t attr);
00173 float xccdf_attribute_get_float(xmlTextReaderPtr reader, xccdf_attribute_t attr);
00174
00175
00176 extern const struct oscap_string_map XCCDF_BOOL_MAP[];
00177
00178 bool xccdf_to_start_element(xmlTextReaderPtr reader, int depth);
00179 char *xccdf_element_string_copy(xmlTextReaderPtr reader);
00180 const char *xccdf_element_string_get(xmlTextReaderPtr reader);
00181 int xccdf_element_depth(xmlTextReaderPtr reader);
00182
00183 void xccdf_print_depth(int depth);
00184 void xccdf_print_max(const char *str, int max, const char *ellipsis);
00185 char *xccdf_get_xml(xmlTextReaderPtr reader);
00186
00187 time_t xccdf_get_date(const char *date);
00188 time_t xccdf_get_datetime(const char *date);
00189
00190 OSCAP_HIDDEN_END;
00191
00192 #endif