NamedTypes

class pyasn1.type.namedtype.NamedTypes(*namedTypes, **kwargs)

Create a collection of named fields for a constructed ASN.1 type.

The NamedTypes object represents a collection of named fields of a constructed ASN.1 type.

NamedTypes objects are immutable and duck-type Python dict objects holding name as keys and ASN.1 type object as values.

Parameters:

*namedTypes (NamedType)

Examples

class Description(Sequence):
    '''
    ASN.1 specification:

    Description ::= SEQUENCE {
        surname    IA5String,
        first-name IA5String OPTIONAL,
        age        INTEGER DEFAULT 40
    }
    '''
    componentType = NamedTypes(
        NamedType('surname', IA5String()),
        OptionalNamedType('first-name', IA5String()),
        DefaultedNamedType('age', Integer(40))
    )

descr = Description()
descr['surname'] = 'Smith'
descr['first-name'] = 'John'

Note

The NamedTypes objects are normally utilized by the constructed ASN.1 types (e.g. Sequence, Set and Choice) to model the set of fields of those types.

getTypeByPosition(idx)

Return ASN.1 type object by its position in fields set.

Parameters:

idx (int) – Field index

Returns:

ASN.1 type

Raises:

PyAsn1Error – If given position is out of fields range

getPositionByType(tagSet)

Return field position by its ASN.1 type.

Parameters:

tagSet (TagSet) – ASN.1 tag set distinguishing one ASN.1 type from others.

Returns:

int – ASN.1 type position in fields set

Raises:

PyAsn1Error – If tagSet is not present or ASN.1 types are not unique within callee NamedTypes

getNameByPosition(idx)

Return field name by its position in fields set.

Parameters:

idx (idx) – Field index

Returns:

str – Field name

Raises:

PyAsn1Error – If given field name is not present in callee NamedTypes

getPositionByName(name)

Return field position by filed name.

Parameters:

name (str) – Field name

Returns:

int – Field position in fields set

Raises:

PyAsn1Error – If name is not present or not unique within callee NamedTypes

getTagMapNearPosition(idx)

Return ASN.1 types that are allowed at or past given field position.

Some ASN.1 serialisation allow for skipping optional and defaulted fields. Some constructed ASN.1 types allow reordering of the fields. When recovering such objects it may be important to know which types can possibly be present at any given position in the field sets.

Parameters:

idx (int) – Field index

Returns:

TagMap – Map if ASN.1 types allowed at given field position

Raises:

PyAsn1Error – If given position is out of fields range

getPositionNearType(tagSet, idx)

Return the closest field position where given ASN.1 type is allowed.

Some ASN.1 serialisation allow for skipping optional and defaulted fields. Some constructed ASN.1 types allow reordering of the fields. When recovering such objects it may be important to know at which field position, in field set, given tagSet is allowed at or past idx position.

Parameters:
  • tagSet (TagSet) – ASN.1 type which field position to look up

  • idx (int) – Field position at or past which to perform ASN.1 type look up

Returns:

int – Field position in fields set

Raises:

PyAsn1Error – If tagSet is not present or not unique within callee NamedTypes or idx is out of fields range

property minTagSet

Return the minimal TagSet among ASN.1 type in callee NamedTypes.

Some ASN.1 types/serialisation protocols require ASN.1 types to be arranged based on their numerical tag value. The minTagSet property returns that.

Returns:

TagSet – Minimal TagSet among ASN.1 types in callee NamedTypes

property tagMap

Return a TagMap object from tags and types recursively.

Return a TagMap object by combining tags from TagMap objects of children types and associating them with their immediate child type.

Example

OuterType ::= CHOICE {
    innerType INTEGER
}

Calling .tagMap on OuterType will yield a map like this:

Integer.tagSet -> Choice
property tagMapUnique

Return a TagMap object from unique tags and types recursively.

Return a TagMap object by combining tags from TagMap objects of children types and associating them with their immediate child type.

Example

OuterType ::= CHOICE {
    innerType INTEGER
}

Calling .tagMapUnique on OuterType will yield a map like this:

Integer.tagSet -> Choice

Note

Duplicate TagSet objects found in the tree of children types would cause error.