[erlang-questions] Decoding of ASN.1 BER files
Sat Sep 29 12:01:36 CEST 2007
A hint and a request.
The hint: If you need to process files of ASN.1 structures concatenated
together then the standard routines generated by the asn1ct module will
almost work perfectly (proven for BER at least), you only need to alter
the <toplevel>:decode/2 to return the remaining bytes and length from
whatever reasonable size chunk of binary data you pass in (they default
to suppressing it). Concatenate, rinse, repeat. A simple fix, but like
most simple fixes they take more investigation than the ugly hack that
went before them...
The request: It would be nice if the asn1ct generated <ASN1_erl>:decode
functions returned this information by default, or via an alternative
entry point. I can understand the encode routines accepting exactly the
required amount of data, but for decodes having the correct information
only occurs in some circumstances such as TCAP packet decoding (and even
there it is of interest to know if there are leftovers).
If there is interest and /// motivation I can produce a patch to provide
this behaviour, or otherwise if someone can tell me the rationale for
not providing it and how else I should parse files I'd be interested.
For those still reading I am constructing a webpage for 3GPP CDR
decoding (MSC, SGSN, IMS, LBS etc). Someone at work described how their
hand-coded BER decoder crashed when extra fields were added (!) the
other day and that offended me to the point of getting the 3GPP ASN.1
source for CDRs compiling under Erlang (non-trivial dependencies). I'll
post the url when the rest is working.
More information about the erlang-questions