fix: Applying the interoperability parameter to UUIDs referenced in various SDOs & SROs

master
chrisr3d 2018-12-11 10:09:48 +01:00
parent 3ae38fe687
commit 3850a046ff
3 changed files with 32 additions and 2 deletions

View File

@ -135,7 +135,12 @@ class MarkingDefinition(_STIXBase, _MarkingsMixin):
if not isinstance(kwargs['definition'], marking_type):
defn = _get_dict(kwargs['definition'])
kwargs['definition'] = marking_type(**defn)
self._properties['id'].interoperability = kwargs.get('interoperability', False)
interoperability = kwargs.get('interoperability', False)
self._properties['id'].interoperability = interoperability
if kwargs.get('created_by_ref'):
self._properties['created_by_ref'].interoperability = interoperability
if kwargs.get('object_marking_refs'):
self._properties['object_marking_refs'].contained.interoperability = interoperability
super(MarkingDefinition, self).__init__(**kwargs)

View File

@ -22,6 +22,8 @@ class STIXDomainObject(_STIXBase, _MarkingsMixin):
self.__interoperability = interoperability
self._properties['id'].interoperability = interoperability
self._properties['created_by_ref'].interoperability = interoperability
if kwargs.get('object_marking_refs'):
self._properties['object_marking_refs'].contained.interoperability = interoperability
super(STIXDomainObject, self).__init__(*args, **kwargs)
@ -262,6 +264,11 @@ class Report(STIXDomainObject):
('granular_markings', ListProperty(GranularMarking)),
])
def __init__(self, *args, **kwargs):
self._properties['object_refs'].contained.interoperability = kwargs.get('interoperability', False)
super(Report, self).__init__(*args, **kwargs)
class ThreatActor(STIXDomainObject):
"""For more detailed information on this object's properties, see

View File

@ -12,7 +12,16 @@ from .common import ExternalReference, GranularMarking
class STIXRelationshipObject(_STIXBase, _MarkingsMixin):
pass
def __init__(self, *args, **kwargs):
interoperability = kwargs.get('interoperability', False)
self.__interoperability = interoperability
self._properties['id'].interoperability = interoperability
if kwargs.get('created_by_ref'):
self._properties['created_by_ref'].interoperability = interoperability
if kwargs.get('object_marking_refs'):
self._properties['object_marking_refs'].contained.interoperability = interoperability
super(STIXRelationshipObject, self).__init__(*args, **kwargs)
class Relationship(STIXRelationshipObject):
@ -49,6 +58,9 @@ class Relationship(STIXRelationshipObject):
kwargs['relationship_type'] = relationship_type
if target_ref and not kwargs.get('target_ref'):
kwargs['target_ref'] = target_ref
interoperability = kwargs.get('interoperability', False)
self._properties['source_ref'].interoperability = interoperability
self._properties['target_ref'].interoperability = interoperability
super(Relationship, self).__init__(**kwargs)
@ -85,5 +97,11 @@ class Sighting(STIXRelationshipObject):
# Allow sighting_of_ref as a positional arg.
if sighting_of_ref and not kwargs.get('sighting_of_ref'):
kwargs['sighting_of_ref'] = sighting_of_ref
interoperability = kwargs.get('interoperability', False)
self._properties['sighting_of_ref'].interoperability = interoperability
if kwargs.get('observed_data_refs'):
self._properties['observed_data_refs'].contained.interoperability = interoperability
if kwargs.get('where_sighted_refs'):
self._properties['where_sighted_refs'].contained.interoperability = interoperability
super(Sighting, self).__init__(**kwargs)