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