1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
-- The idea with this spec is to gather definitions that has a
-- complicated structure of table constraints.
TConstr DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
MYCLASS ::= CLASS {
&id OBJECT IDENTIFIER UNIQUE,
&Type,
&Result OPTIONAL
} WITH SYNTAX {
ID &id
TYPE &Type
[RESULT &Result]
}
object1 MYCLASS ::= {ID id-object1 TYPE Type-object1 RESULT INTEGER}
object2 MYCLASS ::= {ID id-object2 TYPE Type-object2}
object3 MYCLASS ::= {ID id-object3 TYPE Type-object3 RESULT BOOLEAN}
ObjectSet MYCLASS ::= {object1 | object2 | object3}
id-object1 OBJECT IDENTIFIER ::= {2 4}
id-object2 OBJECT IDENTIFIER ::= {2 5}
id-object3 OBJECT IDENTIFIER ::= {2 6 7}
Type-object1 ::= SEQUENCE {
a INTEGER,
b BOOLEAN
}
Type-object2 ::= ENUMERATED {first, second, third}
Type-object3 ::= CHOICE {
first SEQUENCE {a BOOLEAN, b INTEGER},
second INTEGER
}
Seq1 ::= SEQUENCE {
a SEQUENCE {aa INTEGER, ab MYCLASS.&id ({ObjectSet})},
b SEQUENCE {ba INTEGER, bb MYCLASS.&Type ({ObjectSet}{@a.ab})}
}
Seq2 ::= SEQUENCE {
identity INTEGER,
content SEQUENCE {
subid MYCLASS.&id ({ObjectSet}),
subcontent MYCLASS.&Type ({ObjectSet}{@content.subid}),
subresult MYCLASS.&Result ({ObjectSet}{@content.subid})
}
}
Deeper ::= SEQUENCE {
a SEQUENCE {aa INTEGER,
s SEQUENCE { ab MYCLASS.&id ({ObjectSet}),
ac INTEGER }},
b SEQUENCE {ba INTEGER, bb MYCLASS.&Type ({ObjectSet}{@a.s.ab})}
}
-- following from Peter's definitions
MY-CLASS ::= CLASS {
&id OBJECT IDENTIFIER UNIQUE,
&Type }
WITH SYNTAX {
ID &id
TYPE &Type }
Info ::= SEQUENCE {
xyz SEQUENCE {
abc MY-CLASS.&id({Supported})
},
uvw MY-CLASS.&Type ({Supported}{@xyz.abc}) }
Supported MY-CLASS ::= { dsa | rsa }
-- dsa
id-dsa OBJECT IDENTIFIER ::= { 1 2 }
DSAPublicKey ::= INTEGER -- public key, y
dsa MY-CLASS ::= {
ID id-dsa
TYPE DSAPublicKey }
-- rsa
rsaEncryption OBJECT IDENTIFIER ::= { 1 3 4 }
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER } -- e
rsa MY-CLASS ::= {
ID rsaEncryption
TYPE RSAPublicKey }
END
|