/* * Object Identifier definition. */ #ifndef ASN1_PARSER_OID_H #define ASN1_PARSER_OID_H /******************************** * Single Object Identifier Arc * ********************************/ /* * Object identifier arc (one number in the hierarchy). */ typedef struct asn1p_oid_arc_s { asn1_integer_t number; /* -1 if not yet defined */ char *name; /* 0 if not defined */ } asn1p_oid_arc_t; /* * Arc constructor. */ asn1p_oid_arc_t *asn1p_oid_arc_new( const char *optName, asn1_integer_t optNumber /* = -1 */); /* * Arc destructor. */ void asn1p_oid_arc_free(asn1p_oid_arc_t *); /************************************************** * Object Identifier itself, a collection of arcs * **************************************************/ /* * Object Identifier as a collection of arcs. */ typedef struct asn1p_oid_s { asn1p_oid_arc_t *arcs; int arcs_count; } asn1p_oid_t; /* * OID constructor. */ asn1p_oid_t *asn1p_oid_new(void); /* * Add another arc using given one as a template */ int asn1p_oid_add_arc(asn1p_oid_t *, asn1p_oid_arc_t *template); /* * OID destructor. */ void asn1p_oid_free(asn1p_oid_t *); /* * RETURN VALUES: * 0: The specified OIDs are equal. * -1 or 1 otherwise. */ int asn1p_oid_compare(asn1p_oid_t *a, asn1p_oid_t *b); #endif /* ASN1_PARSER_OID_H */