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