Lines Matching refs:ctx
98 asn1_open(struct asn1_ctx *ctx, unsigned char *buf, unsigned int len) in asn1_open() argument
100 ctx->begin = buf; in asn1_open()
101 ctx->end = buf + len; in asn1_open()
102 ctx->pointer = buf; in asn1_open()
103 ctx->error = ASN1_ERR_NOERROR; in asn1_open()
107 asn1_octet_decode(struct asn1_ctx *ctx, unsigned char *ch) in asn1_octet_decode() argument
109 if (ctx->pointer >= ctx->end) { in asn1_octet_decode()
110 ctx->error = ASN1_ERR_DEC_EMPTY; in asn1_octet_decode()
113 *ch = *(ctx->pointer)++; in asn1_octet_decode()
119 asn1_enum_decode(struct asn1_ctx *ctx, __le32 *val)
123 if (ctx->pointer >= ctx->end) {
124 ctx->error = ASN1_ERR_DEC_EMPTY;
128 ch = *(ctx->pointer)++; /* ch has 0xa, ptr points to length octet */
130 *val = *(++(ctx->pointer)); /* value has enum value */
134 ctx->pointer++;
140 asn1_tag_decode(struct asn1_ctx *ctx, unsigned int *tag) in asn1_tag_decode() argument
147 if (!asn1_octet_decode(ctx, &ch)) in asn1_tag_decode()
156 asn1_id_decode(struct asn1_ctx *ctx, in asn1_id_decode() argument
161 if (!asn1_octet_decode(ctx, &ch)) in asn1_id_decode()
169 if (!asn1_tag_decode(ctx, tag)) in asn1_id_decode()
176 asn1_length_decode(struct asn1_ctx *ctx, unsigned int *def, unsigned int *len) in asn1_length_decode() argument
180 if (!asn1_octet_decode(ctx, &ch)) in asn1_length_decode()
195 if (!asn1_octet_decode(ctx, &ch)) in asn1_length_decode()
205 if (*len > ctx->end - ctx->pointer) in asn1_length_decode()
212 asn1_header_decode(struct asn1_ctx *ctx, in asn1_header_decode() argument
219 if (!asn1_id_decode(ctx, cls, con, tag)) in asn1_header_decode()
222 if (!asn1_length_decode(ctx, &def, &len)) in asn1_header_decode()
230 *eoc = ctx->pointer + len; in asn1_header_decode()
237 asn1_eoc_decode(struct asn1_ctx *ctx, unsigned char *eoc) in asn1_eoc_decode() argument
242 if (!asn1_octet_decode(ctx, &ch)) in asn1_eoc_decode()
246 ctx->error = ASN1_ERR_DEC_EOC_MISMATCH; in asn1_eoc_decode()
250 if (!asn1_octet_decode(ctx, &ch)) in asn1_eoc_decode()
254 ctx->error = ASN1_ERR_DEC_EOC_MISMATCH; in asn1_eoc_decode()
259 if (ctx->pointer != eoc) { in asn1_eoc_decode()
260 ctx->error = ASN1_ERR_DEC_LENGTH_MISMATCH; in asn1_eoc_decode()
390 asn1_subid_decode(struct asn1_ctx *ctx, unsigned long *subid) in asn1_subid_decode() argument
397 if (!asn1_octet_decode(ctx, &ch)) in asn1_subid_decode()
407 asn1_oid_decode(struct asn1_ctx *ctx, in asn1_oid_decode() argument
414 size = eoc - ctx->pointer + 1; in asn1_oid_decode()
426 if (!asn1_subid_decode(ctx, &subid)) { in asn1_oid_decode()
446 while (ctx->pointer < eoc) { in asn1_oid_decode()
448 ctx->error = ASN1_ERR_DEC_BADVALUE; in asn1_oid_decode()
454 if (!asn1_subid_decode(ctx, optr++)) { in asn1_oid_decode()
486 struct asn1_ctx ctx; in decode_negTokenInit() local
494 asn1_open(&ctx, security_blob, length); in decode_negTokenInit()
497 if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { in decode_negTokenInit()
507 rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag); in decode_negTokenInit()
511 rc = asn1_oid_decode(&ctx, end, &oid, &oidlen); in decode_negTokenInit()
528 if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { in decode_negTokenInit()
539 if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { in decode_negTokenInit()
550 if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) { in decode_negTokenInit()
562 (&ctx, &sequence_end, &cls, &con, &tag) == 0) { in decode_negTokenInit()
573 while (!asn1_eoc_decode(&ctx, sequence_end)) { in decode_negTokenInit()
574 rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag); in decode_negTokenInit()
580 if (asn1_oid_decode(&ctx, end, &oid, &oidlen)) { in decode_negTokenInit()