Lines Matching refs:len

59 asn_get_header(struct asn_buf *b, u_char *type, asn_len_t *len)
94 *len = 0;
96 *len = (*len << 8) | *b->asn_cptr++;
100 *len = *b->asn_cptr++;
112 asn_put_len(u_char *ptr, asn_len_t len)
117 if (len > ASN_MAXLEN) {
118 asn_error(NULL, "encoding length too long: (%u)", len);
122 if (len <= 127) {
124 *ptr++ = (u_char)len;
129 for (tmp = len; tmp != 0; tmp >>= 8)
135 ptr[lenlen1] = len & 0xff;
136 len >>= 8;
149 asn_put_header(struct asn_buf *b, u_char type, asn_len_t len)
166 if ((lenlen = asn_put_len(NULL, len)) == 0)
171 (void)asn_put_len(b->asn_ptr, len);
201 asn_len_t len;
205 len = b->asn_ptr - (ptr + TEMP_LEN);
208 lenlen = asn_put_len(ptr + 1, len);
215 memmove(ptr + 1 + lenlen, ptr + TEMP_LEN, len);
228 * if the caller ensures that len is at maximum 8.
233 asn_get_real_integer(struct asn_buf *b, asn_len_t len, int64_t *vp)
239 if (b->asn_len < len) {
243 if (len == 0) {
249 if (len > 8)
251 else if (len > 1 &&
261 while (len--) {
327 asn_get_real_unsigned(struct asn_buf *b, asn_len_t len, uint64_t *vp)
331 if (b->asn_len < len) {
335 if (len == 0) {
342 if ((*b->asn_cptr & 0x80) || (len == 9 && *b->asn_cptr != 0)) {
346 } else if (len > 1 &&
352 while (len--) {
397 asn_get_integer_raw(struct asn_buf *b, asn_len_t len, int32_t *vp)
402 if ((ret = asn_get_real_integer(b, len, &val)) == ASN_ERR_OK) {
403 if (len > 4)
416 asn_len_t len;
420 if ((err = asn_get_header(b, &type, &len)) != ASN_ERR_OK)
427 return (asn_get_integer_raw(b, len, vp));
439 * <0x04> <len> <data ...>
446 asn_get_octetstring_raw(struct asn_buf *b, asn_len_t len, u_char *octets,
451 if (*noctets < len) {
455 if (b->asn_len < len) {
459 if (*noctets < len)
462 memcpy(octets, b->asn_cptr, len);
463 *noctets = len;
464 b->asn_cptr += len;
465 b->asn_len -= len;
474 asn_len_t len;
476 if ((err = asn_get_header(b, &type, &len)) != ASN_ERR_OK)
482 return (asn_get_octetstring_raw(b, len, octets, noctets));
507 asn_get_null_raw(struct asn_buf *b, asn_len_t len)
509 if (len != 0) {
510 if (b->asn_len < len) {
514 asn_error(b, "bad length for NULL (%u)", len);
515 b->asn_len -= len;
516 b->asn_ptr += len;
526 asn_len_t len;
529 if ((err = asn_get_header(b, &type, &len)) != ASN_ERR_OK)
535 return (asn_get_null_raw(b, len));
553 * <0x06> <len> <subid...>
556 asn_get_objid_raw(struct asn_buf *b, asn_len_t len, struct asn_oid *oid)
561 if (b->asn_len < len) {
565 oid->len = 0;
566 if (len == 0) {
568 oid->subs[oid->len++] = 0;
569 oid->subs[oid->len++] = 0;
573 while (len != 0) {
574 if (oid->len == ASN_MAXOIDLEN) {
575 asn_error(b, "OID too long (%u)", oid->len);
576 b->asn_cptr += len;
577 b->asn_len -= len;
582 if (len == 0) {
591 len--;
594 if (oid->len == 0) {
596 oid->subs[oid->len++] = subid / 40;
597 oid->subs[oid->len++] = subid % 40;
599 oid->subs[oid->len++] = 2;
600 oid->subs[oid->len++] = subid - 80;
603 oid->subs[oid->len++] = subid;
614 asn_len_t len;
617 if ((err = asn_get_header(b, &type, &len)) != ASN_ERR_OK)
623 return (asn_get_objid_raw(b, len, oid));
632 asn_len_t len;
635 if (oid->len == 0) {
641 } else if (oid->len == 1) {
650 if (oid->len > ASN_MAXOIDLEN) {
651 asn_error(NULL, "oid too long %u", oid->len);
661 oidlen = oid->len;
663 len = 0;
670 len += (sub <= 0x7f) ? 1
676 if ((err1 = asn_put_header(b, ASN_TYPE_OBJID, len)) != ASN_ERR_OK)
678 if (b->asn_len < len)
715 * <0x10|0x20> <len> <data...>
718 asn_get_sequence(struct asn_buf *b, asn_len_t *len)
723 if ((err = asn_get_header(b, &type, len)) != ASN_ERR_OK)
729 if (*len > b->asn_len) {
742 asn_get_ipaddress_raw(struct asn_buf *b, asn_len_t len, u_char *addr)
746 if (b->asn_len < len) {
750 if (len < 4) {
751 asn_error(b, "short length for ip-Address %u", len);
752 for (i = 0; i < len; i++)
754 while (i++ < len)
756 b->asn_len -= len;
761 b->asn_cptr += len - 4;
762 b->asn_len -= len;
770 asn_len_t len;
773 if ((err = asn_get_header(b, &type, &len)) != ASN_ERR_OK)
779 return (asn_get_ipaddress_raw(b, len, addr));
803 * 0x42|0x41 <len> ...
806 asn_get_uint32_raw(struct asn_buf *b, asn_len_t len, uint32_t *vp)
811 if ((err = asn_get_real_unsigned(b, len, &v)) == ASN_ERR_OK) {
812 if (len > 5) {
813 asn_error(b, "uint32 too long %u", len);
834 * 0x46 <len> ...
837 asn_get_counter64_raw(struct asn_buf *b, asn_len_t len, uint64_t *vp)
839 return (asn_get_real_unsigned(b, len, vp));
851 * 0x43 <len> ...
856 asn_len_t len;
860 if ((err = asn_get_header(b, &type, &len)) != ASN_ERR_OK)
866 return (asn_get_uint32_raw(b, len, vp));
886 dest->len = 0;
889 dest->len = to - from;
890 memcpy(dest->subs, &src->subs[from], dest->len * sizeof(dest->subs[0]));
899 memcpy(&to->subs[to->len], &from->subs[0],
900 from->len * sizeof(from->subs[0]));
901 to->len += from->len;
908 asn_skip(struct asn_buf *b, asn_len_t len)
910 if (b->asn_len < len)
912 b->asn_cptr += len;
913 b->asn_len -= len;
921 asn_pad(struct asn_buf *b, asn_len_t len)
923 if (b->asn_len < len)
925 b->asn_ptr += len;
926 b->asn_len -= len;
943 for (i = 0; i < o1->len && i < o2->len; i++) {
949 if (o1->len < o2->len)
951 if (o1->len > o2->len)
964 for (i = 0; i < o1->len; i++)
965 if (i >= o2->len || o1->subs[i] != o2->subs[i])
979 u_int len, i;
982 if ((len = oid->len) > ASN_MAXOIDLEN)
983 len = ASN_MAXOIDLEN;
985 for (i = 0, ptr = buf; i < len; i++) {