Является ли этот синтаксис двойного ограничения из PKCS # 9 законным? - PullRequest
0 голосов
/ 12 февраля 2019

В стандарте 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 (найдено в ИСО / МЭК 8824-1: 2015 / Рек. МСЭ-Т X.680 (08/2015)стр. 87)

ConstrainedType ::=
    Type Constraint
    | TypeWithConstraint

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

1 Ответ

0 голосов
/ 12 февраля 2019

Ограничения могут применяться последовательно.Это законно.«Тип», к которому вы добавляете ограничение, сам по себе может быть «ConstrainedType».

...