def elevate_string(string): warn( "Results produced by the stix2-elevator are not for production purposes.", 201) clear_id_mapping() clear_pattern_mapping() validator_options = get_validator_options() try: output.set_level(validator_options.verbose) io = StringIO(string) stix_package = EntityParser().parse_xml(io) if not isinstance(stix_package, STIXPackage): raise TypeError("Must be an instance of stix.core.STIXPackage") setup_logger(stix_package.id_) json_string = json.dumps(convert_package( stix_package, get_option_value("package_created_by_id"), get_option_value("default_timestamp")), indent=4, separators=(',', ': '), sort_keys=True) validation_results = validate_string(json_string, validator_options) output.print_results(validation_results) return json_string except ValidationError as ex: output.error("Validation error occurred: '%s'" % ex, codes.EXIT_VALIDATION_ERROR) except OSError as ex: log.error(ex, extra={"ecode": 210})
def validate_stix2_string(json_string, validator_options, file_path=None): # Ensure the json_string is a Unicode text string. json.dumps() sometimes # returns a byte-"str" on Python 2. if isinstance(json_string, binary_type): json_string = json_string.decode("utf-8") results = validate_string(json_string, validator_options) fvr = FileValidationResults(results.is_valid, file_path, results) return fvr
def elevate_file(fn): # TODO: combine elevate_file, elevate_string and elevate_package global MESSAGES_GENERATED print( "Results produced by the stix2-elevator are not for production purposes." ) clear_id_mapping() clear_1x_markings_map() clear_pattern_cache() clear_object_id_mapping() clear_observable_mappings() cybox.utils.caches.cache_clear() MESSAGES_GENERATED = False validator_options = get_validator_options() try: output.set_level(validator_options.verbose) output.set_silent(validator_options.silent) container = stixmarx.parse(fn) stix_package = container.package set_option_value("marking_container", container) if not isinstance(stix_package, STIXPackage): raise TypeError("Must be an instance of stix.core.STIXPackage") setup_logger(stix_package.id_) warn( "Results produced by the stix2-elevator are not for production purposes.", 201) json_string = json.dumps(convert_package( stix_package, get_option_value("package_created_by_id"), get_option_value("default_timestamp")), indent=4, separators=(',', ': '), sort_keys=True) validation_results = validate_string(json_string, validator_options) output.print_results(validation_results) if get_option_value("policy") == "no_policy": return json_string else: if not MESSAGES_GENERATED and validation_results._is_valid: return json_string else: return None except ValidationError as ex: output.error("Validation error occurred: '%s'" % ex, codes.EXIT_VALIDATION_ERROR) except OSError as ex: log.error(ex)
def elevate_package(package): warn( "WARNING: Results produced by the stix-elevator are not for production purposes." ) clear_id_mapping() clear_pattern_mapping() if isinstance(package, STIXPackage): json_string = json.dumps(convert_package(package), indent=4, separators=(',', ': '), sort_keys=True) validation_results = validate_string(json_string, ValidationOptions()) print_results(validation_results) return json_string else: raise TypeError("Must be an instance of stix.core.STIXPackage")
def validate_stix2_string(json_string, validator_options, file_path=None): results = validate_string(json_string, validator_options) fvr = FileValidationResults(results.is_valid, file_path, results) return fvr