cddl 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c877883cb125426e061f527ba4375c0f021d70dfef060336fe0bb0f5e2ca3d4
4
- data.tar.gz: 7a3dc4065f3616bf57c229b410782b35140018ecada4418c0ef45056c62aef0b
3
+ metadata.gz: 2864bab5890244b179dd65b3508fa3138f9e5a1d7fbb8a3843090c60212a66bf
4
+ data.tar.gz: 5e501ebd3d42e3236a03375586c64a03d3f6db390fa5827cf91f100d6d8a1e4c
5
5
  SHA512:
6
- metadata.gz: b3987fbe82e80dddba2f650b1a12941ed6092708297302cf1a78dfe45b20b79d08e85901cb8739b5fc79eab8cde70ca8efb88698f4340da72c722a7a461565c6
7
- data.tar.gz: 68c35688bac9b30411ee419e171860c463df28c3452bce1741399274e51295b609e0acc8df54e9876037f9d96ba02e369fd9465c2fe7c38bb9682d5ec19018cd
6
+ metadata.gz: b973bc02bd23664027c8457f18e123e54f53da345381ec5099fc3b5c1f31d9c540ef765c217f237b43e426ab5ff8514f627230c3674f7fff39331f2f541aee54
7
+ data.tar.gz: ecb4f59bb8bd4c01a947557229c707f8ff47ebb1b7498cfafb0c5a9ced7b46fd7653186bee6d67585758687dcb0dea7e05d0cc1c5e84399b111fa4484e01a9de
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.8.8'
3
+ s.version = '0.8.9'
4
4
  s.summary = "CDDL generator and validator."
5
5
  s.description = %{A parser, generator, and validator for CDDL}
6
6
  s.add_dependency('cbor-diag')
@@ -19,3 +19,4 @@ spec = Gem::Specification.new do |s|
19
19
  s.homepage = "http://github.com/cabo/cddl"
20
20
  s.license = 'MIT'
21
21
  end
22
+
@@ -329,8 +329,12 @@ module CDDL
329
329
  unless kr
330
330
  case vr[0]
331
331
  when :grpent
332
- fail "grpent in map #{vr.inspect}" unless vr.size == 2
333
- g = Array.new(st) { generate1(vr[1], true) }.flatten(1)
332
+ # fail "grpent in map #{vr.inspect}" unless vr.size == 2
333
+ g = Array.new(st) {
334
+ vr[1..-1].map{ |vrx|
335
+ generate1(vrx, true)
336
+ }.flatten(1)
337
+ }.flatten(1)
334
338
  # warn "GGG #{g.inspect}"
335
339
  return g
336
340
  when :grpchoice
@@ -1142,7 +1146,7 @@ module CDDL
1142
1146
  end
1143
1147
  when :recurse_grpent # XXX we don't have the entry yet
1144
1148
  when :member
1145
- fail "map entry without member key given: #{member}" unless member[3] || member[4][0] == :grpent || member[4][0] == :grpchoice
1149
+ fail "map entry #{member.inspect} without member key given: #{member}" unless member[3] || member[4][0] == :grpent || member[4][0] == :grpchoice
1146
1150
  else
1147
1151
  fail ["type1 member", member].inspect unless member[0] == :member
1148
1152
  end
@@ -0,0 +1,136 @@
1
+ start = bundle
2
+
3
+ dtn-time = uint
4
+
5
+ creation-timestamp = [dtn-time, sequence: uint]
6
+
7
+ eid-generic = [uri-code, SSP: any]
8
+
9
+ uri-code = uint
10
+
11
+ eid = eid-choice .within eid-generic
12
+
13
+ eid-choice /= [dtn-code, SSP: (text / 0)]
14
+
15
+ dtn-code = 1 ; TBD
16
+
17
+ eid-choice /= [ipn-code, SSP: [nodenum: uint, servicenum: uint]]
18
+
19
+ ipn-code = 2 ; TBD
20
+
21
+ bundle-control-flags = uint .bits bundleflagbits
22
+
23
+ bundleflagbits = &(
24
+
25
+ reserved: 15
26
+
27
+ reserved: 14
28
+
29
+ reserved: 13
30
+
31
+ bundle-deletion-status-reports-are-requested: 12
32
+
33
+ bundle-delivery-status-reports-are-requested: 11
34
+
35
+ bundle-forwarding-status-reports-are-requested: 10
36
+
37
+ reserved: 9
38
+
39
+ bundle-reception-status-reports-are-requested: 8
40
+
41
+ bundle-contains-a-Manifest-block: 7
42
+
43
+ status-time-is-requested-in-all-status-reports: 6
44
+
45
+ user-application-acknowledgement-is-requested: 5
46
+
47
+ reserved: 4
48
+
49
+ reserved: 3
50
+
51
+ bundle-must-not-be-fragmented: 2
52
+
53
+ payload-is-an-administrative-record: 1
54
+
55
+ bundle-is-a-fragment: 0
56
+
57
+ )
58
+
59
+ crc = bytes
60
+
61
+ block-control-flags = uint .bits blockflagbits
62
+
63
+ blockflagbits = &(
64
+
65
+ reserved: 7
66
+
67
+ reserved: 6
68
+
69
+ reserved: 5
70
+
71
+ reserved: 4
72
+
73
+ bundle-must-be-deleted-if-block-cannot-be-processed: 3
74
+
75
+ status-report-must-be-transmitted-if-block-cannot-be-processed: 2
76
+
77
+ block-must-be-removed-from-bundle-if-it-cannot-be-processed: 1
78
+
79
+ block-must-be-replicated-in-every-fragment: 0
80
+
81
+ )
82
+
83
+ bundle = [primary-block, *extension-block, payload-block]
84
+
85
+ primary-block = [
86
+
87
+ version: 7,
88
+
89
+ bundle-control-flags,
90
+
91
+ crc-type: uint,
92
+
93
+ destination: eid,
94
+
95
+ source-node: eid,
96
+
97
+ report-to: eid,
98
+
99
+ creation-timestamp,
100
+
101
+ lifetime: uint,
102
+
103
+ ? fragment-offset: uint,
104
+
105
+ ? total-application-data-length: uint,
106
+
107
+ ? crc,
108
+
109
+ ]
110
+
111
+ canonical-block = [
112
+
113
+ block-type-code: uint,
114
+
115
+ canonical-block-common,
116
+
117
+ ? crc
118
+
119
+ ]
120
+
121
+ canonical-block-common = (
122
+
123
+ block-number: uint,
124
+
125
+ block-control-flags,
126
+
127
+ crc-type: uint,
128
+
129
+ block-type-specific-data: bytes
130
+
131
+ )
132
+
133
+
134
+ payload-block = ([block-type-code: 1, canonical-block-common, ?crc]) .within canonical-block
135
+
136
+ extension-block = ([block-type-code: (uint .ne 1), canonical-block-common, ?crc]) .within canonical-block
@@ -0,0 +1,181 @@
1
+ start = bundle / #6.55799(bundle)
2
+
3
+ ; Times before 2000 are invalid
4
+ dtn-time = uint
5
+
6
+ ; CRC enumerated type
7
+ crc-type = 0 / 1 / 2
8
+ ; Either 16-bit or 32-bit
9
+ crc-value = (bstr .size 2) / (bstr .size 4)
10
+
11
+ creation-timestamp = [dtn-time, sequence: uint]
12
+
13
+ eid = $eid-choice .within eid-structure
14
+ eid-structure = [
15
+ uri-code: uint,
16
+ SSP: any
17
+ ]
18
+ $eid-choice /= [
19
+ uri-code: 1,
20
+ SSP: (tstr / 0)
21
+ ]
22
+ $eid-choice /= [
23
+ uri-code: 2,
24
+ SSP: [
25
+ nodenum: uint,
26
+ servicenum: uint
27
+ ]
28
+ ]
29
+
30
+ bundle-control-flags = uint .bits bundleflagbits
31
+ bundleflagbits = &(
32
+ reserved: 15
33
+ reserved: 14
34
+ reserved: 13
35
+ bundle-deletion-status-reports-are-requested: 12
36
+ bundle-delivery-status-reports-are-requested: 11
37
+ bundle-forwarding-status-reports-are-requested: 10
38
+ reserved: 9
39
+ bundle-reception-status-reports-are-requested: 8
40
+ bundle-contains-a-Manifest-block: 7
41
+ status-time-is-requested-in-all-status-reports: 6
42
+ user-application-acknowledgement-is-requested: 5
43
+ reserved: 4
44
+ reserved: 3
45
+ bundle-must-not-be-fragmented: 2
46
+ payload-is-an-administrative-record: 1
47
+ bundle-is-a-fragment: 0
48
+ )
49
+
50
+ block-control-flags = uint .bits blockflagbits
51
+ blockflagbits = &(
52
+ reserved: 7
53
+ reserved: 6
54
+ reserved: 5
55
+ reserved: 4
56
+ bundle-must-be-deleted-if-block-cannot-be-processed: 3
57
+ status-report-must-be-transmitted-if-block-cannot-be-processed: 2
58
+ block-must-be-removed-from-bundle-if-it-cannot-be-processed: 1
59
+ block-must-be-replicated-in-every-fragment: 0
60
+ )
61
+
62
+ bundle = [primary-block, *extension-block, payload-block]
63
+
64
+ primary-block = [
65
+ version: 7,
66
+ bundle-control-flags,
67
+ crc-type,
68
+ destination: eid,
69
+ source-node: eid,
70
+ report-to: eid,
71
+ creation-timestamp,
72
+ lifetime: uint,
73
+ ? (
74
+ fragment-offset: uint,
75
+ ; total-application-data-length: uint,
76
+ )
77
+ ? crc-value,
78
+ ]
79
+
80
+ ; Abstract shared structure of all non-primary blocks
81
+ canonical-block-structure = [
82
+ block-type-code: uint,
83
+ block-number: uint,
84
+ block-control-flags,
85
+ crc-type,
86
+ ; Each block type defines the content within the bytestring
87
+ block-type-specific-data,
88
+ ? crc-value
89
+ ]
90
+ block-type-specific-data = bstr / #6.24(bstr)
91
+ ; Extension block type, which does not specialize any more than the code/number
92
+ extension-block = $extension-block-structure .within canonical-block-structure
93
+ $extension-block-structure = [
94
+ block-type-code: (uint .gt 1),
95
+ extension-block-number,
96
+ block-control-flags,
97
+ crc-type,
98
+ ($extension-block-data .within block-type-specific-data)
99
+ ? crc-value
100
+ ]
101
+ extension-block-number = (uint .ne 0)
102
+ ; Payload block type
103
+ payload-block = payload-block-structure .within canonical-block-structure
104
+ payload-block-structure = [
105
+ block-type-code: 1,
106
+ block-number: 0,
107
+ block-control-flags,
108
+ crc-type,
109
+ ($payload-block-data .within block-type-specific-data)
110
+ ? crc-value
111
+ ]
112
+
113
+ ; Arbitrary payload data
114
+ $payload-block-data /= bstr
115
+
116
+
117
+ ; Administrative record as a payload data specialization
118
+ $payload-block-data /= block-type-specific-data .cbor admin-record
119
+ admin-record = $admin-record .within admin-record-structure
120
+ admin-record-structure = [
121
+ record-type-code: uint,
122
+ record-content: any
123
+ ]
124
+ ; Only one defined record type
125
+ $admin-record /= [1, status-record-content]
126
+ status-record-content = [
127
+ bundle-status-information,
128
+ status-report-reason-code: uint,
129
+ source-node-eid: eid,
130
+ subject-creation-timestamp: creation-timestamp,
131
+ ? (
132
+ subject-payload-offset: uint,
133
+ subject-payload-length: uint
134
+ )
135
+ ]
136
+ bundle-status-information = [
137
+ reporting-node-received-bundle: status-info-content,
138
+ reporting-node-forwarded-bundle: status-info-content,
139
+ reporting-node-delivered-bundle: status-info-content,
140
+ reporting-node-deleted-bundle: status-info-content
141
+ ]
142
+ status-info-content = [
143
+ status-indicator: bool,
144
+ ? timestamp: dtn-time
145
+ ]
146
+
147
+ ; Previous Node extension block
148
+ $extension-block-structure /= [
149
+ block-type-code: 7,
150
+ extension-block-number,
151
+ block-control-flags,
152
+ crc-type,
153
+ (block-type-specific-data .cbor ext-data-previous-node)
154
+ ? crc-value
155
+ ]
156
+ ext-data-previous-node = eid
157
+
158
+ ; Bundle Age extension block
159
+ $extension-block-structure /= [
160
+ block-type-code: 8,
161
+ extension-block-number,
162
+ block-control-flags,
163
+ crc-type,
164
+ (block-type-specific-data .cbor ext-data-bundle-age)
165
+ ? crc-value
166
+ ]
167
+ ext-data-bundle-age = uint
168
+
169
+ ; Hop Count extension block
170
+ $extension-block-structure /= [
171
+ block-type-code: 9,
172
+ extension-block-number,
173
+ block-control-flags,
174
+ crc-type,
175
+ (block-type-specific-data .cbor ext-data-hop-count)
176
+ ? crc-value
177
+ ]
178
+ ext-data-hop-count = [
179
+ hop-limit: uint,
180
+ hop-count: uint
181
+ ]
@@ -0,0 +1,167 @@
1
+ start = bundle / #6.55799(bundle)
2
+
3
+ ; Times before 2000 are invalid
4
+ dtn-time = uint
5
+
6
+ ; CRC enumerated type
7
+ crc-type = 0 / 1 / 2
8
+ ; Either 16-bit or 32-bit
9
+ crc-value = (bstr .size 2) / (bstr .size 4)
10
+
11
+ creation-timestamp = [dtn-time, sequence: uint]
12
+
13
+ eid = $eid-choice .within eid-structure
14
+ eid-structure = [
15
+ uri-code: uint,
16
+ SSP: any
17
+ ]
18
+ $eid-choice /= [
19
+ uri-code: 1,
20
+ SSP: (tstr / 0)
21
+ ]
22
+ $eid-choice /= [
23
+ uri-code: 2,
24
+ SSP: [
25
+ nodenum: uint,
26
+ servicenum: uint
27
+ ]
28
+ ]
29
+
30
+ ; The root bundle array
31
+ bundle = [primary-block, *extension-block, payload-block]
32
+
33
+ primary-block = [
34
+ version: 7,
35
+ bundle-control-flags,
36
+ crc-type,
37
+ destination: eid,
38
+ source-node: eid,
39
+ report-to: eid,
40
+ creation-timestamp,
41
+ lifetime: uint,
42
+ ? (
43
+ fragment-offset: uint,
44
+ total-application-data-length: uint,
45
+ )
46
+ ? crc-value,
47
+ ]
48
+ bundle-control-flags = uint .bits bundleflagbits
49
+ bundleflagbits = &(
50
+ reserved: 15,
51
+ reserved: 14,
52
+ reserved: 13,
53
+ bundle-deletion-status-reports-are-requested: 12,
54
+ bundle-delivery-status-reports-are-requested: 11,
55
+ bundle-forwarding-status-reports-are-requested: 10,
56
+ reserved: 9,
57
+ bundle-reception-status-reports-are-requested: 8,
58
+ bundle-contains-a-Manifest-block: 7,
59
+ status-time-is-requested-in-all-status-reports: 6,
60
+ user-application-acknowledgement-is-requested: 5,
61
+ reserved: 4,
62
+ reserved: 3,
63
+ bundle-must-not-be-fragmented: 2,
64
+ payload-is-an-administrative-record: 1,
65
+ bundle-is-a-fragment: 0
66
+ )
67
+
68
+ ; Abstract shared structure of all non-primary blocks
69
+ canonical-block-structure = [
70
+ block-type-code: uint,
71
+ block-number: uint,
72
+ block-control-flags,
73
+ crc-type,
74
+ ; Each block type defines the content within the bytestring
75
+ block-type-specific-data,
76
+ ? crc-value
77
+ ]
78
+ block-control-flags = uint .bits blockflagbits
79
+ blockflagbits = &(
80
+ reserved: 7,
81
+ reserved: 6,
82
+ reserved: 5,
83
+ reserved: 4,
84
+ bundle-must-be-deleted-if-block-cannot-be-processed: 3,
85
+ status-report-must-be-transmitted-if-block-cannot-be-processed: 2,
86
+ block-must-be-removed-from-bundle-if-it-cannot-be-processed: 1,
87
+ block-must-be-replicated-in-every-fragment: 0
88
+ )
89
+ block-type-specific-data = bstr / #6.24(bstr)
90
+ ; Actual CBOR data embedded in a bytestring, with optional tag to indicate so
91
+ embedded-cbor<Item> = (bstr .cbor Item) / #6.24(bstr .cbor Item)
92
+
93
+ ; Extension block type, which does not specialize other than the code/number
94
+ extension-block = $extension-block-structure .within canonical-block-structure
95
+ ; Generic shared structure of all non-primary blocks
96
+ extension-block-use<CodeValue, BlockData> = [
97
+ block-type-code: CodeValue,
98
+ block-number: (uint .ne 0),
99
+ block-control-flags,
100
+ crc-type,
101
+ BlockData,
102
+ ? crc-value
103
+ ]
104
+
105
+ ; Payload block type
106
+ payload-block = payload-block-structure .within canonical-block-structure
107
+ payload-block-structure = [
108
+ block-type-code: 1,
109
+ block-number: 0,
110
+ block-control-flags,
111
+ crc-type,
112
+ $payload-block-data,
113
+ ? crc-value
114
+ ]
115
+
116
+ ; Arbitrary payload data, including non-CBOR bytestring
117
+ $payload-block-data /= block-type-specific-data
118
+
119
+
120
+ ; Administrative record as a payload data specialization
121
+ $payload-block-data /= embedded-cbor<admin-record>
122
+ admin-record = $admin-record .within admin-record-structure
123
+ admin-record-structure = [
124
+ record-type-code: uint,
125
+ record-content: any
126
+ ]
127
+ ; Only one defined record type
128
+ $admin-record /= [1, status-record-content]
129
+ status-record-content = [
130
+ bundle-status-information,
131
+ status-report-reason-code: uint,
132
+ source-node-eid: eid,
133
+ subject-creation-timestamp: creation-timestamp,
134
+ ? (
135
+ subject-payload-offset: uint,
136
+ subject-payload-length: uint
137
+ )
138
+ ]
139
+ bundle-status-information = [
140
+ reporting-node-received-bundle: status-info-content,
141
+ reporting-node-forwarded-bundle: status-info-content,
142
+ reporting-node-delivered-bundle: status-info-content,
143
+ reporting-node-deleted-bundle: status-info-content
144
+ ]
145
+ status-info-content = [
146
+ status-indicator: bool,
147
+ ? timestamp: dtn-time
148
+ ]
149
+
150
+
151
+ ; Previous Node extension block
152
+ $extension-block-structure /=
153
+ extension-block-use<7, embedded-cbor<ext-data-previous-node>>
154
+ ext-data-previous-node = eid
155
+
156
+ ; Bundle Age extension block
157
+ $extension-block-structure /=
158
+ extension-block-use<8, embedded-cbor<ext-data-bundle-age>>
159
+ ext-data-bundle-age = uint
160
+
161
+ ; Hop Count extension block
162
+ $extension-block-structure /=
163
+ extension-block-use<9, embedded-cbor<ext-data-hop-count>>
164
+ ext-data-hop-count = [
165
+ hop-limit: uint,
166
+ hop-count: uint
167
+ ]
@@ -0,0 +1 @@
1
+ foo=bar=int
@@ -0,0 +1,719 @@
1
+ start = iodef
2
+
3
+ ;;; iodef.json: IODEF-Document
4
+
5
+ iodef = {
6
+ version: text
7
+ ? lang: lang
8
+ ? format-id: text
9
+ ? private-enum-name: text
10
+ ? private-enum-id: text
11
+ Incident: [+ Incident]
12
+ ? AdditionalData: [+ ExtensionType]
13
+ }
14
+
15
+ duration = "second" / "minute" / "hour" / "day" / "month" / "quarter" /
16
+ "year" / "ext-value"
17
+ lang = "" / text .regexp "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
18
+
19
+ restriction = "public" / "partner" / "need-to-know" / "private" /
20
+ "default" / "white" / "green" / "amber" / "red" /
21
+ "ext-value"
22
+ SpecID = "urn:ietf:params:xml:ns:mile:mmdef:1.2" / "private"
23
+ IDtype = text .regexp "[a-zA-Z_][a-zA-Z0-9_.-]*"
24
+ IDREFType = IDtype
25
+ URLtype = uri
26
+ TimeZonetype = text .regexp "Z|[\+\-](0[0-9]|1[0-4]):[0-5][0-9]"
27
+ PortlistType = text .regexp "\\d+(\\-\\d+)?(,\\d+(\\-\\d+)?)*"
28
+ action = "nothing" / "contact-source-site" / "contact-target-site" /
29
+ "contact-sender" / "investigate" / "block-host" /
30
+ "block-network" / "block-port" / "rate-limit-host" /
31
+ "rate-limit-network" / "rate-limit-port" / "redirect-traffic" /
32
+ "honeypot" / "upgrade-software" / "rebuild-asset" /
33
+ "harden-asset" / "remediate-other" / "status-triage" /
34
+ "status-new-info" / "watch-and-report" / "training" /
35
+ "defined-coa" / "other" / "ext-value"
36
+
37
+ DATETIME = tdate
38
+
39
+ BYTE = eb64legacy
40
+
41
+ MLStringType = {
42
+ value: text
43
+ ? lang: lang
44
+ ? translation-id: text
45
+ } / text
46
+
47
+ PositiveFloatType = float32 .gt 0
48
+
49
+ PAddressType = MLStringType
50
+
51
+ ExtensionType = {
52
+ value: text
53
+ ? name: text
54
+ dtype: "boolean" / "byte" / "bytes" / "character" / "date-time" /
55
+ "ntpstamp" / "integer" / "portlist" / "real" / "string" /
56
+ "file" / "path" / "frame" / "packet" / "ipv4-packet" / "json"/
57
+ "ipv6-packet" / "url" / "csv" / "winreg" / "xml" / "ext-value"
58
+ .default "string"
59
+ ? ext-dtype: text
60
+ ? meaning: text
61
+ ? formatid: text
62
+ ? restriction: restriction .default "private"
63
+ ? ext-restriction: text
64
+ ? observable-id: IDtype
65
+ }
66
+
67
+ SoftwareType = {
68
+ ? SoftwareReference: SoftwareReference
69
+ ? URL: [+ URLtype]
70
+ ? Description: [+ MLStringType]
71
+ }
72
+
73
+ SoftwareReference = {
74
+ ? value: text
75
+ spec-name: "custom" / "cpe" / "swid" / "ext-value"
76
+ ? ext-spec-name: text
77
+ ? dtype: "bytes" / "integer" / "real" / "string" / "xml" / "ext-value"
78
+ .default "string"
79
+ ? ext-dtype: text
80
+ }
81
+
82
+ Incident = {
83
+ purpose: "traceback" / "mitigation" / "reporting" / "watch" / "other" /
84
+ "ext-value"
85
+ ? ext-purpose: text
86
+ ? status: "new" / "in-progress"/ "forwarded" / "resolved" / "future" /
87
+ "ext-value"
88
+ ? ext-status: text
89
+ ? lang: lang
90
+ ? restriction: restriction .default "private"
91
+ ? ext-restriction: text
92
+ ? observable-id: IDtype
93
+ IncidentID: IncidentID
94
+ ? AlternativeID: AlternativeID
95
+ ? RelatedActivity: [+ RelatedActivity]
96
+ ? DetectTime: DATETIME
97
+ ? StartTime: DATETIME
98
+ ? EndTime: DATETIME
99
+ ? RecoveryTime: DATETIME
100
+ ? ReportTime: DATETIME
101
+ GenerationTime: DATETIME
102
+ ? Description: [+ MLStringType]
103
+ ? Discovery: [+ Discovery]
104
+ ? Assessment: [+ Assessment]
105
+ ? Method: [+ Method]
106
+ Contact: [+ Contact]
107
+ ? EventData: [+ EventData]
108
+ ? Indicator: [+ Indicator]
109
+ ? History: History
110
+ ? AdditionalData: [+ ExtensionType]
111
+ }
112
+
113
+ IncidentID = {
114
+ id: text
115
+ name: text
116
+ ? instance: text
117
+ ? restriction: restriction .default "private"
118
+ ? ext-restriction: text
119
+ }
120
+
121
+ AlternativeID = {
122
+ ? restriction: restriction .default "private"
123
+ ? ext-restriction: text
124
+ IncidentID: [+ IncidentID]
125
+ }
126
+
127
+ RelatedActivity = {
128
+ ? restriction: restriction .default "private"
129
+ ? ext-restriction: text
130
+ ? IncidentID: [+ IncidentID]
131
+ ? URL: [+ URLtype]
132
+ ? ThreatActor: [+ ThreatActor]
133
+ ? Campaign: [+ Campaign]
134
+ ? IndicatorID: [+ IndicatorID]
135
+ ? Confidence: Confidence
136
+ ? Description: [+ text]
137
+ ? AdditionalData: [+ ExtensionType]
138
+ }
139
+
140
+ ThreatActor = {
141
+ ? restriction: restriction .default "private"
142
+ ? ext-restriction: text
143
+ ? ThreatActorID: [+ text]
144
+ ? URL: [+ URLtype]
145
+ ? Description: [+ MLStringType]
146
+ ? AdditionalData: [+ ExtensionType]
147
+ }
148
+
149
+ Campaign = {
150
+ ? restriction: restriction .default "private"
151
+ ? ext-restriction: text
152
+ ? CampaignID: [+ text]
153
+ ? URL: [+ URLtype]
154
+ ? Description: [+ MLStringType]
155
+ ? AdditionalData: [+ ExtensionType]
156
+ }
157
+
158
+ Contact = {
159
+ role: "creator" / "reporter" / "admin" / "tech" / "provider" / "user" /
160
+ "billing" / "legal" / "irt" / "abuse" / "cc" / "cc-irt" / "leo" /
161
+ "vendor" / "vendor-support" / "victim" / "victim-notified" /
162
+ "ext-value"
163
+ ? ext-role: text
164
+ type: "person" / "organization" / "ext-value"
165
+ ? ext-type: text
166
+ ? restriction: restriction .default "private"
167
+ ? ext-restriction: text
168
+ ? ContactName: [+ MLStringType]
169
+ ? ContactTitle: [+ MLStringType]
170
+ ? Description: [+ MLStringType]
171
+ ? RegistryHandle: [+ RegistryHandle]
172
+ ? PostalAddress: [+ PostalAddress]
173
+ ? Email: [+ Email]
174
+ ? Telephone: [+ Telephone]
175
+ ? Timezone: TimeZonetype
176
+ ? Contact: [+ Contact]
177
+ ? AdditionalData: [+ ExtensionType]
178
+ }
179
+
180
+ RegistryHandle = {
181
+ handle: text
182
+ registry: "internic" / "apnic" / "arin" / "lacnic" / "ripe" /
183
+ "afrinic" / "local" / "ext-value"
184
+ ? ext-registry: text
185
+ }
186
+
187
+ PostalAddress = {
188
+ ? type: "street" / "mailing" / "ext-value"
189
+ ? ext-type: text
190
+ PAddress: PAddressType
191
+ ? Description: [+ MLStringType]
192
+ }
193
+
194
+ Email = {
195
+ ? type: "direct" / "hotline" / "ext-value"
196
+ ? ext-type: text
197
+ EmailTo: text
198
+ ? Description: [+ MLStringType]
199
+ }
200
+
201
+ Telephone = {
202
+ ? type: "wired" / "mobile" / "fax" / "hotline" / "ext-value"
203
+ ? ext-type: text
204
+ TelephoneNumber: text
205
+ ? Description: [+ MLStringType]
206
+ }
207
+
208
+ Discovery = {
209
+ ? source: "nidps" / "hips" / "siem" / "av" / "third-party-monitoring" /
210
+ "incident" / "os-log" / "application-log" / "device-log" /
211
+ "network-flow" / "passive-dns" / "investigation" / "audit" /
212
+ "internal-notification" / "external-notification" /
213
+ "leo" / "partner" / "actor" / "unknown" / "ext-value"
214
+ ? ext-source: text
215
+ ? restriction: restriction .default "private"
216
+ ? ext-restriction: text
217
+ ? Description: [+ MLStringType]
218
+ ? Contact: [+ Contact]
219
+ ? DetectionPattern: [+ DetectionPattern]
220
+ }
221
+
222
+ DetectionPattern = {
223
+ ? restriction: restriction .default "private"
224
+ ? ext-restriction: text
225
+ ? observable-id: IDtype
226
+ (Description: [+ MLStringType] // DetectionConfiguration: [+ text])
227
+ Application: SoftwareType
228
+ }
229
+
230
+ Method = {
231
+ ? restriction: restriction .default "private"
232
+ ? ext-restriction: text
233
+ ? Reference: [+ Reference]
234
+ ? Description: [+ MLStringType]
235
+ ? AttackPattern: [+ StructuredInfo]
236
+ ? Vulnerability: [+ StructuredInfo]
237
+ ? Weakness: [+ StructuredInfo]
238
+ ? AdditionalData: [+ ExtensionType]
239
+ }
240
+
241
+ StructuredInfo = {
242
+ SpecID: SpecID
243
+ ? ext-SpecID: text
244
+ ? ContentID: text
245
+ ? (RawData: [+ BYTE] // Reference:[+ Reference])
246
+ ? Platform:[+ Platform]
247
+ ? Scoring:[+ Scoring]
248
+ }
249
+
250
+ Platform = {
251
+ SpecID: SpecID
252
+ ? ext-SpecID: text
253
+ ? ContentID: text
254
+ ? RawData: [+ BYTE]
255
+ ? Reference: [+ Reference]
256
+ }
257
+ Scoring = {
258
+ SpecID: SpecID
259
+ ? ext-SpecID: text
260
+ ? ContentID: text
261
+ ? RawData: [+ BYTE]
262
+ ? Reference: [+ Reference]
263
+ }
264
+ Reference = {
265
+ ? observable-id: IDtype
266
+ ? ReferenceName: ReferenceName
267
+ ? URL: [+ URLtype]
268
+ ? Description: [+ MLStringType]
269
+ }
270
+
271
+ ReferenceName = {
272
+ specIndex: integer
273
+ ID: IDtype
274
+ }
275
+
276
+ Assessment = {
277
+ ? occurrence: "actual" / "potential"
278
+ ? restriction: restriction .default "private"
279
+ ? ext-restriction: text
280
+ ? observable-id: IDtype
281
+ ? IncidentCategory: [+ MLStringType]
282
+ Impact: [+ {SystemImpact: SystemImpact} /
283
+ {BusinessImpact: BusinessImpact} / {TimeImpact: TimeImpact} /
284
+ {MonetaryImpact: MonetaryImpact} /
285
+ {IntendedImpact: BusinessImpact}]
286
+ ? Counter: [+ Counter]
287
+ ? MitigatingFactor: [+ MLStringType]
288
+ ? Cause: [+ MLStringType]
289
+ ? Confidence: Confidence
290
+ ? AdditionalData: [+ ExtensionType]
291
+ }
292
+
293
+ SystemImpact = {
294
+ ? severity: "low" / "medium" / "high"
295
+ ? completion: "failed" / "succeeded"
296
+ type: "takeover-account" / "takeover-service" / "takeover-system" /
297
+ "cps-manipulation" / "cps-damage" / "availability-data" /
298
+ "availability-account" / "availability-service" /
299
+ "availability-system" / "damaged-system" / "damaged-data" /
300
+ "breach-proprietary" / "breach-privacy" / "breach-credential" /
301
+ "breach-configuration" / "integrity-data" /
302
+ "integrity-configuration" / "integrity-hardware" /
303
+ "traffic-redirection" / "monitoring-traffic" / "monitoring-host"/
304
+ "policy" / "unknown" / "ext-value" .default "unknown"
305
+ ? ext-type: text
306
+ ? Description: [+ MLStringType]
307
+ }
308
+
309
+ BusinessImpact = {
310
+ ? severity:"none" / "low" / "medium" / "high" / "unknown" / "ext-value"
311
+ .default "unknown"
312
+ ? ext-severity: text
313
+ type: "breach-proprietary" / "breach-privacy" / "breach-credential" /
314
+ "loss-of-integrity" / "loss-of-service" / "theft-financial" /
315
+ "theft-service" / "degraded-reputation" / "asset-damage" /
316
+ "asset-manipulation" / "legal" / "extortion" / "unknown" /
317
+ "ext-value" .default "unknown"
318
+ ? ext-type: text
319
+ ? Description: [+ MLStringType]
320
+ }
321
+
322
+ TimeImpact = {
323
+ value: PositiveFloatType
324
+ ? severity: "low" / "medium" / "high"
325
+ metric: "labor" / "elapsed" / "downtime" / "ext-value"
326
+ ? ext-metric: text
327
+ ? duration: duration .default "hour"
328
+ ? ext-duration: text
329
+ }
330
+
331
+ MonetaryImpact = {
332
+ value: PositiveFloatType
333
+ ? severity: "low" / "medium" / "high"
334
+ ? currency: text
335
+ }
336
+
337
+ Confidence = {
338
+ value: float32
339
+ rating: "low" / "medium" / "high" / "numeric" / "unknown" / "ext-value"
340
+ ? ext-rating: text
341
+ }
342
+
343
+ History = {
344
+ ? restriction: restriction .default "private"
345
+ ? ext-restriction: text
346
+ HistoryItem: [+ HistoryItem]
347
+ }
348
+
349
+ HistoryItem = {
350
+ action: action .default "other"
351
+ ? ext-action: text
352
+ ? restriction: restriction .default "private"
353
+ ? ext-restriction: text
354
+ ? observable-id: IDtype
355
+ DateTime: DATETIME
356
+ ? IncidentID: IncidentID
357
+ ? Contact: Contact
358
+ ? Description: [+ MLStringType]
359
+ ? DefinedCOA: [+ text]
360
+ ? AdditionalData: [+ ExtensionType]
361
+ }
362
+
363
+ EventData = {
364
+ ? restriction: restriction .default "default"
365
+ ? ext-restriction: text
366
+ ? observable-id: IDtype
367
+ ? Description: [+ MLStringType]
368
+ ? DetectTime: DATETIME
369
+ ? StartTime: DATETIME
370
+ ? EndTime: DATETIME
371
+ ? RecoveryTime: DATETIME
372
+ ? ReportTime: DATETIME
373
+ ? Contact: [+ Contact]
374
+ ? Discovery: [+ Discovery]
375
+ ? Assessment: Assessment
376
+ ? Method: [+ Method]
377
+ ? System: [+ System]
378
+ ? Expectation: [+ Expectation]
379
+ ? RecordData: [+ RecordData]
380
+ ? EventData: [+ EventData]
381
+ ? AdditionalData: [+ ExtensionType]
382
+ }
383
+
384
+ Expectation = {
385
+ ? action: action .default "other"
386
+ ? ext-action: text
387
+ ? severity: "low" / "medium" / "high"
388
+ ? restriction: restriction .default "default"
389
+ ? ext-restriction: text
390
+ ? observable-id: IDtype
391
+ ? Description: [+ MLStringType]
392
+ ? DefinedCOA: [+ text]
393
+ ? StartTime: DATETIME
394
+ ? EndTime: DATETIME
395
+ ? Contact: Contact
396
+ }
397
+
398
+ System = {
399
+ ? category: "source" / "target" / "intermediate" / "sensor" /
400
+ "infrastructure" / "ext-value"
401
+ ? ext-category: text
402
+ ? interface: text
403
+ ? spoofed: "unknown" / "yes" / "no" .default "unknown"
404
+ ? virtual: "yes" / "no" / "unknown" .default "unknown"
405
+ ? ownership: "organization" / "personal" / "partner" / "customer" /
406
+ "no-relationship" / "unknown" / "ext-value"
407
+ ? ext-ownership: text
408
+ ? restriction: restriction .default "private"
409
+ ? ext-restriction: text
410
+ ? observable-id: IDtype
411
+ Node: Node
412
+ ? NodeRole: [+ NodeRole]
413
+ ? Service: [+ Service]
414
+ ? OperatingSystem: [+ SoftwareType]
415
+ ? Counter: [+ Counter]
416
+ ? AssetID: [+ text]
417
+ ? Description: [+ MLStringType]
418
+ ? AdditionalData: [+ ExtensionType]
419
+ }
420
+
421
+ Node = {
422
+ (DomainData:[+ DomainData]
423
+ ? Address:[+ Address] //
424
+ ? DomainData:[+ DomainData]
425
+ Address:[+ Address])
426
+ ? PostalAddress: PostalAddress
427
+ ? Location: [+ MLStringType]
428
+ ? Counter: [+ Counter]
429
+ }
430
+
431
+ Address = {
432
+ value: text
433
+ category: "asn" / "atm" / "e-mail" / "ipv4-addr" / "ipv4-net" /
434
+ "ipv4-net-masked" / "ipv4-net-mask" / "ipv6-addr" /
435
+ "ipv6-net" / "ipv6-net-masked" / "mac" / "site-uri" /
436
+ "ext-value" .default "ipv6-addr"
437
+ ? ext-category: text
438
+ ? vlan-name: text
439
+ ? vlan-num: integer
440
+ ? observable-id: IDtype
441
+ }
442
+
443
+ NodeRole = {
444
+ category: "client" / "client-enterprise" / "client-partner" /
445
+ "client-remote" / "client-kiosk" / "client-mobile" /
446
+ "server-internal" / "server-public" / "www" / "mail" /
447
+ "webmail" / "messaging" / "streaming" / "voice" / "file" /
448
+ "ftp" / "p2p" / "name" / "directory" / "credential" /
449
+ "print" / "application" / "database" / "backup" / "dhcp" /
450
+ "assessment" / "source-control" / "config-management" /
451
+ "monitoring" / "infra" / "infra-firewall" / "infra-router" /
452
+ "infra-switch" / "camera" / "proxy" / "remote-access" /
453
+ "log" / "virtualization" / "pos" / "scada" /
454
+ "scada-supervisory" / "sinkhole" / "honeypot" /
455
+ "anomyzation" / "c2-server" / "malware-distribution" /
456
+ "drop-server" / "hop-point" / "reflector" /
457
+ "phishing-site" / "spear-phishing-site" / "recruiting-site" /
458
+ "fraudulent-site" / "ext-value"
459
+ ? ext-category: text
460
+ ? Description: [+ MLStringType]
461
+ }
462
+
463
+ Counter = {
464
+ value: float32
465
+ type: "count" / "peak" / "average" / "ext-value"
466
+ ? ext-type: text
467
+ unit: "byte" / "mbit" / "packet" / "flow" / "session" / "alert" /
468
+ "message" / "event" / "host" / "site" / "organization" /
469
+ "ext-value"
470
+ ? ext-unit: text
471
+ ? meaning: text
472
+ ? duration: duration .default "hour"
473
+ ? ext-duration: text
474
+ }
475
+
476
+ DomainData = {
477
+ system-status: "spoofed" / "fraudulent" / "innocent-hacked" /
478
+ "innocent-hijacked" / "unknown" / "ext-value"
479
+ ? ext-system-status: text
480
+ domain-status: "reservedDelegation" / "assignedAndActive" /
481
+ "assignedAndInactive" / "assignedAndOnHold" /
482
+ "revoked" / "transferPending" / "registryLock" /
483
+ "registrarLock" / "other" / "unknown" / "ext-value"
484
+ ? ext-domain-status: text
485
+ ? observable-id: IDtype
486
+ Name: text
487
+ ? DateDomainWasChecked: DATETIME
488
+ ? RegistrationDate: DATETIME
489
+ ? ExpirationDate: DATETIME
490
+ ? RelatedDNS: [+ ExtensionType]
491
+ ? NameServers: [+ NameServers]
492
+ ? DomainContacts: DomainContacts
493
+ }
494
+
495
+ NameServers = {
496
+ Server: text
497
+ Address: [+ Address]
498
+ }
499
+
500
+ DomainContacts = {
501
+ (SameDomainContact: text // Contact: [+ Contact])
502
+ }
503
+
504
+ Service = {
505
+ ? ip-protocol: integer
506
+ ? observable-id: IDtype
507
+ ? ServiceName: ServiceName
508
+ ? Port: integer
509
+ ? Portlist: PortlistType
510
+ ? ProtoCode: integer
511
+ ? ProtoType: integer
512
+ ? ProtoField: integer
513
+ ? ApplicationHeaderField: [+ ExtensionType]
514
+ ? EmailData: EmailData
515
+ ? Application: SoftwareType
516
+ }
517
+
518
+ ServiceName = {
519
+ ? IANAService: text
520
+ ? URL: [+ URLtype]
521
+ ? Description: [+ MLStringType]
522
+ }
523
+
524
+ EmailData = {
525
+ ? observable-id: IDtype
526
+ ? EmailTo: [+ text]
527
+ ? EmailFrom: text
528
+ ? EmailSubject: text
529
+ ? EmailX-Mailer: text
530
+ ? EmailHeaderField: [+ ExtensionType]
531
+ ? EmailHeaders: text
532
+ ? EmailBody: text
533
+ ? EmailMessage: text
534
+ ? HashData: [+ HashData]
535
+ ? Signature: [+ BYTE]
536
+ }
537
+
538
+ RecordData = {
539
+ ? restriction: restriction .default "private"
540
+ ? ext-restriction: text
541
+ ? observable-id: IDtype
542
+ ? DateTime: DATETIME
543
+ ? Description: [+ MLStringType]
544
+ ? Application: SoftwareType
545
+ ? RecordPattern: [+ RecordPattern]
546
+ ? RecordItem: [+ ExtensionType]
547
+ ? URL: [+ URLtype]
548
+ ? FileData: [+ FileData]
549
+ ? WindowsRegistryKeysModified: [+ WindowsRegistryKeysModified]
550
+ ? CertificateData: [+ CertificateData]
551
+ ? AdditionalData: [+ ExtensionType]
552
+ }
553
+
554
+ RecordPattern = {
555
+ value: text
556
+ type: "regex" / "binary" / "xpath" / "ext-value" .default "regex"
557
+ ? ext-type: text
558
+ ? offset: integer
559
+ ? offsetunit: "line" / "byte" / "ext-value" .default "line"
560
+ ? ext-offsetunit: text
561
+ ? instance: integer
562
+ }
563
+
564
+ WindowsRegistryKeysModified = {
565
+ ? observable-id: IDtype
566
+ Key: [+ Key]
567
+ }
568
+
569
+ Key = {
570
+ ? registryaction: "add-key" / "add-value" / "delete-key" /
571
+ "delete-value" / "modify-key" / "modify-value" /
572
+ "ext-value"
573
+ ? ext-registryaction: text
574
+ ? observable-id: IDtype
575
+ KeyName: text
576
+ ? KeyValue: text
577
+ }
578
+
579
+ CertificateData = {
580
+ ? restriction: restriction .default "private"
581
+ ? ext-restriction: text
582
+ ? observable-id: IDtype
583
+ Certificate: [+ Certificate]
584
+ }
585
+
586
+ Certificate = {
587
+ ? observable-id: IDtype
588
+ X509Data: BYTE
589
+ ? Description: [+ MLStringType]
590
+ }
591
+
592
+ FileData = {
593
+ ? restriction: restriction .default "private"
594
+ ? ext-restriction: text
595
+ ? observable-id: IDtype
596
+ File: [+ File]
597
+ }
598
+
599
+ File = {
600
+ ? observable-id: IDtype
601
+ ? FileName: text
602
+ ? FileSize: integer
603
+ ? FileType: text
604
+ ? URL: [+ URLtype]
605
+ ? HashData: HashData
606
+ ? Signature: [+ BYTE]
607
+ ? AssociatedSoftware: SoftwareType
608
+ ? FileProperties: [+ ExtensionType]
609
+ }
610
+
611
+ HashData = {
612
+ scope: "file-contents" / "file-pe-section" / "file-pe-iat" /
613
+ "file-pe-resource" / "file-pdf-object" / "email-hash" /
614
+ "email-headers-hash" / "email-body-hash" / "ext-value"
615
+ ? HashTargetID: text
616
+ ? Hash: [+ Hash]
617
+ ? FuzzyHash: [+ FuzzyHash]
618
+ }
619
+
620
+ Hash = {
621
+ DigestMethod: BYTE
622
+ DigestValue: BYTE
623
+ ? CanonicalizationMethod: BYTE
624
+ ? Application: SoftwareType
625
+ }
626
+
627
+ FuzzyHash = {
628
+ FuzzyHashValue: [+ ExtensionType]
629
+ ? Application: SoftwareType
630
+ ? AdditionalData: [+ ExtensionType]
631
+ }
632
+
633
+ Indicator = {
634
+ ? restriction: restriction .default "private"
635
+ ? ext-restriction: text
636
+ IndicatorID: IndicatorID
637
+ ? AlternativeIndicatorID: [+ AlternativeIndicatorID]
638
+ ? Description: [+ MLStringType]
639
+ ? StartTime: DATETIME
640
+ ? EndTime: DATETIME
641
+ ? Confidence: Confidence
642
+ ? Contact: [+ Contact]
643
+ (Observable: Observable // uid-ref: IDREFType //
644
+ IndicatorExpression: IndicatorExpression //
645
+ IndicatorReference: IndicatorReference)
646
+ ? NodeRole: [+ NodeRole]
647
+ ? AttackPhase: [+ AttackPhase]
648
+ ? Reference: [+ Reference]
649
+ ? AdditionalData: [+ ExtensionType]
650
+ }
651
+
652
+ IndicatorID = {
653
+ id: IDtype
654
+ name: text
655
+ version: text
656
+ }
657
+
658
+ AlternativeIndicatorID = {
659
+ ? restriction: restriction .default "private"
660
+ ? ext-restriction: text
661
+ IndicatorID: [+ IndicatorID]
662
+ }
663
+
664
+ Observable = {
665
+ ? restriction: restriction .default "private"
666
+ ? ext-restriction: text
667
+ ? (System: System // Address: Address // DomainData: DomainData //
668
+ EmailData: EmailData // Service: Service //
669
+ WindowsRegistryKeysModified: WindowsRegistryKeysModified //
670
+ FileData: FileData // CertificateData: CertificateData //
671
+ RegistryHandle: RegistryHandle // RecordData: RecordData //
672
+ EventData: EventData // Incident: Incident //
673
+ Expectation: Expectation // Reference: Reference //
674
+ Assessment: Assessment // DetectionPattern: DetectionPattern //
675
+ HistoryItem: HistoryItem // BulkObservable: BulkObservable //
676
+ AdditionalData: [+ ExtensionType])
677
+ }
678
+
679
+ BulkObservable = {
680
+ ? type: "asn" / "atm" / "e-mail" / "ipv4-addr" / "ipv4-net" /
681
+ "ipv4-net-mask" / "ipv6-addr" / "ipv6-net" / "ipv6-net-mask" /
682
+ "mac" / "site-uri" / "domain-name" / "domain-to-ipv4" /
683
+ "domain-to-ipv6" / "domain-to-ipv4-timestamp" /
684
+ "domain-to-ipv6-timestamp" / "ipv4-port" / "ipv6-port" /
685
+ "windows-reg-key" / "file-hash" / "email-x-mailer" /
686
+ "email-subject" / "http-user-agent" / "http-request-uri" /
687
+ "mutex" / "file-path" / "user-name" / "ext-value"
688
+ ? ext-type: text
689
+ ? BulkObservableFormat: BulkObservableFormat
690
+ BulkObservableList: text
691
+ ? AdditionalData: [+ ExtensionType]
692
+ }
693
+
694
+ BulkObservableFormat = {
695
+ (Hash: Hash // AdditionalData: [+ ExtensionType])
696
+ }
697
+
698
+ IndicatorExpression = {
699
+ ? operator: "not" / "and" / "or" / "xor" .default "and"
700
+ ? ext-operator: text
701
+ ? IndicatorExpression: [+ IndicatorExpression]
702
+ ? Observable: [+ Observable]
703
+ ? uid-ref: [+ IDREFType]
704
+ ? IndicatorReference: [+ IndicatorReference]
705
+ ? Confidence: Confidence
706
+ ? AdditionalData: [+ ExtensionType]
707
+ }
708
+
709
+ IndicatorReference = {
710
+ (uid-ref: IDREFType // euid-ref: text)
711
+ ? version: text
712
+ }
713
+
714
+ AttackPhase = {
715
+ ? AttackPhaseID: [+ text]
716
+ ? URL: [+ URLtype]
717
+ ? Description: [+ MLStringType]
718
+ ? AdditionalData: [+ ExtensionType]
719
+ }
@@ -0,0 +1,7 @@
1
+ foo = { + $$elements }
2
+
3
+ $$elements //= element1
4
+ $$elements //= element2
5
+
6
+ element1 = (1: "a")
7
+ element2 = (2: "b")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cddl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-07 00:00:00.000000000 Z
11
+ date: 2019-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cbor-diag
@@ -102,12 +102,16 @@ files:
102
102
  - test-data/b.cddl
103
103
  - test-data/badaddr.cddl
104
104
  - test-data/basic_syntax_example.cddl
105
+ - test-data/bpv7.cddl
106
+ - test-data/bpv7a.cddl
107
+ - test-data/bpv7b.cddl
105
108
  - test-data/cdni-ct.cddl
106
109
  - test-data/cose.cddl
107
110
  - test-data/dcaf.cddl
108
111
  - test-data/dcaf1.cddl
109
112
  - test-data/dotsize.cddl
110
113
  - test-data/extractor-demo.cddl
114
+ - test-data/foo.cddl
111
115
  - test-data/grasp-01-extract.cddl
112
116
  - test-data/grasp-01-test.cddl
113
117
  - test-data/grasp-01.cddl
@@ -119,10 +123,12 @@ files:
119
123
  - test-data/ifmap-metadata-2.2v9_fh-cabo.cddl
120
124
  - test-data/ifmap2.cddl
121
125
  - test-data/jcr-ex.cddl
126
+ - test-data/jsoniodef.cddl
122
127
  - test-data/kevin5.cddl
123
128
  - test-data/map-group.cddl
124
129
  - test-data/mapkey.cddl
125
130
  - test-data/minimal.cddl
131
+ - test-data/named-group.cddl
126
132
  - test-data/patch1.cddl
127
133
  - test-data/reused_named_group.cddl
128
134
  - test-data/structure.cddl
@@ -154,8 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
160
  - !ruby/object:Gem::Version
155
161
  version: '0'
156
162
  requirements: []
157
- rubyforge_project:
158
- rubygems_version: 2.7.6
163
+ rubygems_version: 3.0.3
159
164
  signing_key:
160
165
  specification_version: 4
161
166
  summary: CDDL generator and validator.