首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASN1全局约束

ASN1全局约束
EN

Stack Overflow用户
提问于 2020-03-09 11:24:57
回答 1查看 172关注 0票数 0

下面的模块包括sKeyPkgAttrs (全局)和(本地)。我想在这些文件中添加一些属性。如果属性存在于sKeyPkgAttrs中,那么它就不能存在于SKeyAttributes中,反之亦然。

我的一些属性是可选的,有些必须出现在这个模块中。

问题:是否有可能对该模块进行约束,使其能够检查上面的某个属性是否出现,从而无法将其放入另一个模块?如果一个属性出现了(当它是一个必须的时候)

例如,:

我在OPTIONAL

  • constrain "WITH COMPONENT“中放置了相同的属性--都是duplicate

  • some”WITH COMPONENT“,检查是否至少有一个属性存在

  • ,如果属性不存在,则检查其他约束,检查是否必须是属性,是否存在

代码语言:javascript
复制
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 ::= { ... }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 17:34:35

您需要对SymmetricKeyPackage本身设置一个约束。不幸的是,ASN.1对我认为您正在寻找的那种唯一性检查没有限制。ASN.1确实允许如下所谓的用户约束:

代码语言:javascript
复制
SymmetricKeyPackage ::= SEQUENCE {
   version           KeyPkgVersion DEFAULT v1,
   sKeyPkgAttrs  [0] SEQUENCE SIZE (1..MAX) OF Attribute
                                  {{ SKeyPkgAttributes }} OPTIONAL,
   sKeys             SymmetricKeys,
   ... } (CONSTRAINED BY {-- comment describing constraint --})

有些ASN.1工具会忽略这个约束,但是有些ASN.1工具会创建一个函数存根,在其中您可以编写自己的代码来执行这种超出ASN.1约束表示法内置功能的约束。显然,您需要将--注释描述约束--替换为您试图施加的约束的完整描述。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60599571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档