aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/asn1_bin_v2_SUITE_data/TConstrChoice.asn1
blob: 4f17786e78293e747cf1596ae8c26e22e119f0aa (plain) (blame)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
TConstrChoice DEFINITIONS ::=
BEGIN


FilterItem ::= CHOICE {
    equality [0] AttributeValueAssertion,
    substrings [1] SEQUENCE {
	type ATTRIBUTE.&id({SupportedAttributes}),
	strings SEQUENCE OF CHOICE {
	    initial [0] ATTRIBUTE.&Type
	    ({SupportedAttributes}{@substrings.type}),
	    any [1] ATTRIBUTE.&Type
	    ({SupportedAttributes}{@substrings.type}),
	    final [2] ATTRIBUTE.&Type
	    ({SupportedAttributes}{@substrings.type}) }},
    greaterOrEqual [2] AttributeValueAssertion,
    lessOrEqual [3] AttributeValueAssertion,
    present [4] AttributeType,
    approximateMatch [5] AttributeValueAssertion,
    extensibleMatch [6] MatchingRuleAssertion }

AttributeValueAssertion ::= SEQUENCE {
    type ATTRIBUTE.&id({SupportedAttributes}),
    assertion ATTRIBUTE.&equality-match.&AssertionType
    ({SupportedAttributes}{@type}) }

MatchingRuleAssertion ::= SEQUENCE {
    type MATCHING-RULE.&id({MatchingRules}),
    assertion MATCHING-RULE.&AssertionType ({MatchingRules}{@type})
    }

AttributeType ::= INTEGER(0..127)

ATTRIBUTE ::= CLASS {
    &derivation ATTRIBUTE OPTIONAL,
    &Type OPTIONAL,
    &equality-match MATCHING-RULE OPTIONAL,
    &ordering-match MATCHING-RULE OPTIONAL,
    &substrings-match MATCHING-RULE OPTIONAL,
    &single-valued BOOLEAN DEFAULT FALSE,
    &collective BOOLEAN DEFAULT FALSE,
    &no-user-modification BOOLEAN DEFAULT FALSE,
    &usage Attribute-Usage DEFAULT userApplications,
    &id OBJECT IDENTIFIER UNIQUE }
WITH SYNTAX {
    [SUBTYPE OF &derivation]
    [WITH SYNTAX &Type]
    [EQUALITY MATCHING RULE &equality-match]
    [ORDERING MATCHING RULE &ordering-match]
    [SUBSTRINGS MATCHING RULE &substrings-match]
    [SINGLE VALUE &single-valued]
    [COLLECTIVE &collective]
    [NO USER MODIFICATION &no-user-modification]
    [USAGE &usage]
    ID &id }

Attribute-Usage ::= ENUMERATED { userApplications(0),
    directoryOperation(1), distributedOperation(2),
    dSAOperation(3) }


surname ATTRIBUTE ::= { -- family name
    SUBTYPE OF name
    WITH SYNTAX DirectoryString
    ID id-at-surname }

givenName ATTRIBUTE ::= { -- first name
    SUBTYPE OF name
    WITH SYNTAX DirectoryString
    ID id-at-givenName }

countryName ATTRIBUTE ::= { -- country
    SUBTYPE OF name
    WITH SYNTAX PrintableString (SIZE (2)) -- [ISO3166] codes
    SINGLE VALUE TRUE
    ID id-at-countryName}

SupportedAttributes ATTRIBUTE ::=
{surname | givenName | countryName}

-- id-at-surname DirectoryString ::= universalString:"SureName"

id-at-surname OBJECT IDENTIFIER ::= {2 4}

-- id-at-givenName DirectoryString ::= printableString:"GivenName"

id-at-givenName OBJECT IDENTIFIER ::= {2 5}

-- id-at-countryName  PrintableString (SIZE (2)) ::= "CN" 

id-at-countryName OBJECT IDENTIFIER ::= {2 6}

MATCHING-RULE ::= CLASS {
    &AssertionType OPTIONAL,
    &id OBJECT IDENTIFIER UNIQUE }
WITH SYNTAX {
    [SYNTAX &AssertionType]
    ID &id }

MatchingRules MATCHING-RULE ::= {
    caseIgnoreMatch | booleanMatch | integerMatch }

LessMatchingRules MATCHING-RULE ::= {
    MatchingRules EXCEPT caseIgnoreMatch }

ExtensibleMatchingRules MATCHING-RULE ::= {
    caseIgnoreMatch | booleanMatch | integerMatch, ... }

name ATTRIBUTE ::= {
    WITH SYNTAX DirectoryString
    EQUALITY MATCHING RULE caseIgnoreMatch
    ID id-name }


DirectoryString ::= CHOICE {
    teletexString TeletexString (SIZE (1..maxSize)),
    printableString PrintableString (SIZE (1..maxSize)),
    universalString UniversalString (SIZE (1..maxSize)),
    bmpString BMPString (SIZE (1..maxSize))
--    utf8String UTF8String (SIZE (1..maxSize))
    }

maxSize INTEGER ::= 25

caseIgnoreMatch MATCHING-RULE ::= {
    SYNTAX DirectoryString
    ID id-caseIgnoreMatch
    }

booleanMatch MATCHING-RULE ::= {
    SYNTAX  BOOLEAN
    ID id-booleanMatch
    }

integerMatch MATCHING-RULE ::= {
    SYNTAX INTEGER
    ID  id-integerMatch
    }

id-mr OBJECT IDENTIFIER ::=
{2 5 11}

id-name OBJECT IDENTIFIER ::= {2 5 11 5}

id-caseIgnoreMatch OBJECT IDENTIFIER ::= {2 5 11 2}

id-booleanMatch OBJECT IDENTIFIER ::= {2 5 11 13}

id-integerMatch OBJECT IDENTIFIER ::= {2 5 11 14}

--{joint-iso-itu-t ds(5) matchingRule(13)}

-- test code for OTP-4248

NOTUNIQUE ::= CLASS {
  &value  INTEGER,
  &Type
}
WITH SYNTAX {
  VALUE &value
  TYPE &Type
}


nuObject NOTUNIQUE ::= {VALUE 3 TYPE FilterItem}

NuObjectSet NOTUNIQUE ::= {nuObject}

Seq ::= SEQUENCE {
  a  NOTUNIQUE.&value ({NuObjectSet}),
  b  NOTUNIQUE.&Type ({NuObjectSet}{@a})
}


END