stix/
reference.rs

1use serde::{Deserialize, Serialize};
2use url::Url;
3
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub struct ExternalReference {
6    pub source_name: String,
7    #[serde(default, skip_serializing_if = "Option::is_none")]
8    pub external_id: Option<String>,
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    pub url: Option<Url>,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub description: Option<String>,
13}
14#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
15pub struct KillChainPhase {
16    pub kill_chain_name: String,
17    pub phase_name: String,
18}
19
20impl KillChainPhase {
21    /// Create a new phase reference to the `mitre-attack` kill chain.
22    pub fn mitre(phase_name: impl Into<String>) -> Self {
23        Self {
24            kill_chain_name: "mitre-attack".into(),
25            phase_name: phase_name.into(),
26        }
27    }
28}