Ниже модуль имеет sKeyPkgAttrs (глобальный) и SKeyAttributes (локальный). Я хочу добавить некоторые атрибуты в них. Если атрибут присутствует в sKeyPkgAttrs, то он НЕ ДОЛЖЕН присутствовать в SKeyAttributes - и наоборот.
Некоторые из моих атрибутов являются НЕОБЯЗАТЕЛЬНЫМИ, и некоторые ДОЛЖНЫ БЫТЬ присутствовать в этом модуле.
Вопрос : можно ли ограничить этот модуль таким образом, чтобы он проверял, появился ли атрибут в одном из вышеперечисленных, поэтому его нельзя вставить в другой? И если атрибут появляется вообще (когда он ДОЛЖЕН БЫТЬ)
Например, :
- Я помещаю те же атрибуты в sKeyPkgAttrs и SKeyAttributes - все как OPTIONAL
- ограничение «WITH COMPONENT» проверяет наличие хотя бы одного атрибута
- некоторая другая проверка ограничения, если атрибуты не дублируют
- некоторая другая проверка ограничения, если атрибуты MUST BE настоящее время
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 ::= { ... }