aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1parser/asn1p_oid.h
blob: 489a3c5a6779075bfc6d2541fa35342340643ce9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
 * 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 {
	asn1c_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, asn1c_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 constructors.
 */
asn1p_oid_t *asn1p_oid_new(void);
asn1p_oid_t *asn1p_oid_construct(asn1p_oid_arc_t *, int narcs);

/*
 * 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 */