#!/usr/bin/ruby class OidName def initialize(oid, name) @oid = oid @name = name end def der_to_str(d) s = "(byte*)\"" d.each do |b| s += sprintf("\\x%02x", b) end s + "\"" end def write() puts < 0 tmp << ((n & 0x7f) | bit) n >>= 7 bit = 0x80 end der += tmp.reverse end der end def add(oid, name) @oid_name << OidName.new(decode_dotted(oid), name) end def write_struct() puts < oid_names.h */ EOF puts write_struct() puts puts "static asn1App_OidName asn1App_oid_name[#{@oid_name.length}] = {" @oid_name.each do |o| o.write() end puts "};" puts puts "int asn1App_oid_names_len = #{@oid_name.length};" puts end end oid = "" oidNames = OidNames.new() File.readlines(ARGV[0]).each do |l| next if l.length == 0 next if l[0] == '#' var, value = l.split(/ = /) case var when /OID/ oid = value when /Description/ oidNames.add(oid, value.strip) end end oidNames.write()