For my hobby cryptography project, I'm planning to implement some helper functions that parses a subset of ASN.1 BER encoding without using a ASN.1 compiler. For this purpose, I'd like to use 32-bit integer for the internal representation of tags' and lengths' values.

If I were to extend my library to other application domains such as CMS (cryptographic message syntax), should I prepare to extend my type to 64-bit?

  • $\begingroup$ I'm beginning to regret asking it, as my parser functions are multi-pass and couldn't confidently handle streaming encoding/decoding. But anyway, an answer might be helpful for others concerned with CMS. $\endgroup$
    – DannyNiu
    Feb 11, 2021 at 9:55
  • $\begingroup$ If it cannot handle streaming then the question becomes a bit meaningless for the length encoding; you don't want to store more than 4GiB of data, even if you could (array / indexing restrictions). I have never seen a 4 byte tag, so that's OK. Beware that BER may store a small length into multiple bytes including zero padding at the left... $\endgroup$
    – Maarten Bodewes
    Feb 11, 2021 at 10:41


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.