aboutsummaryrefslogblamecommitdiffstats
path: root/lib/asn1/test/asn1_SUITE_data/TConstrChoice.asn1
blob: 4f17786e78293e747cf1596ae8c26e22e119f0aa (plain) (tree)













































































































































































                                                                   
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