Lines Matching full:elm

50 static ssize_t	ber_read_element(struct ber *ber, struct ber_element *elm);
64 struct ber_element *elm; in ber_get_element() local
66 if ((elm = calloc(1, sizeof(*elm))) == NULL) in ber_get_element()
69 elm->be_encoding = encoding; in ber_get_element()
70 ber_set_header(elm, BER_CLASS_UNIVERSAL, BER_TYPE_DEFAULT); in ber_get_element()
72 return elm; in ber_get_element()
76 ber_set_header(struct ber_element *elm, int class, unsigned long type) in ber_set_header() argument
78 elm->be_class = class & BER_CLASS_MASK; in ber_set_header()
80 type = elm->be_encoding; in ber_set_header()
81 elm->be_type = type; in ber_set_header()
85 ber_link_elements(struct ber_element *prev, struct ber_element *elm) in ber_link_elements() argument
91 prev->be_sub = elm; in ber_link_elements()
93 prev->be_next = elm; in ber_link_elements()
100 struct ber_element *elm; in ber_unlink_elements() local
105 elm = prev->be_sub; in ber_unlink_elements()
108 elm = prev->be_next; in ber_unlink_elements()
112 return (elm); in ber_unlink_elements()
132 struct ber_element *elm; in ber_add_sequence() local
134 if ((elm = ber_get_element(BER_TYPE_SEQUENCE)) == NULL) in ber_add_sequence()
137 ber_link_elements(prev, elm); in ber_add_sequence()
139 return elm; in ber_add_sequence()
145 struct ber_element *elm; in ber_add_set() local
147 if ((elm = ber_get_element(BER_TYPE_SET)) == NULL) in ber_add_set()
150 ber_link_elements(prev, elm); in ber_add_set()
152 return elm; in ber_add_set()
158 struct ber_element *elm; in ber_add_enumerated() local
162 if ((elm = ber_get_element(BER_TYPE_ENUMERATED)) == NULL) in ber_add_enumerated()
165 elm->be_numeric = val; in ber_add_enumerated()
177 elm->be_len = len + 1; in ber_add_enumerated()
179 ber_link_elements(prev, elm); in ber_add_enumerated()
181 return elm; in ber_add_enumerated()
187 struct ber_element *elm; in ber_add_integer() local
191 if ((elm = ber_get_element(BER_TYPE_INTEGER)) == NULL) in ber_add_integer()
194 elm->be_numeric = val; in ber_add_integer()
206 elm->be_len = len + 1; in ber_add_integer()
208 ber_link_elements(prev, elm); in ber_add_integer()
210 return elm; in ber_add_integer()
214 ber_get_integer(struct ber_element *elm, long long *n) in ber_get_integer() argument
216 if (elm->be_encoding != BER_TYPE_INTEGER) in ber_get_integer()
219 *n = elm->be_numeric; in ber_get_integer()
224 ber_get_enumerated(struct ber_element *elm, long long *n) in ber_get_enumerated() argument
226 if (elm->be_encoding != BER_TYPE_ENUMERATED) in ber_get_enumerated()
229 *n = elm->be_numeric; in ber_get_enumerated()
237 struct ber_element *elm; in ber_add_boolean() local
239 if ((elm = ber_get_element(BER_TYPE_BOOLEAN)) == NULL) in ber_add_boolean()
242 elm->be_numeric = bool ? 0xff : 0; in ber_add_boolean()
243 elm->be_len = 1; in ber_add_boolean()
245 ber_link_elements(prev, elm); in ber_add_boolean()
247 return elm; in ber_add_boolean()
251 ber_get_boolean(struct ber_element *elm, int *b) in ber_get_boolean() argument
253 if (elm->be_encoding != BER_TYPE_BOOLEAN) in ber_get_boolean()
256 *b = !(elm->be_numeric == 0); in ber_get_boolean()
269 struct ber_element *elm; in ber_add_nstring() local
274 if ((elm = ber_get_element(BER_TYPE_OCTETSTRING)) == NULL) { in ber_add_nstring()
280 elm->be_val = string; in ber_add_nstring()
281 elm->be_len = len; in ber_add_nstring()
282 elm->be_free = 1; /* free string on cleanup */ in ber_add_nstring()
284 ber_link_elements(prev, elm); in ber_add_nstring()
286 return elm; in ber_add_nstring()
290 ber_get_string(struct ber_element *elm, char **s) in ber_get_string() argument
292 if (elm->be_encoding != BER_TYPE_OCTETSTRING) in ber_get_string()
295 *s = elm->be_val; in ber_get_string()
300 ber_get_nstring(struct ber_element *elm, void **p, size_t *len) in ber_get_nstring() argument
302 if (elm->be_encoding != BER_TYPE_OCTETSTRING) in ber_get_nstring()
305 *p = elm->be_val; in ber_get_nstring()
306 *len = elm->be_len; in ber_get_nstring()
313 struct ber_element *elm; in ber_add_bitstring() local
318 if ((elm = ber_get_element(BER_TYPE_BITSTRING)) == NULL) { in ber_add_bitstring()
324 elm->be_val = v; in ber_add_bitstring()
325 elm->be_len = len; in ber_add_bitstring()
326 elm->be_free = 1; /* free string on cleanup */ in ber_add_bitstring()
328 ber_link_elements(prev, elm); in ber_add_bitstring()
330 return elm; in ber_add_bitstring()
334 ber_get_bitstring(struct ber_element *elm, void **v, size_t *len) in ber_get_bitstring() argument
336 if (elm->be_encoding != BER_TYPE_BITSTRING) in ber_get_bitstring()
339 *v = elm->be_val; in ber_get_bitstring()
340 *len = elm->be_len; in ber_get_bitstring()
347 struct ber_element *elm; in ber_add_null() local
349 if ((elm = ber_get_element(BER_TYPE_NULL)) == NULL) in ber_add_null()
352 ber_link_elements(prev, elm); in ber_add_null()
354 return elm; in ber_add_null()
358 ber_get_null(struct ber_element *elm) in ber_get_null() argument
360 if (elm->be_encoding != BER_TYPE_NULL) in ber_get_null()
369 struct ber_element *elm; in ber_add_eoc() local
371 if ((elm = ber_get_element(BER_TYPE_EOC)) == NULL) in ber_add_eoc()
374 ber_link_elements(prev, elm); in ber_add_eoc()
376 return elm; in ber_add_eoc()
380 ber_get_eoc(struct ber_element *elm) in ber_get_eoc() argument
382 if (elm->be_encoding != BER_TYPE_EOC) in ber_get_eoc()
440 struct ber_element *elm; in ber_add_oid() local
444 if ((elm = ber_get_element(BER_TYPE_OBJECT)) == NULL) in ber_add_oid()
453 elm->be_val = buf; in ber_add_oid()
454 elm->be_len = len; in ber_add_oid()
455 elm->be_free = 1; in ber_add_oid()
460 ber_link_elements(prev, elm); in ber_add_oid()
462 return (elm); in ber_add_oid()
465 ber_free_elements(elm); in ber_add_oid()
494 ber_get_oid(struct ber_element *elm, struct ber_oid *o) in ber_get_oid() argument
499 if (elm->be_encoding != BER_TYPE_OBJECT) in ber_get_oid()
502 buf = elm->be_val; in ber_get_oid()
503 len = elm->be_len; in ber_get_oid()
807 ber_read_elements(struct ber *ber, struct ber_element *elm) in ber_read_elements() argument
809 struct ber_element *root = elm; in ber_read_elements()
820 if (elm == NULL) in ber_read_elements()
1066 ber_read_element(struct ber *ber, struct ber_element *elm) in ber_read_element() argument
1094 elm->be_type = type; in ber_read_element()
1095 elm->be_len = len; in ber_read_element()
1096 elm->be_class = class; in ber_read_element()
1098 if (elm->be_encoding == 0) { in ber_read_element()
1101 elm->be_encoding = BER_TYPE_SEQUENCE; in ber_read_element()
1103 elm->be_encoding = type; in ber_read_element()
1110 elm->be_encoding = (*ber->br_application)(elm); in ber_read_element()
1113 elm->be_encoding = BER_TYPE_NULL; in ber_read_element()
1116 switch (elm->be_encoding) { in ber_read_element()
1134 elm->be_numeric = val; in ber_read_element()
1137 elm->be_val = malloc(len); in ber_read_element()
1138 if (elm->be_val == NULL) in ber_read_element()
1140 elm->be_free = 1; in ber_read_element()
1141 elm->be_len = len; in ber_read_element()
1142 ber_read(ber, elm->be_val, len); in ber_read_element()
1146 elm->be_val = malloc(len + 1); in ber_read_element()
1147 if (elm->be_val == NULL) in ber_read_element()
1149 elm->be_free = 1; in ber_read_element()
1150 elm->be_len = len; in ber_read_element()
1151 ber_read(ber, elm->be_val, len); in ber_read_element()
1152 ((u_char *)elm->be_val)[len] = '\0'; in ber_read_element()
1160 if (elm->be_sub == NULL) { in ber_read_element()
1161 if ((elm->be_sub = ber_get_element(0)) == NULL) in ber_read_element()
1164 next = elm->be_sub; in ber_read_element()