cddl 0.8.17 → 0.8.22
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 +4 -4
- data/bin/cddl +24 -14
- data/cddl.gemspec +1 -1
- data/lib/cddl.rb +43 -15
- data/test-data/abnf2.cddl +37 -0
- data/test-data/abnf3.cddl +32 -0
- data/test-data/bat.cddl +16 -0
- data/test-data/oid.cddl +8 -0
- data/test-data/oidbat.cddl +8 -0
- data/test-data/sasl.cddl +24 -0
- data/test-data/yaron1.cddl +95 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72490cb2a368cfaec3e71cae79f323665fc64f0049feeb30050a6e8275566cda
|
4
|
+
data.tar.gz: 6ad8a0c69b34745dcd41f7c5627c57e9a4292539115f4d63c502d4c0a3cd0218
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fcbc5a8d49391656566b9f4b7d03392a579b5e999d301b2dab877aa25ff6d31c4575a94a771bdf8df0d0c3b88dd086bafe952359bb297690325204fbf732c11
|
7
|
+
data.tar.gz: 15ce2e416c02c834d3853520ca2fc8baa8b26359623dff75f6615a755a6ef4007abc2fb0170248ae5b57783e52fd779bc5c88be9cea70e7534ac9104cbfc67a8
|
data/bin/cddl
CHANGED
@@ -14,8 +14,8 @@ def usage
|
|
14
14
|
warn "Usage:"
|
15
15
|
warn "#$0 spec.cddl generate [n]"
|
16
16
|
warn "#$0 spec.cddl json-generate [n]"
|
17
|
-
warn "#$0 spec.cddl validate instance.cbor"
|
18
|
-
warn "#$0 spec.cddl validate instance.json"
|
17
|
+
warn "#$0 spec.cddl validate instance.cbor..."
|
18
|
+
warn "#$0 spec.cddl validate instance.json..."
|
19
19
|
exit EX_USAGE
|
20
20
|
end
|
21
21
|
|
@@ -48,6 +48,8 @@ def my_diag(v)
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
retcode = 0
|
52
|
+
|
51
53
|
begin
|
52
54
|
case ARGV[1]
|
53
55
|
when /\A..*p/
|
@@ -85,19 +87,25 @@ begin
|
|
85
87
|
g = parser.generate
|
86
88
|
puts JSON.pretty_generate(g)
|
87
89
|
end
|
88
|
-
when /\Av
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
when /\Av(v)?/
|
91
|
+
verbose = $1
|
92
|
+
ARGV[2..-1].each do |fn|
|
93
|
+
instance = read_arg(fn)
|
94
|
+
instance = if $sequence
|
95
|
+
CBOR.decode("\x9f".b << instance.b << "\xff".b)
|
96
|
+
else
|
97
|
+
CBOR.decode(instance.b) rescue JSON.load(instance)
|
98
|
+
end
|
99
|
+
instance = instance.cbor_clone if $annotate && ENV["EXPERIMENTAL_ANNOTATE"]
|
100
|
+
warn "#{fn}:" if verbose
|
101
|
+
ann = parser.validate(instance)
|
102
|
+
# my_pp ann
|
103
|
+
instance.cbor_add_annotations_from(ann) rescue nil
|
104
|
+
my_diag(instance) if $annotate
|
105
|
+
unless ann
|
106
|
+
retcode = 1
|
107
|
+
end
|
94
108
|
end
|
95
|
-
instance = instance.cbor_clone if $annotate && ENV["EXPERIMENTAL_ANNOTATE"]
|
96
|
-
ann = parser.validate(instance)
|
97
|
-
# my_pp ann
|
98
|
-
instance.cbor_add_annotations_from(ann) rescue nil
|
99
|
-
my_diag(instance) if $annotate
|
100
|
-
exit 1 unless ann
|
101
109
|
else
|
102
110
|
usage
|
103
111
|
end
|
@@ -105,3 +113,5 @@ rescue CDDL::ParseError => e
|
|
105
113
|
warn e.message
|
106
114
|
exit EX_DATAERR
|
107
115
|
end
|
116
|
+
|
117
|
+
exit retcode
|
data/cddl.gemspec
CHANGED
data/lib/cddl.rb
CHANGED
@@ -56,6 +56,8 @@ module CDDL
|
|
56
56
|
@ast = @abnf.ast?
|
57
57
|
# our little argument stack for rule processing
|
58
58
|
@insides = []
|
59
|
+
# collect error information
|
60
|
+
@last_message = ""
|
59
61
|
end
|
60
62
|
|
61
63
|
def apr # for debugging
|
@@ -244,6 +246,12 @@ module CDDL
|
|
244
246
|
[rule[0], *rule[1]]
|
245
247
|
end
|
246
248
|
|
249
|
+
def remove_indentation(s)
|
250
|
+
l = s.lines
|
251
|
+
indent = l.grep(/\S/).map {|l| l[/^\s*/].size}.min
|
252
|
+
l.map {|l| l.sub(/^ {0,#{indent}}/, "")}.join
|
253
|
+
end
|
254
|
+
|
247
255
|
# Memoize a bit here
|
248
256
|
|
249
257
|
REGEXP_FOR_STRING = Hash.new {|h, k|
|
@@ -255,6 +263,11 @@ module CDDL
|
|
255
263
|
h[k] = ABNF.from_abnf(grammar)
|
256
264
|
}
|
257
265
|
|
266
|
+
ABNF_ENCODING_FOR_CONOP = {
|
267
|
+
abnf: Encoding::UTF_8,
|
268
|
+
abnfb: Encoding::BINARY
|
269
|
+
}
|
270
|
+
|
258
271
|
def generate
|
259
272
|
@recursion = 0
|
260
273
|
generate1(rules)
|
@@ -399,7 +412,7 @@ module CDDL
|
|
399
412
|
when :anno
|
400
413
|
target = where[2]
|
401
414
|
control = where[3]
|
402
|
-
case where[1]
|
415
|
+
case conop = where[1]
|
403
416
|
when :size
|
404
417
|
should_be_int = generate1(control)
|
405
418
|
unless (Array === target && target[0] == :prim && [0, 2, 3].include?(target[1])) && Integer === should_be_int && should_be_int >= 0
|
@@ -447,9 +460,10 @@ module CDDL
|
|
447
460
|
generate1(target, inmap)
|
448
461
|
when :feature
|
449
462
|
generate1(target, inmap)
|
450
|
-
when :cat
|
463
|
+
when :cat, :det
|
451
464
|
lhs = generate1(target, inmap)
|
452
465
|
rhs = generate1(control)
|
466
|
+
rhs = remove_indentation(rhs) if conop == :det
|
453
467
|
begin
|
454
468
|
lhs + rhs
|
455
469
|
rescue Exception => e
|
@@ -483,7 +497,7 @@ module CDDL
|
|
483
497
|
content = Integer(content)
|
484
498
|
case target[1]
|
485
499
|
when 0
|
486
|
-
case
|
500
|
+
case conop
|
487
501
|
when :lt
|
488
502
|
rand(0...content)
|
489
503
|
when :le
|
@@ -510,18 +524,25 @@ module CDDL
|
|
510
524
|
fail "Don't know yet how to generate #{where}"
|
511
525
|
end
|
512
526
|
REGEXP_FOR_STRING[regexp].random_example(max_repeater_variance: 5)
|
513
|
-
when :abnf
|
527
|
+
when :abnf, :abnfb
|
514
528
|
grammar = generate1(control)
|
515
|
-
|
529
|
+
bytes = true if target == [:prim, 2]
|
530
|
+
bytes = false if target == [:prim, 3]
|
531
|
+
unless !bytes.nil? && String === grammar
|
516
532
|
fail "Don't know yet how to generate #{where}"
|
517
533
|
end
|
518
|
-
ABNF_PARSER_FOR_STRING[grammar].generate
|
534
|
+
out = ABNF_PARSER_FOR_STRING[grammar].generate
|
535
|
+
if conop == :abnfb
|
536
|
+
out = out.codepoints.pack("C*")
|
537
|
+
end
|
538
|
+
enc = bytes ? Encoding::BINARY : Encoding::UTF_8
|
539
|
+
out.force_encoding(enc)
|
519
540
|
when :cbor, :cborseq
|
520
541
|
unless target == [:prim, 2]
|
521
542
|
fail "Don't know yet how to generate #{where}"
|
522
543
|
end
|
523
544
|
content = CBOR::encode(generate1(control))
|
524
|
-
if
|
545
|
+
if conop == :cborseq
|
525
546
|
# remove the first head
|
526
547
|
n = case content.getbyte(0) - (4 << 5)
|
527
548
|
when 0..23; 1
|
@@ -539,7 +560,7 @@ module CDDL
|
|
539
560
|
content = generate1(target)
|
540
561
|
if validate1(content, control)
|
541
562
|
return content
|
542
|
-
elsif
|
563
|
+
elsif conop == :within
|
543
564
|
warn "*** #{content.inspect} meets #{target.inspect} but not #{control.inspect}"
|
544
565
|
end
|
545
566
|
end
|
@@ -580,7 +601,7 @@ module CDDL
|
|
580
601
|
elsif t[0] == :anno
|
581
602
|
_, conop, target, control = t
|
582
603
|
# warn ["EXV0", conop, target, control].inspect
|
583
|
-
if conop == :cat || conop == :plus
|
604
|
+
if conop == :cat || conop == :plus || conop == :det
|
584
605
|
ok1, v1, vt1 = extract_value(target)
|
585
606
|
ok2, v2, vt2 = extract_value(control)
|
586
607
|
# warn ["EXV", ok1, v1, vt1, ok2, v2, vt2].inspect
|
@@ -590,6 +611,7 @@ module CDDL
|
|
590
611
|
elsif vt1 == Float
|
591
612
|
[true, v1 + v2, vt1] if vt2 == Integer || vt2 == Float
|
592
613
|
else
|
614
|
+
v2 = remove_indentation(v2) if conop == :det
|
593
615
|
[true, v1 + v2, vt1] if vt1 == vt2
|
594
616
|
end
|
595
617
|
end rescue nil
|
@@ -634,7 +656,7 @@ module CDDL
|
|
634
656
|
|
635
657
|
def validate_result(check)
|
636
658
|
check || (
|
637
|
-
@last_message
|
659
|
+
@last_message << yield
|
638
660
|
false
|
639
661
|
)
|
640
662
|
end
|
@@ -667,7 +689,9 @@ module CDDL
|
|
667
689
|
ann.concat(ann2)
|
668
690
|
end
|
669
691
|
if occ < s
|
670
|
-
|
692
|
+
# warn "*** lme #{@last_message.encoding} #{@last_message}"
|
693
|
+
# warn "*** #{"\noccur #{occ} < #{s}, not reached at #{i} in array #{d} for #{where}".encoding}"
|
694
|
+
@last_message << "\noccur #{occ} < #{s}, not reached at #{i} in array #{d} for #{where}"
|
671
695
|
return [false, ann]
|
672
696
|
end
|
673
697
|
end
|
@@ -832,6 +856,7 @@ module CDDL
|
|
832
856
|
# warn ["ANNO0", ok1, v1, vt1, ok2, v2, vt2, d].inspect
|
833
857
|
if ok1 && ok2
|
834
858
|
v2 = Integer(v2) if vt1 == Integer
|
859
|
+
v2 = remove_indentation(v2) if conop == :det
|
835
860
|
# warn ["ANNO", ok1, v1, vt1, ok2, v2, vt2, d].inspect
|
836
861
|
[] if d == v1 + v2 # XXX Focus ArgumentError
|
837
862
|
end
|
@@ -908,17 +933,19 @@ module CDDL
|
|
908
933
|
end
|
909
934
|
end
|
910
935
|
)
|
911
|
-
when :abnf
|
936
|
+
when :abnf, :abnfb
|
912
937
|
ann if (
|
913
938
|
if String === d
|
914
939
|
ok, v, vt = extract_value(control)
|
915
940
|
if ok && vt == String
|
916
941
|
begin
|
917
|
-
ABNF_PARSER_FOR_STRING[v].validate(
|
942
|
+
ABNF_PARSER_FOR_STRING[v].validate(
|
943
|
+
d.dup.force_encoding(ABNF_ENCODING_FOR_CONOP[conop]).codepoints.pack("U*")
|
944
|
+
)
|
918
945
|
true
|
919
946
|
rescue => e
|
920
947
|
# warn "*** #{e}" # XXX
|
921
|
-
@last_message = e
|
948
|
+
@last_message = e.to_s.force_encoding(Encoding::UTF_8)
|
922
949
|
nil
|
923
950
|
end
|
924
951
|
end
|
@@ -1278,7 +1305,8 @@ module CDDL
|
|
1278
1305
|
BRACE = {"{" => :map, "[" => :array}
|
1279
1306
|
RANGE_EXCLUDE_END = {".." => false, "..." => true}
|
1280
1307
|
SUPPORTED_ANNOTATIONS = [:bits, :size, :regexp, :cbor, :cborseq, :within, :and,
|
1281
|
-
:default, :lt, :le, :gt, :ge, :eq, :ne,
|
1308
|
+
:default, :lt, :le, :gt, :ge, :eq, :ne,
|
1309
|
+
:feature, :abnf, :abnfb, :det, :cat, :plus]
|
1282
1310
|
|
1283
1311
|
def type1(n, canbegroup = false)
|
1284
1312
|
# puts "NVALUE #{n.value.inspect}"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
start = [Tag0, Tag1004]
|
2
|
+
|
3
|
+
; for draft-ietf-cbor-date-tag
|
4
|
+
Tag1004 = #6.1004(text .abnf full-date)
|
5
|
+
; for RFC 7049
|
6
|
+
Tag0 = #6.0(text .abnf date-time)
|
7
|
+
|
8
|
+
full-date = "full-date" .cat rfc3339
|
9
|
+
date-time = "date-time" .cat rfc3339
|
10
|
+
|
11
|
+
; Note the trick of idiomatically starting with a newline, separating
|
12
|
+
; off the element in the .cat from the rule-list
|
13
|
+
rfc3339 = '
|
14
|
+
date-fullyear = 4DIGIT
|
15
|
+
date-month = 2DIGIT ; 01-12
|
16
|
+
date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on
|
17
|
+
; month/year
|
18
|
+
time-hour = 2DIGIT ; 00-23
|
19
|
+
time-minute = 2DIGIT ; 00-59
|
20
|
+
time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap sec
|
21
|
+
; rules
|
22
|
+
time-secfrac = "." 1*DIGIT
|
23
|
+
time-numoffset = ("+" / "-") time-hour ":" time-minute
|
24
|
+
time-offset = "Z" / time-numoffset
|
25
|
+
|
26
|
+
partial-time = time-hour ":" time-minute ":" time-second
|
27
|
+
[time-secfrac]
|
28
|
+
full-date = date-fullyear "-" date-month "-" date-mday
|
29
|
+
full-time = partial-time time-offset
|
30
|
+
|
31
|
+
date-time = full-date "T" full-time
|
32
|
+
' .cat rfc5234-core
|
33
|
+
|
34
|
+
rfc5234-core = '
|
35
|
+
DIGIT = %x30-39 ; 0-9
|
36
|
+
; abbreviated here
|
37
|
+
'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
start = [tt, tb, bt, bb]
|
2
|
+
|
3
|
+
|
4
|
+
tt = text .abnf '4DIGIT 1FOO
|
5
|
+
DIGIT = %x30-39 ; 0-9
|
6
|
+
FOO = %xc0-cf
|
7
|
+
'
|
8
|
+
tb = text .abnfb '4DIGIT 1FOO
|
9
|
+
DIGIT = %x30-39 ; 0-9
|
10
|
+
FOO = %xc0-cf
|
11
|
+
'
|
12
|
+
bt = bytes .abnf '4DIGIT 1FOO
|
13
|
+
DIGIT = %x30-39 ; 0-9
|
14
|
+
FOO = %xc0-cf
|
15
|
+
'
|
16
|
+
bb = bytes .abnfb '4DIGIT 1FOO
|
17
|
+
DIGIT = %x30-39 ; 0-9
|
18
|
+
FOO = %xc0-cf
|
19
|
+
'
|
20
|
+
|
21
|
+
; ["7408\xC6", "7073\xC3", h'30383131CD', h'32363738CD']
|
22
|
+
; ["5892\u00ca", "2145\u00c6", h'33333338C38B', h'31343033C388']
|
23
|
+
|
24
|
+
|
25
|
+
; ** ENCOED UTF-8
|
26
|
+
; ** ENCOED UTF-8
|
27
|
+
; ** ENCOED UTF-8
|
28
|
+
; ** ENCOED UTF-8
|
29
|
+
; ["5845\u00c6", "9329\u00cb", h'38393538C389', h'33343230C386']
|
30
|
+
|
31
|
+
|
32
|
+
; ["1066\u00cc", "9253\xC9", h'38333533C38A', h'32373337C4']
|
data/test-data/bat.cddl
ADDED
data/test-data/oid.cddl
ADDED
data/test-data/sasl.cddl
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
message = text .abnfb ("message" .cat rfc4505)
|
2
|
+
|
3
|
+
rfc4505 = '
|
4
|
+
message = [ email / token ]
|
5
|
+
;; to be prepared in accordance with Section 3
|
6
|
+
|
7
|
+
UTF1 = %x00-3F / %x41-7F ;; less "@" (U+0040)
|
8
|
+
UTF2 = %xC2-DF UTF0
|
9
|
+
UTF3 = %xE0 %xA0-BF UTF0 / %xE1-EC 2(UTF0) /
|
10
|
+
%xED %x80-9F UTF0 / %xEE-EF 2(UTF0)
|
11
|
+
UTF4 = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
|
12
|
+
%xF4 %x80-8F 2(UTF0)
|
13
|
+
UTF0 = %x80-BF
|
14
|
+
|
15
|
+
TCHAR = UTF1 / UTF2 / UTF3 / UTF4
|
16
|
+
;; any UTF-8 encoded Unicode character
|
17
|
+
;; except "@" (U+0040)
|
18
|
+
|
19
|
+
email = "too@much.work"; for this example
|
20
|
+
;email = addr-spec
|
21
|
+
;; as defined in [IMAIL]
|
22
|
+
|
23
|
+
token = 1*255TCHAR
|
24
|
+
'
|
@@ -0,0 +1,95 @@
|
|
1
|
+
csr-template-schema = {
|
2
|
+
keyTypes: [ 1* $keyType ]
|
3
|
+
? subject: distinguishedName
|
4
|
+
extensions: extensions
|
5
|
+
}
|
6
|
+
|
7
|
+
mandatory-wildcard = "**"
|
8
|
+
optional-wildcard = "*"
|
9
|
+
wildcard = mandatory-wildcard / optional-wildcard
|
10
|
+
|
11
|
+
; regtext matches all text strings but "*" and "**"
|
12
|
+
regtext = text .regexp "([^\*].*)|([\*][^\*].*)|([\*][\*].+)"
|
13
|
+
|
14
|
+
regtext-or-wildcard = regtext / wildcard
|
15
|
+
|
16
|
+
distinguishedName = {
|
17
|
+
? country: regtext-or-wildcard
|
18
|
+
? stateOrProvince: regtext-or-wildcard
|
19
|
+
? locality: regtext-or-wildcard
|
20
|
+
? organization: regtext-or-wildcard
|
21
|
+
? organizationalUnit: regtext-or-wildcard
|
22
|
+
? emailAddress: regtext-or-wildcard
|
23
|
+
? commonName: regtext-or-wildcard
|
24
|
+
}
|
25
|
+
|
26
|
+
$keyType /= rsaKeyType
|
27
|
+
$keyType /= ecdsaKeyType
|
28
|
+
|
29
|
+
rsaKeyType = {
|
30
|
+
PublicKeyType: "rsaEncryption" ; OID: 1.2.840.113549.1.1.1
|
31
|
+
PublicKeyLength: rsaKeySize
|
32
|
+
SignatureType: $rsaSignatureType
|
33
|
+
}
|
34
|
+
|
35
|
+
rsaKeySize = int .ge 2048
|
36
|
+
|
37
|
+
; RSASSA-PKCS1-v1_5 with SHA-256
|
38
|
+
$rsaSignatureType /= "sha256WithRSAEncryption"
|
39
|
+
; RSASSA-PCKS1-v1_5 with SHA-384
|
40
|
+
$rsaSignatureType /= "sha384WithRSAEncryption"
|
41
|
+
; RSASSA-PCKS1-v1_5 with SHA-512
|
42
|
+
$rsaSignatureType /= "sha512WithRSAEncryption"
|
43
|
+
; RSASSA-PSS with SHA-256, MGF-1 with SHA-256, and a 32 byte salt
|
44
|
+
$rsaSignatureType /= "sha256WithRSAandMGF1"
|
45
|
+
; RSASSA-PSS with SHA-384, MGF-1 with SHA-384, and a 48 byte salt
|
46
|
+
$rsaSignatureType /= "sha384WithRSAandMGF1"
|
47
|
+
; RSASSA-PSS with SHA-512, MGF-1 with SHA-512, and a 64 byte salt
|
48
|
+
$rsaSignatureType /= "sha512WithRSAandMGF1"
|
49
|
+
|
50
|
+
ecdsaKeyType = {
|
51
|
+
PublicKeyType: "id-ecPublicKey" ; OID: 1.2.840.10045.2.1
|
52
|
+
namedCurve: $ecdsaCurve
|
53
|
+
SignatureType: $ecdsaSignatureType
|
54
|
+
}
|
55
|
+
|
56
|
+
$ecdsaCurve /= "secp256r1" ; OID: 1.2.840.10045.3.1.7
|
57
|
+
$ecdsaCurve /= "secp384r1" ; OID: 1.3.132.0.34
|
58
|
+
$ecdsaCurve /= "secp521r1" ; OID: 1.3.132.0.3
|
59
|
+
|
60
|
+
$ecdsaSignatureType /= "ecdsa-with-SHA256" ; paired with secp256r1
|
61
|
+
$ecdsaSignatureType /= "ecdsa-with-SHA384" ; paired with secp384r1
|
62
|
+
$ecdsaSignatureType /= "ecdsa-with-SHA512" ; paired with secp521r1
|
63
|
+
|
64
|
+
subjectaltname = {
|
65
|
+
? DNS: [ 1* regtext-or-wildcard ]
|
66
|
+
? Email: [ 1* regtext ]
|
67
|
+
? URI: [ 1* regtext ]
|
68
|
+
* $$subjectaltname-extension
|
69
|
+
}
|
70
|
+
|
71
|
+
extensions = {
|
72
|
+
? keyUsage: [ 1* keyUsageType ]
|
73
|
+
? extendedKeyUsage: [ 1* extendedKeyUsageType ]
|
74
|
+
subjectAltName: subjectaltname
|
75
|
+
}
|
76
|
+
|
77
|
+
keyUsageType /= "digitalSignature"
|
78
|
+
keyUsageType /= "nonRepudiation"
|
79
|
+
keyUsageType /= "keyEncipherment"
|
80
|
+
keyUsageType /= "dataEncipherment"
|
81
|
+
keyUsageType /= "keyAgreement"
|
82
|
+
keyUsageType /= "keyCertSign"
|
83
|
+
keyUsageType /= "cRLSign"
|
84
|
+
keyUsageType /= "encipherOnly"
|
85
|
+
keyUsageType /= "decipherOnly"
|
86
|
+
|
87
|
+
extendedKeyUsageType /= "serverAuth"
|
88
|
+
extendedKeyUsageType /= "clientAuth"
|
89
|
+
extendedKeyUsageType /= "codeSigning"
|
90
|
+
extendedKeyUsageType /= "emailProtection"
|
91
|
+
extendedKeyUsageType /= "timeStamping"
|
92
|
+
extendedKeyUsageType /= "OCSPSigning"
|
93
|
+
extendedKeyUsageType /= oid
|
94
|
+
|
95
|
+
oid = text .regexp "[0-9]+(\\.[0-9]+)*"
|
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.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor-diag
|
@@ -115,10 +115,13 @@ files:
|
|
115
115
|
- test-data/a.cddl
|
116
116
|
- test-data/abignum.cddl
|
117
117
|
- test-data/abnf1.cddl
|
118
|
+
- test-data/abnf2.cddl
|
119
|
+
- test-data/abnf3.cddl
|
118
120
|
- test-data/ambig.cddl
|
119
121
|
- test-data/b.cddl
|
120
122
|
- test-data/badaddr.cddl
|
121
123
|
- test-data/basic_syntax_example.cddl
|
124
|
+
- test-data/bat.cddl
|
122
125
|
- test-data/bpv7.cddl
|
123
126
|
- test-data/bpv7a.cddl
|
124
127
|
- test-data/bpv7b.cddl
|
@@ -164,8 +167,11 @@ files:
|
|
164
167
|
- test-data/mon-val.cddl
|
165
168
|
- test-data/multipart-ct.cddl
|
166
169
|
- test-data/named-group.cddl
|
170
|
+
- test-data/oid.cddl
|
171
|
+
- test-data/oidbat.cddl
|
167
172
|
- test-data/patch1.cddl
|
168
173
|
- test-data/reused_named_group.cddl
|
174
|
+
- test-data/sasl.cddl
|
169
175
|
- test-data/sequence.cddl
|
170
176
|
- test-data/structure.cddl
|
171
177
|
- test-data/test-gen.cddl
|
@@ -177,6 +183,7 @@ files:
|
|
177
183
|
- test-data/wrong2.cddl
|
178
184
|
- test-data/wrong2a.cddl
|
179
185
|
- test-data/xmlmig.cddl
|
186
|
+
- test-data/yaron1.cddl
|
180
187
|
- test/test-cddl.rb
|
181
188
|
homepage: http://github.com/cabo/cddl
|
182
189
|
licenses:
|