cddl 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21c72ccd0f94ea94c2c5759a86d7f96d6756d945
4
- data.tar.gz: a84cecf4ca71d4c1dd284a996b072e20a8139c7e
3
+ metadata.gz: 8803ef067ea0ea2959c233dadcdb2c6b9efc951c
4
+ data.tar.gz: 59b76d0a3da17193115e4d023414d486b07b80b7
5
5
  SHA512:
6
- metadata.gz: 0ca79dda50938e7a502ed7f5722a396eca9a55d37fd652b0944e8a031e0919ca9275c4d80433bac651a9845d7b1c1e62886f553eab9a9548732a4d48f05e9a0e
7
- data.tar.gz: af8f5d8945bd7e731004d86d23ac3ac0c036b304ed4f57982a798460be51135e496662a43823179f74c047accd18c8abeb2b83e4c01d6458ce75052dabe437dd
6
+ metadata.gz: c2c84dc9a1eed0643f1bfe619fbc922290f4815d3f77e04ca5e076421b717c45eb0ccd48b00636d71a602d2324aacaaf8be2256b59bcb6f6a9712dfe40f3bc21
7
+ data.tar.gz: bccdb7d885651ded32f13eb95aaffaed70a2c2ad4490465f4d866703d18c49c843ce84820067834287c8adb1aeddcf658719f41ee49dd5a360d749d89d0f9b89
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'cddl'
3
- s.version = '0.7.1'
3
+ s.version = '0.7.2'
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')
@@ -101,15 +101,22 @@ module CDDL
101
101
 
102
102
  # Generate some simple #define lines from the value-only rules
103
103
  def defines(prefix)
104
+ prefix ||= "CDDL"
105
+ if prefix =~ /%\d*\$?s/
106
+ format = prefix
107
+ format += "\n" unless format[-1] == "\n"
108
+ else
109
+ format = "#define #{prefix}_%s %s\n"
110
+ end
104
111
  s = {} # keys form crude set of defines
112
+ add = proc { |*a| s[format % a] = true }
105
113
  r = rules
106
- prefix ||= "CDDL"
107
114
  ast.each :rule do |rule|
108
115
  if rulename = rule.typename
109
116
  t = rule.type.children(:type1)
110
117
  if t.size == 1
111
118
  if (t2 = t.first.children(:type2)) && t2.size == 1 && (v = t2.first.value)
112
- s["#define #{prefix}_#{cname(rulename)} " << v.to_s << "\n"] = true
119
+ add.(cname(rulename), v.to_s)
113
120
  end
114
121
  end
115
122
  end
@@ -122,7 +129,7 @@ module CDDL
122
129
  subtree[1..-1].each do |x|
123
130
  if memname = x.cbor_annotations
124
131
  memname = "#{enumname}_#{cname(memname.first)}"
125
- s["#define #{prefix}_#{memname} " << x[1].to_s << "\n"] = true
132
+ add.(memname, x[1].to_s)
126
133
  end
127
134
  end
128
135
  end
@@ -138,8 +145,8 @@ module CDDL
138
145
  memname = memname.first # use value annotation otherwise
139
146
  end
140
147
  if memname
141
- memname = "#{arrayname}_#{cname(memname)}"
142
- s["#define #{prefix}_#{memname}_index " << i.to_s << "\n"] = true
148
+ memname = "#{arrayname}_#{cname(memname)}_index"
149
+ add.(memname, i.to_s)
143
150
  end
144
151
  end
145
152
  if x[0] == :member && (x[1] != 1 || x[2] != 1)
@@ -0,0 +1,68 @@
1
+ COSE_MSG = [ 1, COSE_Sign ] / [2, COSE_encrypt] / [3, COSE_mac]
2
+
3
+
4
+ COSE_Sign = (
5
+ headers,
6
+ payload : opt<bstr>,
7
+ signatures: ([+[COSE_signature]] / [COSE_signature])
8
+ )
9
+
10
+ COSE_SignMessage = #6.999([ COSE_Sign ])
11
+
12
+ keys = int / tstr
13
+ header_map = {+ keys => any}
14
+
15
+ opt<t> = t / nil
16
+
17
+ headers = (
18
+ protected: opt<bstr>,
19
+ unprotected: opt<header_map>
20
+ )
21
+
22
+ COSE_signature = (
23
+ headers,
24
+ signaturne : bstr
25
+ )
26
+
27
+ Sig_structure = [
28
+ headers,
29
+ payload : bstr
30
+ ]
31
+
32
+ COSE_encrypt = (
33
+ headers,
34
+ iv : opt<bstr>,
35
+ aad : opt<bstr>,
36
+ ciphertext : opt<bstr>,
37
+ recipients : ([+COSE_encrypt_a] / [COSE_encrypt] / nil)
38
+ )
39
+
40
+ COSE_encrypt_a = [COSE_encrypt]
41
+
42
+ Enc_structure = [
43
+ protected : opt<bstr>,
44
+ aad : opt<bstr>
45
+ ]
46
+
47
+ COSE_mac = (
48
+ headers,
49
+ payload : bstr,
50
+ tag : bstr,
51
+ recipients : ([+COSE_encrypt_a] / [COSE_encrypt] / nil)
52
+ )
53
+
54
+ MAC_structure = [
55
+ protected : opt<bstr>
56
+ payload : bstr
57
+ ]
58
+
59
+ COSE_Key = {
60
+ "kty" : tstr,
61
+ ? "use" : tstr,
62
+ ? "key_ops" : [+tstr],
63
+ ? "alg" : tstr,
64
+ ? "kid" : tstr,
65
+ * keys => values
66
+ }
67
+
68
+ COSE_KeySet = [+COSE_Key]
@@ -1191,7 +1191,7 @@ HERE
1191
1191
  p parser.rules
1192
1192
  10.times {
1193
1193
  g = parser.generate
1194
- pp ["recurse-group-test2", g]
1194
+ # pp ["recurse-group-test2", g]
1195
1195
  assert parser.validate(g)
1196
1196
  refute parser.validate(g.merge(baz: 3), false)
1197
1197
  }
@@ -1564,6 +1564,27 @@ HERE
1564
1564
  assert_equal expected, d
1565
1565
  end
1566
1566
 
1567
+ def test_extractor_type1_format_string
1568
+ parser = CDDL::Parser.new <<HERE
1569
+ BAR = a/b/c
1570
+ a = 1
1571
+ b = 2
1572
+ c = 3
1573
+ d = 4
1574
+ HERE
1575
+ expected = <<HERE
1576
+ C_a = 1
1577
+ C_b = 2
1578
+ C_c = 3
1579
+ C_d = 4
1580
+ C_BAR_a = 1
1581
+ C_BAR_b = 2
1582
+ C_BAR_c = 3
1583
+ HERE
1584
+ d = parser.defines("C_%s = %s")
1585
+ assert_equal expected, d
1586
+ end
1587
+
1567
1588
  def test_extractor_enum
1568
1589
  parser = CDDL::Parser.new <<HERE
1569
1590
 
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.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-10 00:00:00.000000000 Z
11
+ date: 2015-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cbor-diag
@@ -100,6 +100,7 @@ files:
100
100
  - test-data/b.cddl
101
101
  - test-data/basic_syntax_example.cddl
102
102
  - test-data/cdni-ct.cddl
103
+ - test-data/cose.cddl
103
104
  - test-data/dcaf.cddl
104
105
  - test-data/dcaf1.cddl
105
106
  - test-data/extractor-demo.cddl