ber_put_enum - Linux


ber_put_enum is a library function in the Botan library used to encode an enumerated value. Botan is a C++ library that provides cryptographic algorithms and protocols.


bool ber_put_enum(BER_Output& ber, const ASN1_String& value,
                  ASN1_Tag enum_tag, const std::map<std::string, uint64_t>& enum_map)


  • value: The enumerated value to be encoded.
  • enum_tag: The ASN.1 tag for the enumeration.
  • enum_map: A map that associates the enumerated values with their corresponding numerical values.


// Encode the enumerated value "foo" with the ASN.1 tag 1
std::map<std::string, uint64_t> enum_map = {{"foo", 1}, {"bar", 2}};
BER_Output ber;
ber_put_enum(ber, "foo", 1, enum_map);

Common Issues

  • Error: The enumerated value is not found in the enum_map.
  • Solution: Ensure that the enumerated value is present in the enum_map and associated with the correct numerical value.


ber_put_enum can be used with other Botan functions to encode ASN.1 structures. For example, it can be used to encode the subject field of a certificate.

Related Commands

  • ber_get_enum: Decodes an enumerated value from an ASN.1 structure.
  • ASN1_String: Represents an ASN.1 string.
  • BER_Output: Represents an ASN.1 output.