xref: /openbsd/lib/libutil/ober_set_header.3 (revision 09467b48)
1.\" $OpenBSD: ober_set_header.3,v 1.1 2019/10/24 12:39:26 tb Exp $
2.\"
3.\" Copyright (c) 2007, 2012 Reyk Floeter <reyk@openbsd.org>
4.\"
5.\" Permission to use, copy, modify, and distribute this software for any
6.\" purpose with or without fee is hereby granted, provided that the above
7.\" copyright notice and this permission notice appear in all copies.
8.\"
9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16.\"
17.Dd $Mdocdate: October 24 2019 $
18.Dt OBER_SET_HEADER 3
19.Os
20.Sh NAME
21.Nm ober_set_header ,
22.Nm ober_calc_len ,
23.Nm ober_set_writecallback ,
24.Nm ober_link_elements ,
25.Nm ober_replace_elements ,
26.Nm ober_unlink_elements ,
27.Nm ober_free_element ,
28.Nm ober_free_elements
29.Nd change and destroy ASN.1 objects for BER encoding
30.Sh SYNOPSIS
31.In sys/types.h
32.In ber.h
33.Ft "void"
34.Fn "ober_set_header" "struct ber_element *elm" "int class" "unsigned int type"
35.Ft "size_t"
36.Fn "ober_calc_len" "struct ber_element *root"
37.Ft "void"
38.Fo "ober_set_writecallback"
39.Fa "struct ber_element *elm"
40.Fa "void (*cb)(void *arg, size_t offs)"
41.Fa "void *arg"
42.Fc
43.Ft "void"
44.Fn "ober_link_elements" "struct ber_element *prev" "struct ber_element *elm"
45.Ft "void"
46.Fn "ober_replace_elements" "struct ber_element *prev" "struct ber_element *elm"
47.Ft "struct ber_element *"
48.Fn "ober_unlink_elements" "struct ber_element *prev"
49.Ft "void"
50.Fn "ober_free_element" "struct ber_element *root"
51.Ft "void"
52.Fn "ober_free_elements" "struct ber_element *root"
53.Pp
54.Fd #define BER_TYPE_BOOLEAN			1
55.Fd #define BER_TYPE_INTEGER			2
56.Fd #define BER_TYPE_BITSTRING		3
57.Fd #define BER_TYPE_OCTETSTRING		4
58.Fd #define BER_TYPE_NULL			5
59.Fd #define BER_TYPE_OBJECT			6
60.Fd #define BER_TYPE_ENUMERATED		10
61.Fd #define BER_TYPE_SEQUENCE		16
62.Fd #define BER_TYPE_SET			17
63.Pp
64.Fd #define BER_TYPE_CONSTRUCTED		0x20
65.Pp
66.Fd #define BER_CLASS_UNIVERSAL		0x0
67.Fd #define BER_CLASS_UNIV			BER_CLASS_UNIVERSAL
68.Fd #define BER_CLASS_APPLICATION		0x1
69.Fd #define BER_CLASS_APP			BER_CLASS_APPLICATION
70.Fd #define BER_CLASS_CONTEXT		0x2
71.Fd #define BER_CLASS_PRIVATE		0x3
72.Sh DESCRIPTION
73.Fn ober_set_header
74sets the
75.Fa class
76and
77.Fa type
78of
79.Fa elm .
80.Pp
81.Fn ober_calc_len
82determines the total length of
83.Fa root .
84.Pp
85.Fn ober_set_writecallback
86registers the
87.Vt br_cb
88callback function.
89.Pp
90.Fn ober_link_elements
91links
92.Fa prev
93and
94.Fa elm .
95.Pp
96.Fn ober_replace_elements
97replaces
98.Fa prev
99with
100.Fa new
101and frees any dynamically allocated storage assocated with
102.Fa prev .
103.Pp
104.Fn ober_unlink_elements
105unlinks
106.Fa prev .
107.Pp
108.Fn ober_free_element
109and
110.Fn ober_free_elements
111free any dynamically allocated storage associated with
112.Fa root .
113.Sh RETURN VALUES
114.Fn ober_calc_len
115returns the total length of a fully populated
116.Fa root
117containing one or more
118.Vt ber_element .
119.Pp
120.Fn ober_unlink_elements
121returns a pointer to
122.Vt ber_element .
123.Sh SEE ALSO
124.Xr ober_add_string 3 ,
125.Xr ober_get_string 3 ,
126.Xr ober_oid_cmp 3 ,
127.Xr ober_read_elements 3
128.Sh STANDARDS
129ITU-T Recommendation X.690, also known as ISO/IEC 8825-1:
130Information technology - ASN.1 encoding rules.
131.Sh HISTORY
132These functions first appeared as internal functions in
133.Xr snmpd 8
134in
135.Ox 4.2
136and were moved to libutil in
137.Ox 6.6 .
138.Sh AUTHORS
139.An -nosplit
140The BER library was written by
141.An Claudio Jeker Aq Mt claudio@openbsd.org ,
142.An Marc Balmer Aq Mt marc@openbsd.org
143and
144.An Reyk Floeter Aq Mt reyk@openbsd.org .
145