ber_get_next - Linux


The ber_get_next command is designed for retrieving the next value from an ASN.1 encoded BER sequence, ensuring maximum data integrity during the process. It is commonly used when working with encoded data in ASN.1 format, providing a reliable and straightforward approach for data extraction.


ber_get_next(char *buf, int size, int ber_class, int ber_type, int tag)


  • buf: A buffer to store the next value.
  • size: The maximum size of the buffer.
  • ber_class: The BER class of the value.
  • ber_type: The BER type of the value.
  • tag: The tag of the value.


  • None.


Simple example:

char buf[1024];
ber_get_next(buf, sizeof(buf), BER_CLASS_APPLICATION, BER_TYPE_INTEGER, 0);

Complex example:

char buf[1024];
int cls, type, tag;
while (ber_get_next(buf, sizeof(buf), &cls, &type, &tag) != -1) {
  // Process the value

Common Issues

  • Ensure the buffer is large enough to accommodate the retrieved value.
  • If the provided tag is invalid, an error may occur.


ber_get_next can be integrated with other tools for advanced tasks:

$ ber_get_next | grep "TAG_my_tag"

Related Commands

  • ber_init: Initializes a BER decoder.
  • ber_decode: Decodes a BER-encoded value.
  • ber_peek_tag: Peeks at the next tag in a BER sequence.