My ASN.1 Notes

From Got Opinion Wiki
Revision as of 13:45, 21 August 2020 by Paul (talk | contribs) (→‎My Notes)
Jump to navigation Jump to search

Resources

OSS Nokalva

Objective Sytems

Power ASN

ETSI ASN.1 Object Identifiers Tree

Mobile Application Part (MAP) CommonDataTypes.asn

Python ASN.1 Resources

Pycrate is a french word for qualifying bad wine. The present software library has nothing to do with bad wine, it is simply a Python library for manipulating various digital formats in an easy way. It is the glorious successor of libmich, which was started 8 years ago and served well.

It provides basically a runtime for encoding and decoding data structures, including CSN.1 and ASN.1. Additionally, it features a 3G and LTE mobile core network.

pyasn1 is a free and open source implementation of ASN.1 types and codecs as a Python package. It has been first written to support particular protocol (SNMP) but then generalized to be suitable for a wide range of protocols based on ASN.1 specification.

asn1ate is a Python library for translating ASN.1 into other forms. It is intended for code generation from formal ASN.1 definitions, and a code generator for pyasn1 is included.

Python-ASN1 is a simple ASN.1 encoder and decoder for Python 2.6+ and 3.3+.

asn1tinydecoder.py is a simple and fast ASN.1 decoder without external libraries designed to parse large files.

Nice examples

Example explaining CHOICE tagging

Example to understand IMPLICIT tagging

TBCD

Telephony Binary-Coded Decimal strings are not part of the ASN.1 standard, but their use is prevalent in many telephony-related ASN.1 specifications.

Conversion of these types into standard numeric text strings is supported by Objective Systems software.

In general, BCD strings pack two numeric digits into a single byte value by using a four-bit nibble to hold each digit. By convention, the digits are reversed in TBCD strings, but there are no official standards for this encoding.

My Notes

Source: ETSI TS 101 671 V3.15.1 (2018-06)

TimeStamp ::= CHOICE
{
	localTime [0] LocalTimeStamp,
	utcTime [1] UTCTime
}

LocalTimeStamp ::= SEQUENCE
{
	generalizedTime [0] GeneralizedTime,
	winterSummerIndication [1] ENUMERATED
	{
		notProvided(0),
		winterTime(1),
		summerTime(2),
		...
	}
}

List of common ASN.1 Types which includes UTCTime and GeneralizedTime in TimeStamp example above.

Back to Computing