1
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
/* lib/krb5/asn.1/asn1_get.h */
4
* Copyright 1994 by the Massachusetts Institute of Technology.
7
* Export of this software from the United States of America may
8
* require a specific license from the United States Government.
9
* It is the responsibility of any person or organization contemplating
10
* export to obtain such a license before exporting.
12
* WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13
* distribute this software and its documentation for any purpose and
14
* without fee is hereby granted, provided that the above copyright
15
* notice appear in all copies and that both that copyright notice and
16
* this permission notice appear in supporting documentation, and that
17
* the name of M.I.T. not be used in advertising or publicity pertaining
18
* to distribution of the software without specific, written prior
19
* permission. Furthermore if you modify this software you must label
20
* your software as modified software and not distribute it in such a
21
* fashion that it might be confused with the original M.I.T. software.
22
* M.I.T. makes no representations about the suitability of
23
* this software for any purpose. It is provided "as is" without express
24
* or implied warranty.
27
#ifndef __ASN1_GET_H__
28
#define __ASN1_GET_H__
30
/* ASN.1 substructure decoding procedures */
39
* Smaller run-time storage, and on x86 the compiler can use byte
40
* loads, stores, and compares, but on other platforms the compiler
41
* may need to load and widen before comparing... see how this works
44
unsigned int asn1class : 8, construction : 8;
47
asn1_construction construction;
54
asn1_error_code asn1_get_tag_2 (asn1buf *buf, taginfo *tinfo);
57
asn1_error_code asn1_get_tag_indef(asn1buf *buf,
59
asn1_construction *construction,
61
unsigned int *retlen, int *indef);
63
asn1_error_code asn1_get_tag(asn1buf *buf,
65
asn1_construction *construction,
67
unsigned int *retlen);
69
* requires *buf is allocated
70
* effects Decodes the tag in *buf. If class != NULL, returns
71
* the class in *Class. Similarly, the construction,
72
* tag number, and length are returned in *construction,
73
* *tagnum, and *retlen, respectively.
75
* If *buf is empty to begin with, *tagnum is set to
76
* ASN1_TAGNUM_CEILING.
78
* Returns ASN1_OVERRUN if *buf is exhausted during the
83
asn1_error_code asn1_get_sequence(asn1buf *buf, unsigned int *retlen,
86
* requires *buf is allocated
87
* effects Decodes a tag from *buf and returns ASN1_BAD_ID if it
88
* doesn't have a sequence ID. If retlen != NULL, the
89
* associated length is returned in *retlen.