xref: /openbsd-src/lib/libutil/ober_set_header.3 (revision 62cb87032d96ebc7bac8a0a0c699edd47e2d443b)
1*62cb8703Sschwarze.\" $OpenBSD: ober_set_header.3,v 1.4 2021/08/29 19:00:20 schwarze Exp $
2696b5899Stb.\"
3696b5899Stb.\" Copyright (c) 2007, 2012 Reyk Floeter <reyk@openbsd.org>
4696b5899Stb.\"
5696b5899Stb.\" Permission to use, copy, modify, and distribute this software for any
6696b5899Stb.\" purpose with or without fee is hereby granted, provided that the above
7696b5899Stb.\" copyright notice and this permission notice appear in all copies.
8696b5899Stb.\"
9696b5899Stb.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10696b5899Stb.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11696b5899Stb.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12696b5899Stb.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13696b5899Stb.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14696b5899Stb.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15696b5899Stb.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16696b5899Stb.\"
1763beb567Smartijn.Dd $Mdocdate: August 29 2021 $
18696b5899Stb.Dt OBER_SET_HEADER 3
19696b5899Stb.Os
20696b5899Stb.Sh NAME
21696b5899Stb.Nm ober_set_header ,
22696b5899Stb.Nm ober_calc_len ,
23696b5899Stb.Nm ober_set_writecallback ,
24696b5899Stb.Nm ober_link_elements ,
25696b5899Stb.Nm ober_replace_elements ,
2663beb567Smartijn.Nm ober_dup ,
27696b5899Stb.Nm ober_unlink_elements ,
28696b5899Stb.Nm ober_free_element ,
29696b5899Stb.Nm ober_free_elements
30696b5899Stb.Nd change and destroy ASN.1 objects for BER encoding
31696b5899Stb.Sh SYNOPSIS
32696b5899Stb.In sys/types.h
33696b5899Stb.In ber.h
34696b5899Stb.Ft "void"
35696b5899Stb.Fn "ober_set_header" "struct ber_element *elm" "int class" "unsigned int type"
36696b5899Stb.Ft "size_t"
37696b5899Stb.Fn "ober_calc_len" "struct ber_element *root"
38696b5899Stb.Ft "void"
39696b5899Stb.Fo "ober_set_writecallback"
40696b5899Stb.Fa "struct ber_element *elm"
41696b5899Stb.Fa "void (*cb)(void *arg, size_t offs)"
42696b5899Stb.Fa "void *arg"
43696b5899Stb.Fc
44696b5899Stb.Ft "void"
45696b5899Stb.Fn "ober_link_elements" "struct ber_element *prev" "struct ber_element *elm"
46696b5899Stb.Ft "void"
47696b5899Stb.Fn "ober_replace_elements" "struct ber_element *prev" "struct ber_element *elm"
48696b5899Stb.Ft "struct ber_element *"
4963beb567Smartijn.Fn "ober_dup" "struct ber_element *orig"
50*62cb8703Sschwarze.Ft "struct ber_element *"
51696b5899Stb.Fn "ober_unlink_elements" "struct ber_element *prev"
52696b5899Stb.Ft "void"
53696b5899Stb.Fn "ober_free_element" "struct ber_element *root"
54696b5899Stb.Ft "void"
55696b5899Stb.Fn "ober_free_elements" "struct ber_element *root"
56696b5899Stb.Pp
57696b5899Stb.Fd #define BER_TYPE_BOOLEAN			1
58696b5899Stb.Fd #define BER_TYPE_INTEGER			2
59696b5899Stb.Fd #define BER_TYPE_BITSTRING		3
60696b5899Stb.Fd #define BER_TYPE_OCTETSTRING		4
61696b5899Stb.Fd #define BER_TYPE_NULL			5
62696b5899Stb.Fd #define BER_TYPE_OBJECT			6
63696b5899Stb.Fd #define BER_TYPE_ENUMERATED		10
64696b5899Stb.Fd #define BER_TYPE_SEQUENCE		16
65696b5899Stb.Fd #define BER_TYPE_SET			17
66696b5899Stb.Pp
67696b5899Stb.Fd #define BER_TYPE_CONSTRUCTED		0x20
68696b5899Stb.Pp
69696b5899Stb.Fd #define BER_CLASS_UNIVERSAL		0x0
70696b5899Stb.Fd #define BER_CLASS_UNIV			BER_CLASS_UNIVERSAL
71696b5899Stb.Fd #define BER_CLASS_APPLICATION		0x1
72696b5899Stb.Fd #define BER_CLASS_APP			BER_CLASS_APPLICATION
73696b5899Stb.Fd #define BER_CLASS_CONTEXT		0x2
74696b5899Stb.Fd #define BER_CLASS_PRIVATE		0x3
75696b5899Stb.Sh DESCRIPTION
76696b5899Stb.Fn ober_set_header
77696b5899Stbsets the
78696b5899Stb.Fa class
79696b5899Stband
80696b5899Stb.Fa type
81696b5899Stbof
82696b5899Stb.Fa elm .
83696b5899Stb.Pp
84696b5899Stb.Fn ober_calc_len
85696b5899Stbdetermines the total length of
86696b5899Stb.Fa root .
87696b5899Stb.Pp
88696b5899Stb.Fn ober_set_writecallback
89696b5899Stbregisters the
90696b5899Stb.Vt br_cb
91696b5899Stbcallback function.
92696b5899Stb.Pp
93696b5899Stb.Fn ober_link_elements
94696b5899Stblinks
95696b5899Stb.Fa prev
96696b5899Stband
97696b5899Stb.Fa elm .
98696b5899Stb.Pp
99696b5899Stb.Fn ober_replace_elements
100696b5899Stbreplaces
101696b5899Stb.Fa prev
102696b5899Stbwith
103696b5899Stb.Fa new
104c5d247d8Sjsgand frees any dynamically allocated storage associated with
105696b5899Stb.Fa prev .
106696b5899Stb.Pp
10763beb567Smartijn.Fn ober_dup
10863beb567Smartijnduplicates an element and all linked elements.
10963beb567Smartijn.Pp
110696b5899Stb.Fn ober_unlink_elements
111696b5899Stbunlinks
112696b5899Stb.Fa prev .
113696b5899Stb.Pp
114696b5899Stb.Fn ober_free_element
115696b5899Stband
116696b5899Stb.Fn ober_free_elements
117696b5899Stbfree any dynamically allocated storage associated with
118696b5899Stb.Fa root .
119696b5899Stb.Sh RETURN VALUES
120696b5899Stb.Fn ober_calc_len
121696b5899Stbreturns the total length of a fully populated
122696b5899Stb.Fa root
123696b5899Stbcontaining one or more
124696b5899Stb.Vt ber_element .
125696b5899Stb.Pp
12663beb567Smartijn.Fn ober_dup
12763beb567Smartijnreturns a pointer to the duplicated element or
12863beb567Smartijn.Dv NULL
12963beb567Smartijnon error.
13063beb567Smartijn.Pp
131696b5899Stb.Fn ober_unlink_elements
132696b5899Stbreturns a pointer to
133696b5899Stb.Vt ber_element .
134696b5899Stb.Sh SEE ALSO
135696b5899Stb.Xr ober_add_string 3 ,
136696b5899Stb.Xr ober_get_string 3 ,
137696b5899Stb.Xr ober_oid_cmp 3 ,
138696b5899Stb.Xr ober_read_elements 3
139696b5899Stb.Sh STANDARDS
140696b5899StbITU-T Recommendation X.690, also known as ISO/IEC 8825-1:
141696b5899StbInformation technology - ASN.1 encoding rules.
142696b5899Stb.Sh HISTORY
143*62cb8703Sschwarze.Fn ober_dup
144*62cb8703Sschwarzefirst appeared in
145*62cb8703Sschwarze.Ox 7.0 .
146*62cb8703Sschwarze.Pp
147*62cb8703SschwarzeThe other functions first appeared as internal functions in
148696b5899Stb.Xr snmpd 8
149696b5899Stbin
150696b5899Stb.Ox 4.2
151696b5899Stband were moved to libutil in
152696b5899Stb.Ox 6.6 .
153696b5899Stb.Sh AUTHORS
154696b5899Stb.An -nosplit
155696b5899StbThe BER library was written by
156696b5899Stb.An Claudio Jeker Aq Mt claudio@openbsd.org ,
157696b5899Stb.An Marc Balmer Aq Mt marc@openbsd.org
158696b5899Stband
159696b5899Stb.An Reyk Floeter Aq Mt reyk@openbsd.org .
160