SEQUENCE¶
The ASN.1 SEQUENCE type represents an ordered collection of fields,
similar to a record or a struct in other programming languages.
Each field in a SEQUENCE can be mandatory or optional, and may have
default values. The fields can be of any ASN.1 type, including other
constructed types.
Attention
Default values are still in development!
Example ASN.1 definition:
Person ::= SEQUENCE {
name UTF8String,
age INTEGER OPTIONAL,
married BOOLEAN DEFAULT FALSE
}
generates the following Python class:
class Person(_Asn1Type):
name: str
age: int | None
married: bool
def __init__(
self,
name: str = ...,
age: int | None = ...,
married: bool = ...,
) -> None:
In Python, each ASN.1 SEQUENCE generates a class that behaves like a C-style
struct with named attributes for each field.
All mandatory fields are initialized to their default value or a zero-equivalent.
Optional fields are initialized as
None.Setting one field does not affect others.
Access to each field is through a Python attribute with the same name.
Encoding and decoding methods follow the enabled ASN.1 encoding rules.
Conceptual Representation¶
- class _Asn1SequenceType
Represents an ASN.1 SEQUENCE.
- __init__(self, *, field1: Any = ..., field2: Any = ..., ...) None
Initializes a new SEQUENCE instance.
Optional fields default to
Noneif not provided.Non-optional fields are initialized to their default or zero-equivalent value.
Fields are passed as keyword arguments only.
- property field_name
Access or set the value of the field named
field_name.Setting the field updates its internal ASN.1 value.
Getting the field returns the current value or
Noneif optional and unset.
Behavior¶
The SEQUENCE class acts like a typed container, allowing access by attribute name.
Fields are initialized automatically, enabling encoding even without explicit field initialization, as the underlying binding initializes values to zero.
Optional fields left unset will be omitted during encoding.
Default values are applied automatically unless explicitly overridden.
Example Usage in Python:
person = Person(name="Alice")
print(person.age) # None, as age is optional and unset
person.married = True # Override default FALSE value
encoded = person.ber_encode()