diff --git a/docs/guide/creating.ipynb b/docs/guide/creating.ipynb index 5be60ed..92a3336 100644 --- a/docs/guide/creating.ipynb +++ b/docs/guide/creating.ipynb @@ -144,12 +144,12 @@ ".highlight .vm { color: #19177C } /* Name.Variable.Magic */\n", ".highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
{\n",
" "type": "indicator",\n",
- " "id": "indicator--dd10c6df-572f-4494-97c4-245af992a0fe",\n",
- " "created": "2019-05-10T16:25:11.193Z",\n",
- " "modified": "2019-05-10T16:25:11.193Z",\n",
+ " "id": "indicator--2f3d4926-163d-4aef-bcd2-19dea96916ae",\n",
+ " "created": "2019-05-13T13:14:48.509Z",\n",
+ " "modified": "2019-05-13T13:14:48.509Z",\n",
" "name": "File hash for malware variant",\n",
" "pattern": "[file:hashes.md5 = 'd41d8cd98f00b204e9800998ecf8427e']",\n",
- " "valid_from": "2019-05-10T16:25:11.193329Z",\n",
+ " "valid_from": "2019-05-13T13:14:48.509629Z",\n",
" "labels": [\n",
" "malicious-activity"\n",
" ]\n",
@@ -465,9 +465,9 @@
".highlight .vm { color: #19177C } /* Name.Variable.Magic */\n",
".highlight .il { color: #666666 } /* Literal.Number.Integer.Long */{\n",
" "type": "malware",\n",
- " "id": "malware--fbfbe336-cc8d-4b2e-8c87-567ed1bef476",\n",
- " "created": "2019-05-10T16:25:29.127Z",\n",
- " "modified": "2019-05-10T16:25:29.127Z",\n",
+ " "id": "malware--1f2aba70-f0ae-49cd-9267-6fcb1e43be67",\n",
+ " "created": "2019-05-13T13:15:04.698Z",\n",
+ " "modified": "2019-05-13T13:15:04.698Z",\n",
" "name": "Poison Ivy",\n",
" "labels": [\n",
" "remote-access-trojan"\n",
@@ -588,12 +588,12 @@
".highlight .vm { color: #19177C } /* Name.Variable.Magic */\n",
".highlight .il { color: #666666 } /* Literal.Number.Integer.Long */{\n",
" "type": "relationship",\n",
- " "id": "relationship--33be944d-2d23-4f73-b254-988cb7fbd2d5",\n",
- " "created": "2019-05-10T16:25:32.644Z",\n",
- " "modified": "2019-05-10T16:25:32.644Z",\n",
+ " "id": "relationship--80c174fa-36d1-47c2-9a9d-ce0c636bedcc",\n",
+ " "created": "2019-05-13T13:15:13.152Z",\n",
+ " "modified": "2019-05-13T13:15:13.152Z",\n",
" "relationship_type": "indicates",\n",
- " "source_ref": "indicator--dd10c6df-572f-4494-97c4-245af992a0fe",\n",
- " "target_ref": "malware--fbfbe336-cc8d-4b2e-8c87-567ed1bef476"\n",
+ " "source_ref": "indicator--2f3d4926-163d-4aef-bcd2-19dea96916ae",\n",
+ " "target_ref": "malware--1f2aba70-f0ae-49cd-9267-6fcb1e43be67"\n",
"}\n",
"
\n"
],
@@ -700,12 +700,12 @@
".highlight .vm { color: #19177C } /* Name.Variable.Magic */\n",
".highlight .il { color: #666666 } /* Literal.Number.Integer.Long */{\n",
" "type": "relationship",\n",
- " "id": "relationship--d0d3ff20-d0f4-4807-b4dd-692724801ce3",\n",
- " "created": "2019-05-10T16:25:34.989Z",\n",
- " "modified": "2019-05-10T16:25:34.989Z",\n",
+ " "id": "relationship--47395d23-dedd-45d4-8db1-c9ffaf44493d",\n",
+ " "created": "2019-05-13T13:15:16.566Z",\n",
+ " "modified": "2019-05-13T13:15:16.566Z",\n",
" "relationship_type": "indicates",\n",
- " "source_ref": "indicator--dd10c6df-572f-4494-97c4-245af992a0fe",\n",
- " "target_ref": "malware--fbfbe336-cc8d-4b2e-8c87-567ed1bef476"\n",
+ " "source_ref": "indicator--2f3d4926-163d-4aef-bcd2-19dea96916ae",\n",
+ " "target_ref": "malware--1f2aba70-f0ae-49cd-9267-6fcb1e43be67"\n",
"}\n",
"
\n"
],
@@ -810,26 +810,26 @@
".highlight .vm { color: #19177C } /* Name.Variable.Magic */\n",
".highlight .il { color: #666666 } /* Literal.Number.Integer.Long */{\n",
" "type": "bundle",\n",
- " "id": "bundle--feaf8f9f-3342-4613-954b-ae22235f8d0b",\n",
+ " "id": "bundle--388c9b2c-936c-420a-baa5-04f48d682a01",\n",
" "spec_version": "2.0",\n",
" "objects": [\n",
" {\n",
" "type": "indicator",\n",
- " "id": "indicator--dd10c6df-572f-4494-97c4-245af992a0fe",\n",
- " "created": "2019-05-10T16:25:11.193Z",\n",
- " "modified": "2019-05-10T16:25:11.193Z",\n",
+ " "id": "indicator--2f3d4926-163d-4aef-bcd2-19dea96916ae",\n",
+ " "created": "2019-05-13T13:14:48.509Z",\n",
+ " "modified": "2019-05-13T13:14:48.509Z",\n",
" "name": "File hash for malware variant",\n",
" "pattern": "[file:hashes.md5 = 'd41d8cd98f00b204e9800998ecf8427e']",\n",
- " "valid_from": "2019-05-10T16:25:11.193329Z",\n",
+ " "valid_from": "2019-05-13T13:14:48.509629Z",\n",
" "labels": [\n",
" "malicious-activity"\n",
" ]\n",
" },\n",
" {\n",
" "type": "malware",\n",
- " "id": "malware--fbfbe336-cc8d-4b2e-8c87-567ed1bef476",\n",
- " "created": "2019-05-10T16:25:29.127Z",\n",
- " "modified": "2019-05-10T16:25:29.127Z",\n",
+ " "id": "malware--1f2aba70-f0ae-49cd-9267-6fcb1e43be67",\n",
+ " "created": "2019-05-13T13:15:04.698Z",\n",
+ " "modified": "2019-05-13T13:15:04.698Z",\n",
" "name": "Poison Ivy",\n",
" "labels": [\n",
" "remote-access-trojan"\n",
@@ -837,12 +837,12 @@
" },\n",
" {\n",
" "type": "relationship",\n",
- " "id": "relationship--33be944d-2d23-4f73-b254-988cb7fbd2d5",\n",
- " "created": "2019-05-10T16:25:32.644Z",\n",
- " "modified": "2019-05-10T16:25:32.644Z",\n",
+ " "id": "relationship--80c174fa-36d1-47c2-9a9d-ce0c636bedcc",\n",
+ " "created": "2019-05-13T13:15:13.152Z",\n",
+ " "modified": "2019-05-13T13:15:13.152Z",\n",
" "relationship_type": "indicates",\n",
- " "source_ref": "indicator--dd10c6df-572f-4494-97c4-245af992a0fe",\n",
- " "target_ref": "malware--fbfbe336-cc8d-4b2e-8c87-567ed1bef476"\n",
+ " "source_ref": "indicator--2f3d4926-163d-4aef-bcd2-19dea96916ae",\n",
+ " "target_ref": "malware--1f2aba70-f0ae-49cd-9267-6fcb1e43be67"\n",
" }\n",
" ]\n",
"}\n",
@@ -869,7 +869,9 @@
"metadata": {},
"source": [
"### Creating Cyber Observable References\n",
- "Cyber Observable Objects have properties that can reference other Cyber Observable Objects. In order to create those references, use the ``_valid_refs`` property as shown in the following examples. There are two cases."
+ "Cyber Observable Objects have properties that can reference other Cyber Observable Objects. In order to create those references, use the ``_valid_refs`` property as shown in the following examples. It should be noted that ``_valid_refs`` is necessary when creating references to Cyber Observable Objects since some embedded references can only point to certain types, and ``_valid_refs`` helps ensure consistency. \n",
+ "\n",
+ "There are two cases."
]
},
{
diff --git a/stix2/test/v20/test_observed_data.py b/stix2/test/v20/test_observed_data.py
index 84cdf72..95daf22 100644
--- a/stix2/test/v20/test_observed_data.py
+++ b/stix2/test/v20/test_observed_data.py
@@ -960,6 +960,24 @@ def test_ip4_address_example():
assert ip4.resolves_to_refs == ["4", "5"]
+def test_ip4_address_valid_refs():
+ mac1 = stix2.v20.MACAddress(
+ value="a1:b2:c3:d4:e5:f6",
+ )
+ mac2 = stix2.v20.MACAddress(
+ value="a7:b8:c9:d0:e1:f2",
+ )
+
+ ip4 = stix2.v20.IPv4Address(
+ _valid_refs={"1": mac1, "2": mac2},
+ value="177.60.40.7",
+ resolves_to_refs=["1", "2"],
+ )
+
+ assert ip4.value == "177.60.40.7"
+ assert ip4.resolves_to_refs == ["1", "2"]
+
+
def test_ip4_address_example_cidr():
ip4 = stix2.v20.IPv4Address(value="198.51.100.0/24")