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