Fix `created` millisecond precision in TLPs

A marking definition's `created` property doesn't require millisecond
preprecision, but for TLP markings the TLP instances provided in the
spec must be used and they all use millisecond precision.
stix2.0
Chris Lenk 2018-10-25 13:58:21 -04:00
parent 6613b55a43
commit db300d1f21
2 changed files with 9 additions and 1 deletions

View File

@ -11,7 +11,7 @@ from .constants import MARKING_DEFINITION_ID
EXPECTED_TLP_MARKING_DEFINITION = """{
"type": "marking-definition",
"id": "marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9",
"created": "2017-01-20T00:00:00Z",
"created": "2017-01-20T00:00:00.000Z",
"definition_type": "tlp",
"definition": {
"tlp": "white"

View File

@ -1,6 +1,7 @@
"""STIX 2 Common Data Types and Properties."""
from collections import OrderedDict
import copy
from ..base import _cls_init, _STIXBase
from ..markings import _MarkingsMixin
@ -124,6 +125,13 @@ class MarkingDefinition(_STIXBase, _MarkingsMixin):
except KeyError:
raise ValueError("definition_type must be a valid marking type")
if marking_type == TLPMarking:
# TLP instances in the spec have millisecond precision unlike other markings
self._properties = copy.deepcopy(self._properties)
self._properties.update([
('created', TimestampProperty(default=lambda: NOW, precision='millisecond')),
])
if not isinstance(kwargs['definition'], marking_type):
defn = _get_dict(kwargs['definition'])
kwargs['definition'] = marking_type(**defn)