cddl 0.8.7 → 0.8.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cddl.gemspec +2 -1
- data/data/cddl.abnf +1 -0
- data/lib/cddl.rb +63 -12
- data/test-data/7807.cddl +14 -0
- data/test-data/abignum.cddl +1 -0
- data/test-data/bpv7.cddl +136 -0
- data/test-data/bpv7a.cddl +181 -0
- data/test-data/bpv7b.cddl +167 -0
- data/test-data/coral.cddl +10 -0
- data/test-data/coral1.cddl +5 -0
- data/test-data/coral2.cddl +7 -0
- data/test-data/coral3.cddl +7 -0
- data/test-data/dotsize.cddl +7 -0
- data/test-data/feat1.cddl +4 -0
- data/test-data/foo.cddl +1 -0
- data/test-data/jim-cut-2.cddl +11 -0
- data/test-data/jim-cut.cddl +12 -0
- data/test-data/jsoniodef.cddl +719 -0
- data/test-data/mdl-ble.cddl +9 -0
- data/test-data/mdl-deve.cddl +54 -0
- data/test-data/mdl-dp.cddl +11 -0
- data/test-data/mdl-mso.cddl +20 -0
- data/test-data/mdl-request.cddl +26 -0
- data/test-data/mdl-response.cddl +66 -0
- data/test-data/mdl.cddl +11 -0
- data/test-data/mon-val.cddl +1 -0
- data/test-data/multipart-ct.cddl +2 -0
- data/test-data/named-group.cddl +7 -0
- data/test-data/test-gen.cddl +3 -0
- data/test/test-cddl.rb +51 -0
- metadata +32 -7
@@ -0,0 +1,9 @@
|
|
1
|
+
BLEIdentification = {
|
2
|
+
? 0 : bool,
|
3
|
+
? 1 : bool,
|
4
|
+
? 10 : bstr,
|
5
|
+
; Indicates support for Peripheral server mode
|
6
|
+
; Indicates support for Central client mode
|
7
|
+
; Optional UUID for peripheral server mode
|
8
|
+
? 11 : bstr ; Optional MAC address for peripheral server mode
|
9
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
deviceEngagement = [
|
2
|
+
uint,
|
3
|
+
security,
|
4
|
+
transferMethods,
|
5
|
+
options,
|
6
|
+
? proprietary
|
7
|
+
]
|
8
|
+
security = [
|
9
|
+
bstr,
|
10
|
+
uint, uint
|
11
|
+
]
|
12
|
+
transferMethods = [
|
13
|
+
* transferMethod
|
14
|
+
]
|
15
|
+
options = {
|
16
|
+
?"WebAPI" : WebAPI,
|
17
|
+
?"OIDC" : OIDC,
|
18
|
+
?"compact" : bool
|
19
|
+
}
|
20
|
+
proprietary = {
|
21
|
+
* tstr => any
|
22
|
+
}
|
23
|
+
transferMethod = [
|
24
|
+
uint,
|
25
|
+
uint, * any
|
26
|
+
]
|
27
|
+
OIDC = [
|
28
|
+
uint,
|
29
|
+
tstr,
|
30
|
+
tstr
|
31
|
+
]
|
32
|
+
WebAPI = [
|
33
|
+
uint,
|
34
|
+
tstr, tstr
|
35
|
+
]
|
36
|
+
; Version of device engagement structure, currently 1
|
37
|
+
; Security structure
|
38
|
+
; Transfer methods
|
39
|
+
; Optional elements
|
40
|
+
; Proprietary elements
|
41
|
+
; mDL public ephemeral key, mDL.EPub
|
42
|
+
; curve identifier, see Table 23
|
43
|
+
; cipher suite identifier, see Table 22
|
44
|
+
; details for transfer methods
|
45
|
+
; any number of elements
|
46
|
+
; type
|
47
|
+
; version
|
48
|
+
; specific option(s) to the type
|
49
|
+
; version
|
50
|
+
; url
|
51
|
+
; token
|
52
|
+
; version
|
53
|
+
; url
|
54
|
+
; token
|
@@ -0,0 +1,20 @@
|
|
1
|
+
MobileSecurityObject = {
|
2
|
+
"DigestAlgorithm" : tstr,
|
3
|
+
"ValueDigests" : ValueDigests,
|
4
|
+
"DeviceKey" : COSE_Key,
|
5
|
+
"DocType" : tstr
|
6
|
+
}
|
7
|
+
ValueDigests = {
|
8
|
+
"NameSpaces" : NameSpaces
|
9
|
+
}
|
10
|
+
NameSpaces = {
|
11
|
+
+ NameSpace => DigestIDs
|
12
|
+
}
|
13
|
+
DigestIDs = {
|
14
|
+
+ DigestID => Digest
|
15
|
+
}
|
16
|
+
NameSpace = tstr
|
17
|
+
DigestID = uint
|
18
|
+
Digest = bstr
|
19
|
+
|
20
|
+
COSE_Key = "COSE_Key"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Request = {
|
2
|
+
"Version" : tstr,
|
3
|
+
"DocRequests" : [+ DocRequest]
|
4
|
+
}
|
5
|
+
DocRequest = {
|
6
|
+
"ItemsRequest" : ItemsRequest,
|
7
|
+
? "ReaderAuth" : COSE_Sign1
|
8
|
+
}
|
9
|
+
ItemsRequest = {
|
10
|
+
? "DocType" : DocType,
|
11
|
+
"NameSpaces" : NameSpaces,
|
12
|
+
? "RequestInfo" : {* tstr => any}
|
13
|
+
}
|
14
|
+
NameSpaces = {
|
15
|
+
+ NameSpace => DataItemNames
|
16
|
+
}
|
17
|
+
DocType = tstr
|
18
|
+
NameSpace = tstr
|
19
|
+
DataItemNames = [ + tstr ]
|
20
|
+
; Additional info the reader wants to provide
|
21
|
+
; Requested data elements for each NameSpace
|
22
|
+
; See 7.3.2
|
23
|
+
; See 7.3.3
|
24
|
+
; See Table 2
|
25
|
+
|
26
|
+
COSE_Sign1 = "COSE_Sign1"
|
@@ -0,0 +1,66 @@
|
|
1
|
+
Response = {
|
2
|
+
"Version" : tstr,
|
3
|
+
? "Documents" : Documents,
|
4
|
+
? "Error" : int
|
5
|
+
}
|
6
|
+
Documents = {
|
7
|
+
+ DocType => ResponseData
|
8
|
+
}
|
9
|
+
; Version of the structure, currently 1.0
|
10
|
+
; Returned documents, may be absent if Error is present
|
11
|
+
; Error codes according to Table 8
|
12
|
+
ResponseData = {
|
13
|
+
"IssuerSigned" : IssuerSigned, ; Responded data elements signed by the issuer
|
14
|
+
"DeviceSigned" : DeviceSigned, ; Responded data elements signed by the mDL
|
15
|
+
"Errors" : Errors
|
16
|
+
}
|
17
|
+
IssuerSigned = {
|
18
|
+
"NameSpaces" : IssuerNameSpaces,
|
19
|
+
"IssuerAuth" : COSE_Sign1 ; The payload is the MobileSecurityObject, see 9.2.1.4
|
20
|
+
}
|
21
|
+
IssuerNameSpaces = {
|
22
|
+
+ NameSpace => [ + IssuerSignedItem ]
|
23
|
+
}
|
24
|
+
IssuerSignedItem = [
|
25
|
+
uint,
|
26
|
+
bstr,
|
27
|
+
tstr,
|
28
|
+
any
|
29
|
+
]
|
30
|
+
DeviceSigned = {
|
31
|
+
"NameSpaces" : DeviceNameSpaces, ; Currently only online token and URL are defined as DeviceSignedItems
|
32
|
+
"DeviceAuth" : DeviceAuth
|
33
|
+
}
|
34
|
+
DeviceNameSpaces = {
|
35
|
+
* NameSpace => DeviceSignedItems
|
36
|
+
}
|
37
|
+
DeviceSignedItems = {
|
38
|
+
+ DataItemName => DataItemValue
|
39
|
+
}
|
40
|
+
DeviceAuth = {
|
41
|
+
"Signature" : COSE_Sign1, //
|
42
|
+
; Use a nil value for the payload, the detached content is the DeviceAuthentication structure, see 9.2.2.4
|
43
|
+
"MAC" : COSE_Mac0
|
44
|
+
}
|
45
|
+
Errors = {
|
46
|
+
* NameSpace => [ + ErrorItem ]
|
47
|
+
}
|
48
|
+
ErrorItem = {
|
49
|
+
DataItemName => ErrorCode
|
50
|
+
}
|
51
|
+
DocType = tstr
|
52
|
+
NameSpace = tstr
|
53
|
+
DataItemName = tstr
|
54
|
+
DataItemValue = any
|
55
|
+
ErrorCode = int
|
56
|
+
; See table 9
|
57
|
+
; See 7.3.2
|
58
|
+
; See 7.3.3
|
59
|
+
; See Table 2
|
60
|
+
; See Table 2
|
61
|
+
; Error codes according to Table 9
|
62
|
+
; Structures used for DeviceAuth signature or MAC generation, see 9.2.2.4
|
63
|
+
; Structures used for MobileSecurityObject, see 9.2.1.4
|
64
|
+
|
65
|
+
COSE_Sign1 = "COSE_Sign1"
|
66
|
+
COSE_Mac0 = "COSE_Mac0"
|
data/test-data/mdl.cddl
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
decimal-monetary-value = text .regexp "-?[0-9]+(\\.[0-9]+)?"
|
data/test/test-cddl.rb
CHANGED
@@ -171,6 +171,57 @@ HERE
|
|
171
171
|
assert parser.validate_for_test(true)
|
172
172
|
end
|
173
173
|
|
174
|
+
def test_validate_bignum
|
175
|
+
parser = CDDL::Parser.new <<HERE
|
176
|
+
test = bigint
|
177
|
+
HERE
|
178
|
+
assert parser.validate_for_test(2**4711)
|
179
|
+
assert parser.validate_for_test(-2**815)
|
180
|
+
assert parser.validate_for_test(1)
|
181
|
+
assert parser.validate_for_test(0)
|
182
|
+
assert parser.validate_for_test(-11)
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_aaaaaaaa_invalidate_bignum
|
186
|
+
parser = CDDL::Parser.new <<HERE
|
187
|
+
test = bignint
|
188
|
+
HERE
|
189
|
+
refute parser.validate_for_test(2**4711, false)
|
190
|
+
assert parser.validate_for_test(-2**815)
|
191
|
+
refute parser.validate_for_test(1, false)
|
192
|
+
refute parser.validate_for_test(0, false)
|
193
|
+
assert parser.validate_for_test(-11)
|
194
|
+
end
|
195
|
+
|
196
|
+
|
197
|
+
def test_aaaaaaaa_validate_bignum0b
|
198
|
+
parser = CDDL::Parser.new <<HERE
|
199
|
+
test = #6.2("")
|
200
|
+
HERE
|
201
|
+
refute parser.validate_for_test(1, false)
|
202
|
+
refute parser.validate_for_test(0, false)
|
203
|
+
end
|
204
|
+
|
205
|
+
|
206
|
+
def test_aaaaaaaa_validate_bignum0
|
207
|
+
parser = CDDL::Parser.new <<HERE
|
208
|
+
test = #6.2(h'')
|
209
|
+
HERE
|
210
|
+
assert parser.validate_for_test(0)
|
211
|
+
refute parser.validate_for_test(1, false)
|
212
|
+
end
|
213
|
+
|
214
|
+
|
215
|
+
def test_aaaaaaaa_validate_bignum1
|
216
|
+
parser = CDDL::Parser.new <<HERE
|
217
|
+
test = #6.2(h'01')
|
218
|
+
HERE
|
219
|
+
assert parser.validate_for_test(1)
|
220
|
+
refute parser.validate_for_test(0, false)
|
221
|
+
refute parser.validate_for_test(2, false)
|
222
|
+
end
|
223
|
+
|
224
|
+
|
174
225
|
def test_validate_a
|
175
226
|
parser = CDDL::Parser.new <<HERE
|
176
227
|
test = [* one: 1]
|
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.
|
4
|
+
version: 0.8.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor-diag
|
@@ -97,16 +97,28 @@ files:
|
|
97
97
|
- test-data/7071-concise-cut.cddl
|
98
98
|
- test-data/7071-concise.cddl
|
99
99
|
- test-data/7071-verbose.cddl
|
100
|
+
- test-data/7807.cddl
|
100
101
|
- test-data/a.cddl
|
102
|
+
- test-data/abignum.cddl
|
101
103
|
- test-data/ambig.cddl
|
102
104
|
- test-data/b.cddl
|
103
105
|
- test-data/badaddr.cddl
|
104
106
|
- test-data/basic_syntax_example.cddl
|
107
|
+
- test-data/bpv7.cddl
|
108
|
+
- test-data/bpv7a.cddl
|
109
|
+
- test-data/bpv7b.cddl
|
105
110
|
- test-data/cdni-ct.cddl
|
111
|
+
- test-data/coral.cddl
|
112
|
+
- test-data/coral1.cddl
|
113
|
+
- test-data/coral2.cddl
|
114
|
+
- test-data/coral3.cddl
|
106
115
|
- test-data/cose.cddl
|
107
116
|
- test-data/dcaf.cddl
|
108
117
|
- test-data/dcaf1.cddl
|
118
|
+
- test-data/dotsize.cddl
|
109
119
|
- test-data/extractor-demo.cddl
|
120
|
+
- test-data/feat1.cddl
|
121
|
+
- test-data/foo.cddl
|
110
122
|
- test-data/grasp-01-extract.cddl
|
111
123
|
- test-data/grasp-01-test.cddl
|
112
124
|
- test-data/grasp-01.cddl
|
@@ -118,13 +130,27 @@ files:
|
|
118
130
|
- test-data/ifmap-metadata-2.2v9_fh-cabo.cddl
|
119
131
|
- test-data/ifmap2.cddl
|
120
132
|
- test-data/jcr-ex.cddl
|
133
|
+
- test-data/jim-cut-2.cddl
|
134
|
+
- test-data/jim-cut.cddl
|
135
|
+
- test-data/jsoniodef.cddl
|
121
136
|
- test-data/kevin5.cddl
|
122
137
|
- test-data/map-group.cddl
|
123
138
|
- test-data/mapkey.cddl
|
139
|
+
- test-data/mdl-ble.cddl
|
140
|
+
- test-data/mdl-deve.cddl
|
141
|
+
- test-data/mdl-dp.cddl
|
142
|
+
- test-data/mdl-mso.cddl
|
143
|
+
- test-data/mdl-request.cddl
|
144
|
+
- test-data/mdl-response.cddl
|
145
|
+
- test-data/mdl.cddl
|
124
146
|
- test-data/minimal.cddl
|
147
|
+
- test-data/mon-val.cddl
|
148
|
+
- test-data/multipart-ct.cddl
|
149
|
+
- test-data/named-group.cddl
|
125
150
|
- test-data/patch1.cddl
|
126
151
|
- test-data/reused_named_group.cddl
|
127
152
|
- test-data/structure.cddl
|
153
|
+
- test-data/test-gen.cddl
|
128
154
|
- test-data/toerless0.cddl
|
129
155
|
- test-data/toerless1.cddl
|
130
156
|
- test-data/two_anonymous_groups.cddl
|
@@ -138,7 +164,7 @@ homepage: http://github.com/cabo/cddl
|
|
138
164
|
licenses:
|
139
165
|
- MIT
|
140
166
|
metadata: {}
|
141
|
-
post_install_message:
|
167
|
+
post_install_message:
|
142
168
|
rdoc_options: []
|
143
169
|
require_paths:
|
144
170
|
- lib
|
@@ -153,9 +179,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
179
|
- !ruby/object:Gem::Version
|
154
180
|
version: '0'
|
155
181
|
requirements: []
|
156
|
-
|
157
|
-
|
158
|
-
signing_key:
|
182
|
+
rubygems_version: 3.1.2
|
183
|
+
signing_key:
|
159
184
|
specification_version: 4
|
160
185
|
summary: CDDL generator and validator.
|
161
186
|
test_files: []
|