/usr/include/c-lib/inc/asn-len.h is in libesnacc-dev 1.8.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | /*
* asn_len.h
*
* Warning: many of these routines are MACROs for performance reasons
* - be carful where you use them. Don't use more than one per
* assignment statement -
* (eg itemLen += BEncEoc (b) + BEncFoo (b) ..; this
* will break the code)
*
* MS 92
* Copyright (C) 1992 Michael Sample and the University of British Columbia
*
* This library is free software; you can redistribute it and/or
* modify it provided that this copyright/license information is retained
* in original form.
*
* If you modify this file, you must clearly indicate your changes.
*
* This source code is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Header: /baseline/SNACC/c-lib/inc/asn-len.h,v 1.7 2003/12/17 19:05:03 gronej Exp $
* $Log: asn-len.h,v $
* Revision 1.7 2003/12/17 19:05:03 gronej
* SNACC baseline merged with PER v1_7 tag
*
* Revision 1.6.2.1 2003/11/05 14:58:55 gronej
* working PER code merged with esnacc_1_6
*
* Revision 1.6 2003/02/20 21:07:59 leonberp
* added #ifdef __cplusplus extern "C" to headers
*
* Revision 1.5 2002/10/23 10:23:51 mcphersc
* Changed BUF_TYPE to AsnBuf
*
* Revision 1.4 2002/10/21 17:13:24 mcphersc
* fixed long int
*
* Revision 1.3 2002/10/01 14:13:34 mcphersc
* ASN "C" Buf modifications
*
* Revision 1.2 2001/07/12 19:34:02 leonberp
* Changed namespace to SNACC and added compiler options: -ns and -nons. Also removed dead code.
*
* Revision 1.1.1.1 2000/08/21 20:35:54 leonberp
* First CVS Version of SNACC.
*
* Revision 1.4 1997/08/28 07:25:52 povey
* Changes to support DER encoding/decoding
*
* Revision 1.3.1.1 1997/08/20 23:14:43 povey
*
* Revision 1.2 1995/07/27 08:42:40 rj
* cpp macro TBL changed to TTBL since some type table code uses TBL as a type name.
*
* changed `_' to `-' in file names.
*
* Revision 1.1 1994/08/28 09:21:29 rj
* first check-in. for a list of changes to the snacc-1.1 distribution please refer to the ChangeLog.
*
*/
#ifndef _asn_len_h_
#define _asn_len_h_
#ifdef __cplusplus
extern "C" {
#endif
typedef unsigned long AsnLen;
/*
* BER Encoding/Decoding routines
*/
/* max unsigned value - used for internal rep of indef len */
#define INDEFINITE_LEN ~0UL
#ifdef USE_INDEF_LEN
#define BEncEocIfNec( b) BEncEoc (b)
/*
* include len for EOC (2 must be first due to BEncIndefLen
* - ack! ugly macros!)
*/
#define BEncConsLen( b, len) 2 + BEncIndefLen(b)
#else /* use definite length - faster?/smaller encodings */
/* do nothing since only using definite lens */
#define BEncEocIfNec( b)
#define BEncConsLen( b, len) BEncDefLen(b, len)
#endif
/*
* writes indefinite length byte to buffer. 'returns' encoded len (1)
*/
#define BEncIndefLen( b)\
1;\
BufPutByteRvs (b, 0x80);
#ifndef _DEBUG
#define BEncEoc( b)\
2;\
BufPutByteRvs (b, 0);\
BufPutByteRvs (b, 0);
#endif
/*
* use if you know the encoded length will be 0 >= len <= 127
* Eg for booleans, nulls, any resonable integers and reals
*
* NOTE: this particular Encode Routine does NOT return the length
* encoded (1).
*/
#define BEncDefLenTo127( b, len)\
BufPutByteRvs (b, (unsigned char) len)
#define BDEC_2ND_EOC_OCTET( b, bytesDecoded, env)\
{\
if ((BufGetByte (b) != 0) || BufReadError (b)) {\
Asn1Error ("ERROR - second octet of EOC not zero\n");\
longjmp (env, -28);}\
(*bytesDecoded)++;\
}
AsnLen BEncDefLen PROTO ((GenBuf *b, AsnLen len));
AsnLen BEncDefLen2 PROTO ((GenBuf *b, long len));
AsnLen BDecLen PROTO ((GenBuf *b, AsnLen *bytesDecoded, ENV_TYPE env));
#ifdef _DEBUG
AsnLen BEncEoc PROTO ((GenBuf *b));
#endif
void BDecEoc PROTO ((GenBuf *b, AsnLen *bytesDecoded, ENV_TYPE env));
#if TTBL
int PeekEoc PROTO ((GenBuf *b));
#endif
/*
* DER Encoding/Decoding routines
*/
/* We always use Definite length encoders */
/* do nothing since only using definite lens */
#define DEncEocIfNec( b)
#define DEncConsLen DEncDefLen
/*
* use if you know the encoded length will be 0 >= len <= 127
* Eg for booleans, nulls, any resonable integers and reals
*
* NOTE: this particular Encode Routine does NOT return the length
* encoded (1).
*/
#define DEncDefLenTo127( b, len)\
BufPutByteRvs (b, (unsigned char) len)
#define DEncDefLen BEncDefLen
AsnLen DDecLen PROTO ((GenBuf *b, AsnLen *bytesDecoded, ENV_TYPE env));
/* Error conditions */
#define DDecEoc(a, b, env) longjmp(env, -666)
/* Should never happen */
#define DDEC_2ND_EOC_OCTET(a, b, env)
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* conditional include */
|