Ниже модуль имеет sKeyPkgAttrs (глобальный) и SKeyAttributes (локальный). Я хочу добавить в них некоторые атрибуты. Если атрибут присутствует в sKeyPkgAttrs, то он НЕ ДОЛЖЕН присутствовать в SKeyAttributes — и наоборот.
Некоторые из моих атрибутов НЕОБЯЗАТЕЛЬНЫ, а некоторые ДОЛЖНЫ БЫТЬ представлены в этом модуле.
Вопрос. Можно ли ограничить этот модуль таким образом, чтобы он проверял, появился ли атрибут в одном из вышеперечисленных, чтобы его нельзя было поместить в другой? И если атрибут вообще появился (когда ДОЛЖЕН БЫТЬ)
Например:
- Я поместил те же атрибуты в sKeyPkgAttrs и SKeyAttributes - все как НЕОБЯЗАТЕЛЬНЫЕ
- constrain "WITH COMPONENT" проверяет наличие хотя бы одного атрибута
- некоторые другие проверки ограничений, если атрибуты не дублируются
- некоторые другие проверки ограничений, если присутствуют атрибуты ДОЛЖНЫ БЫТЬ
SymmetricKeyPackage ::= SEQUENCE {
version KeyPkgVersion DEFAULT v1,
sKeyPkgAttrs [0] SEQUENCE SIZE (1..MAX) OF Attribute
{{ SKeyPkgAttributes }} OPTIONAL,
sKeys SymmetricKeys,
... }
SymmetricKeys ::= SEQUENCE SIZE (1..MAX) OF OneSymmetricKey
OneSymmetricKey ::= SEQUENCE {
sKeyAttrs SEQUENCE SIZE (1..MAX) OF Attribute
{{ SKeyAttributes }} OPTIONAL,
sKey OCTET STRING OPTIONAL }
( WITH COMPONENTS { ..., sKeyAttrs PRESENT } |
WITH COMPONENTS { ..., sKey PRESENT } )
KeyPkgVersion ::= INTEGER { v1(1) } ( v1, ... )
SKeyPkgAttributes ATTRIBUTE ::= { ... }
SKeyAttributes ATTRIBUTE ::= { ... }