PKCS#9中的这种双重约束语法合法吗?

时间:2019-02-12 16:26:06

标签: parsing syntax asn.1

在PKCS#9标准中,它们具有以下分配。第一行定义类型PrintableString,该类型只能长两个字符,并且必须是ISO / IEC3166中定义的两个字母国家(地区)首字母缩写。用于定义此约束的语法是彼此遵循的两个单独的约束,但是从ASN.1标准来看,只能有一个“根”约束。 PKCS#9标准中使用的语法不正确吗?

countryOfResidence ATTRIBUTE ::= {
    WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY {
    -- Must be a two-letter country acronym in accordance with
    -- ISO/IEC 3166 --})
    EQUALITY MATCHING RULE caseIgnoreMatch
    ID pkcs-9-at-countryOfResidence
}

ATTRIBUTE ::= CLASS {
  &derivation            ATTRIBUTE OPTIONAL,
  &Type                  OPTIONAL, -- either &Type or &derivation required
  &equality-match        MATCHING-RULE OPTIONAL,
  &ordering-match        MATCHING-RULE OPTIONAL,
  &substrings-match      MATCHING-RULE OPTIONAL,
  &single-valued         BOOLEAN DEFAULT FALSE,
  &collective            BOOLEAN DEFAULT FALSE,
  &dummy                 BOOLEAN DEFAULT FALSE,
  -- operational extensions
  &no-user-modification  BOOLEAN DEFAULT FALSE,
  &usage                 AttributeUsage 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]
  [DUMMY &dummy]
  [NO USER MODIFICATION &no-user-modification]
  [USAGE &usage]
  ID &id
}

ASN.1生产(在ISO / IEC 8824-1:2015 / ITU-T X.680建议书(08/2015)第87页中找到)

ConstrainedType ::=
    Type Constraint
    | TypeWithConstraint

Constraint ::= "(" ConstraintSpec ExceptionSpec ")"
ConstraintSpec ::=
    SubtypeConstraint
    | GeneralConstraint

1 个答案:

答案 0 :(得分:2)

可以连续应用约束。是合法的。您要添加约束的“类型”本身可以是“ ConstrainedType”。