ASN.1 DER SET是否允许同一键的多个条目?基于给定定义问询
ASN.1 DER类型的SET是否允许同一键的多个条目?
不允许,结合你给出的PersonalName定义具体说明:
你提供的ASN.1定义如下:
PersonalName ::= SET { surname [0] IMPLICIT PrintableString (SIZE (1..ub-surname-length)), given-name [1] IMPLICIT PrintableString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] IMPLICIT PrintableString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] IMPLICIT PrintableString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
根据ASN.1 DER的编码规则:
- SET类型的每个组件(包括必选和可选字段)在编码中必须唯一出现,绝对不允许重复编码同一个键对应的条目。
- DER是严格的确定性编码规则,要求每个合法的ASN.1值对应唯一的DER编码,重复字段会破坏这种确定性,属于无效的DER编码,解析器通常会直接判定为非法。
如果需要支持同一类型的多个条目,应该使用SEQUENCE OF或SET OF这类集合型类型,而非单个SET的组件。你的定义里surname是带[0]标签的必选字段,重复编码完全违反DER规范。
内容的提问来源于stack exchange,提问作者Florat
相关产品推荐
相关产品推荐

