Lines Matching refs:ber

36 /* decode.c - ber input decoding routines */
59 * Note: kmfber_get_tag() only uses the ber_end and ber_ptr elements of ber.
65 kmfber_get_tag(BerElement *ber)
72 if (kmfber_read(ber, (char *)&xbyte, 1) != 1)
81 if (kmfber_read(ber, (char *)&xbyte, 1) != 1)
99 * Note: kmfber_skip_tag() only uses the ber_end and ber_ptr elements of ber.
104 kmfber_skip_tag(BerElement *ber, ber_len_t *len)
112 * Any ber element looks like this: tag length contents.
125 if ((tag = kmfber_get_tag(ber)) == KMFBER_DEFAULT)
137 if (kmfber_read(ber, (char *)&lc, 1) != 1)
144 if (kmfber_read(ber, (char *)&netlen + diff, noctets)
157 * Note: Previously, we passed the "ber" parameter directly to
159 * We now take advantage of the fact that the only ber structure
164 kmfber_peek_tag(BerElement *ber, ber_len_t *len)
168 bercopy.ber_end = ber->ber_end;
169 bercopy.ber_ptr = ber->ber_ptr;
174 ber_getnint(BerElement *ber, ber_int_t *num, ber_slen_t len)
190 if (kmfber_read(ber, (char *)buffer, len) != len)
209 kmfber_get_int(BerElement *ber, ber_int_t *num)
214 if ((tag = kmfber_skip_tag(ber, &len)) == KMFBER_DEFAULT)
221 if (ber_getnint(ber, num, (int)len) != (ber_slen_t)len)
228 kmfber_get_stringb(BerElement *ber, char *buf, ber_len_t *len)
236 if ((tag = kmfber_skip_tag(ber, &datalen)) == KMFBER_DEFAULT)
245 if (kmfber_read(ber, buf, datalen) != (ber_slen_t)datalen)
251 if (datalen > 0 && (ber->ber_options & KMFBER_OPT_TRANSLATE_STRINGS)
252 != 0 && ber->ber_decode_translate_proc != NULL) {
256 if ((*(ber->ber_decode_translate_proc))(&transbuf, &datalen,
275 kmfber_get_stringa(BerElement *ber, char **buf)
280 if ((tag = kmfber_skip_tag(ber, &datalen)) == KMFBER_DEFAULT)
289 if (kmfber_read(ber, *buf, datalen) != (ber_slen_t)datalen)
297 ber_get_oid(BerElement *ber, struct berval *oid)
302 if ((tag = kmfber_skip_tag(ber, &len)) != 0x06) {
311 if (kmfber_read(ber, oid->bv_val, oid->bv_len) !=
319 ber_get_bigint(BerElement *ber, struct berval **bv)
331 if ((tag = kmfber_skip_tag(ber, &len)) != BER_INTEGER) {
343 if (kmfber_read(ber, (*bv)->bv_val, len) != (ber_slen_t)len)
349 if (ber->ber_options & KMFBER_OPT_USE_DER) {
367 kmfber_get_stringal(BerElement *ber, struct berval **bv)
377 if ((tag = kmfber_skip_tag(ber, &len)) == KMFBER_DEFAULT) {
389 if (kmfber_read(ber, (*bv)->bv_val, len) != (ber_slen_t)len)
398 kmfber_get_bitstringa(BerElement *ber, char **buf, ber_len_t *blen)
404 if ((tag = kmfber_skip_tag(ber, &datalen)) == KMFBER_DEFAULT)
410 if (kmfber_read(ber, (char *)&unusedbits, 1) != 1)
419 if (kmfber_read(ber, *buf, datalen) != (ber_slen_t)datalen)
427 kmfber_get_null(BerElement *ber)
432 if ((tag = kmfber_skip_tag(ber, &len)) == KMFBER_DEFAULT)
442 kmfber_get_boolean(BerElement *ber, int *boolval)
447 rc = kmfber_get_int(ber, &longbool);
454 kmfber_first_element(BerElement *ber, ber_len_t *len, char **last)
457 if (kmfber_skip_tag(ber, len) == KMFBER_DEFAULT) {
461 *last = ber->ber_ptr + *len;
463 if (*last == ber->ber_ptr) {
467 return (kmfber_peek_tag(ber, len));
471 kmfber_next_element(BerElement *ber, ber_len_t *len, char *last)
473 if (ber->ber_ptr == last) {
477 return (kmfber_peek_tag(ber, len));
506 kmfber_scanf(BerElement *ber, const char *fmt, ...)
525 rc = kmfber_get_stringa(ber, ss);
530 rc = kmfber_get_boolean(ber, i);
535 rc = ber_get_oid(ber, bval);
540 rc = kmfber_get_int(ber, b_int);
545 rc = kmfber_peek_tag(ber, (ber_len_t *)l);
549 rc = kmfber_get_null(ber);
555 rc = kmfber_get_stringb(ber, s, (ber_len_t *)l);
560 (void) kmfber_peek_tag(ber, &bval->bv_len);
561 rc = kmfber_get_stringa(ber, &bval->bv_val);
567 rc = ber_get_bigint(ber, bvp);
571 rc = kmfber_get_stringal(ber, bvp);
577 rc = kmfber_get_bitstringa(ber, ss, (ber_len_t *)l);
582 *t = kmfber_peek_tag(ber, &len);
588 *t = kmfber_skip_tag(ber, &len);
599 for (tag = kmfber_first_element(ber, &len, &last);
603 tag = kmfber_next_element(ber, &len, last)) {
616 rc = kmfber_get_stringa(ber, &((*sss)[j]));
630 for (tag = kmfber_first_element(ber, &len, &last);
634 tag = kmfber_next_element(ber, &len, last)) {
642 rc = kmfber_get_stringal(ber, &((*bv)[j]));
654 if ((rc = kmfber_skip_tag(ber, &len)) == KMFBER_DEFAULT)
656 ber->ber_ptr += len;
662 rc = kmfber_skip_tag(ber, &len);