(2024/01/09) This website is currently WORK IN PROGRESS. I am still performing tests and preparing the full source code to be published on github, soon.
The ASN.1 Toolkit & Simplified ASN.1
Working with ASN.1 (Abstract Syntax Notation ONE) since more than 20 years, the most 'aweful' thing was to work with all kinds of ASN.1 compilers. Moreover, the ASN.1 grammar has become (beyond the 1988 and 1993 standards) a real nightmare for anyone who wants to write her′s own ASN.1 compiler.
The formal language theory (see Chomsky-Schützenberger hierarchy) combined with the ASN.1 grammar makes it nearly impossible to write a compiler for it (some people indeed did it, though). Even I have learned a lot about LL, LR, LALR parsers, I could not create an awesome or at least ′good′ ASN.1 compiler so far.
"Simple ASN.1" (or "simplified ASN.1") is my answer. It is the common foundation of all software components I provide here.
The term ′simplified′ does not mean that it is simple for us as human beings but it is simple for the (also simple) ASN.1 parser I wrote - it understands and parses it easily.
The SimpleASN.1 parser generates an "ASN.1 type database" that is used everywhere in the main library, the libasn1tk.{so|dll}.
Main features
- ASN.1 dumping either non-symbolically or symbolically, respectively (main purpose of libasn1tk{.so|.dll});
- Processes DER (Distinguished Encoding Rules) as well as BER (Basic Encoding Rules) input data;
- Works with big integers (BN implementation provided by OpenSSL);
- Definition and implementation of "ASN.1 path" (comparable to XML path but more simple);
- 128 MB OID database (lookup symbolic OID names for OIDs in dotted notation);
- "a1sh" - the ASN.1 shell: provides scripting support to e.g. read DER (ITU-T X.690) encoded data, to modify the data, and to write it back;
- on the roadmap: Windows UI tool and later on ′The ASN.1 Workbench′;
- PDF document (generated out of the ASN.1 type database; full cross-reference): reference manual of well-known ASN.1 types (certificates, CMP protocol, LDAP, PKCS#8, PKCS#12 aka PFX, etc.).