Lines Matching refs:cursor

71 	__inout		efx_asn1_cursor_t	*cursor,
76 if (cursor == NULL || cursor->buffer == NULL || cursor->length < 2) {
81 cursor->tag = cursor->buffer[0];
82 if (cursor->tag != tag) {
88 if ((cursor->tag & 0x1F) == 0x1F) {
94 if ((cursor->buffer[1] & 0x80) == 0) {
96 cursor->hdr_size = 2;
97 cursor->val_size = cursor->buffer[1];
100 uint32_t nbytes = cursor->buffer[1] & 0x7F;
108 if (2 + nbytes > cursor->length) {
118 cursor->hdr_size = 2 + nbytes;
119 cursor->val_size = 0;
120 for (offset = 2; offset < cursor->hdr_size; offset++) {
121 cursor->val_size =
122 (cursor->val_size << 8) | cursor->buffer[offset];
126 if ((cursor->hdr_size + cursor->val_size) > cursor->length) {
155 __inout efx_asn1_cursor_t *cursor,
160 if (cursor == NULL) {
170 rc = efx_asn1_parse_header_match_tag(cursor, tag);
176 /* Limit cursor range to nested TLV */
177 cursor->buffer += cursor->hdr_size;
178 cursor->length = cursor->val_size;
194 * Advance cursor to next TLV on a successful match.
198 __inout efx_asn1_cursor_t *cursor,
205 if (cursor == NULL) {
209 rc = efx_asn1_parse_header_match_tag(cursor, tag);
214 if (cursor->val_size != val_size) {
219 if (memcmp(cursor->buffer + cursor->hdr_size, valp, val_size) != 0) {
224 cursor->buffer += cursor->hdr_size + cursor->val_size;
225 cursor->length -= cursor->hdr_size + cursor->val_size;
241 /* Advance cursor to next TLV */
244 __inout efx_asn1_cursor_t *cursor,
249 if (cursor == NULL) {
254 rc = efx_asn1_parse_header_match_tag(cursor, tag);
259 cursor->buffer += cursor->hdr_size + cursor->val_size;
260 cursor->length -= cursor->hdr_size + cursor->val_size;
275 __inout efx_asn1_cursor_t *cursor,
282 if (cursor == NULL || valp == NULL || val_sizep == NULL) {
287 rc = efx_asn1_parse_header_match_tag(cursor, tag);
292 *valp = cursor->buffer + cursor->hdr_size;
293 *val_sizep = cursor->val_size;
334 efx_asn1_cursor_t cursor;
343 cursor.buffer = (uint8_t *)bufferp;
344 cursor.length = buffer_size;
347 rc = efx_asn1_enter_tag(&cursor, ASN1_TAG_SEQUENCE);
352 rc = efx_asn1_match_tag_value(&cursor, ASN1_TAG_OBJ_ID,
358 rc = efx_asn1_enter_tag(&cursor, ASN1_TAG_CONS_CONTEXT(0));
363 rc = efx_asn1_enter_tag(&cursor, ASN1_TAG_SEQUENCE);
368 rc = efx_asn1_match_tag_value(&cursor, ASN1_TAG_INTEGER,
374 rc = efx_asn1_skip_tag(&cursor, ASN1_TAG_SET);
379 rc = efx_asn1_enter_tag(&cursor, ASN1_TAG_SEQUENCE);
384 rc = efx_asn1_match_tag_value(&cursor, ASN1_TAG_OBJ_ID,
390 rc = efx_asn1_enter_tag(&cursor, ASN1_TAG_CONS_CONTEXT(0));
400 rc = efx_asn1_get_tag_value(&cursor, ASN1_TAG_OCTET_STRING,