Select Git revision
module_support.c
-
Fredrik Hübinette (Hubbe) authored
Rev: src/array.c:1.97 Rev: src/backend.c:1.61 Rev: src/bignum.c:1.19 Rev: src/block_alloc.h:1.26 Rev: src/builtin_functions.c:1.318 Rev: src/callback.c:1.21 Rev: src/constants.c:1.24 Rev: src/cpp.c:1.78 Rev: src/cyclic.h:1.5 Rev: src/docode.c:1.86 Rev: src/dynamic_buffer.c:1.13 Rev: src/dynamic_load.c:1.47 Rev: src/encode.c:1.78 Rev: src/error.c:1.65 Rev: src/fd_control.c:1.34 Rev: src/fdlib.c:1.47 Rev: src/fsort.c:1.15 Rev: src/gc.c:1.143 Rev: src/hashtable.c:1.8 Rev: src/interpret.c:1.176 Rev: src/interpret.h:1.69 Rev: src/interpret_functions.h:1.34 Rev: src/interpreter.h:1.52 Rev: src/las.c:1.226 Rev: src/lex.c:1.85 Rev: src/lexer.h:1.24 Rev: src/main.c:1.108 Rev: src/mapping.c:1.112 Rev: src/module.c:1.12 Rev: src/module_support.c:1.38 Rev: src/modules/CommonLog/clf.c:1.5 Rev: src/modules/Gdbm/gdbmmod.c:1.12 Rev: src/modules/Gettext/gettext.c:1.6 Rev: src/modules/Gmp/mpz_glue.c:1.83 Rev: src/modules/Gz/gz_test.c:1.4 Rev: src/modules/Gz/zlibmod.c:1.32 Rev: src/modules/HTTPLoop/accept_and_parse.c:1.21 Rev: src/modules/HTTPLoop/log.c:1.9 Rev: src/modules/HTTPLoop/requestobject.c:1.16 Rev: src/modules/Image/blit.c:1.49 Rev: src/modules/Image/colors.c:1.41 Rev: src/modules/Image/colortable.c:1.101 Rev: src/modules/Image/colortable.h:1.23 Rev: src/modules/Image/colortable_lookup.h:1.15 Rev: src/modules/Image/dct.c:1.17 Rev: src/modules/Image/encodings/_xpm.c:1.15 Rev: src/modules/Image/encodings/any.c:1.20 Rev: src/modules/Image/encodings/avs.c:1.12 Rev: src/modules/Image/encodings/bmp.c:1.30 Rev: src/modules/Image/encodings/dsi.c:1.3 Rev: src/modules/Image/encodings/gd.c:1.5 Rev: src/modules/Image/encodings/hrz.c:1.6 Rev: src/modules/Image/encodings/iff.c:1.9 Rev: src/modules/Image/encodings/ilbm.c:1.21 Rev: src/modules/Image/encodings/pcx.c:1.14 Rev: src/modules/Image/encodings/png.c:1.40 Rev: src/modules/Image/encodings/pnm.c:1.24 Rev: src/modules/Image/encodings/psd.c:1.26 Rev: src/modules/Image/encodings/pvr.c:1.12 Rev: src/modules/Image/encodings/ras.c:1.13 Rev: src/modules/Image/encodings/tga.c:1.25 Rev: src/modules/Image/encodings/tim.c:1.11 Rev: src/modules/Image/encodings/wbf.c:1.7 Rev: src/modules/Image/encodings/x.c:1.35 Rev: src/modules/Image/encodings/xbm.c:1.12 Rev: src/modules/Image/encodings/xcf.c:1.34 Rev: src/modules/Image/encodings/xwd.c:1.19 Rev: src/modules/Image/font.c:1.66 Rev: src/modules/Image/image.c:1.182 Rev: src/modules/Image/image.h:1.45 Rev: src/modules/Image/image_module.c:1.9 Rev: src/modules/Image/layers.c:1.58 Rev: src/modules/Image/match.h:1.11 Rev: src/modules/Image/matrix.c:1.30 Rev: src/modules/Image/operator.c:1.34 Rev: src/modules/Image/orient.c:1.18 Rev: src/modules/Image/pattern.c:1.23 Rev: src/modules/Image/phase.h:1.3 Rev: src/modules/Image/poly.c:1.11 Rev: src/modules/Image/polyfill.c:1.36 Rev: src/modules/Image/search.c:1.19 Rev: src/modules/Java/jvm.c:1.30 Rev: src/modules/MIME/mime.c:1.27 Rev: src/modules/Math/math_matrix.c:1.19 Rev: src/modules/Mird/mird_glue.c:1.10 Rev: src/modules/Msql/msqlmod.c:1.15 Rev: src/modules/Mysql/mysql.c:1.38 Rev: src/modules/Mysql/precompiled_mysql.h:1.10 Rev: src/modules/Mysql/result.c:1.17 Rev: src/modules/Odbc/odbc.c:1.23 Rev: src/modules/Odbc/odbc_result.c:1.24 Rev: src/modules/Oracle/oracle.c:1.51 Rev: src/modules/Parser/html.c:1.120 Rev: src/modules/Parser/parser.c:1.11 Rev: src/modules/Perl/perlmod.c:1.22 Rev: src/modules/Pipe/pipe.c:1.44 Rev: src/modules/Postgres/pgresult.c:1.15 Rev: src/modules/Postgres/postgres.c:1.20 Rev: src/modules/Regexp/glue.c:1.19 Rev: src/modules/Regexp/pike_regexp.c:1.20 Rev: src/modules/SANE/sane.c:1.8 Rev: src/modules/Ssleay/ssleay.c:1.13 Rev: src/modules/Yp/yp.c:1.20 Rev: src/modules/_Charset/charsetmod.c:1.25 Rev: src/modules/_Charset/iso2022.c:1.20 Rev: src/modules/_Crypto/arcfour.c:1.13 Rev: src/modules/_Crypto/cast.c:1.9 Rev: src/modules/_Crypto/cbc.c:1.18 Rev: src/modules/_Crypto/crypto.c:1.40 Rev: src/modules/_Crypto/des.c:1.18 Rev: src/modules/_Crypto/idea.c:1.16 Rev: src/modules/_Crypto/invert.c:1.11 Rev: src/modules/_Crypto/md2.c:1.10 Rev: src/modules/_Crypto/md5.c:1.15 Rev: src/modules/_Crypto/nt.c:1.7 Rev: src/modules/_Crypto/pipe.c:1.19 Rev: src/modules/_Crypto/rijndael.c:1.4 Rev: src/modules/_Crypto/rsa.c:1.24 Rev: src/modules/_Crypto/sha.c:1.18 Rev: src/modules/_Image_GIF/image_gif.c:1.2 Rev: src/modules/_Image_JPEG/image_jpeg.c:1.36 Rev: src/modules/_Image_TIFF/image_tiff.c:1.22 Rev: src/modules/_Image_TTF/image_ttf.c:1.37 Rev: src/modules/_Image_XFace/image_xface.c:1.14 Rev: src/modules/_Roxen/roxen.c:1.7 Rev: src/modules/_math/math.c:1.34 Rev: src/modules/call_out/call_out.c:1.40 Rev: src/modules/files/efuns.c:1.88 Rev: src/modules/files/file.c:1.204 Rev: src/modules/files/sendfile.c:1.50 Rev: src/modules/files/socket.c:1.52 Rev: src/modules/files/stat.c:1.15 Rev: src/modules/files/termios.c:1.10 Rev: src/modules/files/udp.c:1.18 Rev: src/modules/spider/discdate.c:1.8 Rev: src/modules/spider/spider.c:1.101 Rev: src/modules/spider/stardate.c:1.11 Rev: src/modules/spider/xml.c:1.29 Rev: src/modules/sprintf/sprintf.c:1.74 Rev: src/modules/sybase/sybase.c:1.5 Rev: src/modules/sybase/sybase.h:1.2 Rev: src/modules/system/nt.c:1.28 Rev: src/modules/system/syslog.c:1.10 Rev: src/modules/system/system.c:1.94 Rev: src/multiset.c:1.30 Rev: src/object.c:1.154 Rev: src/opcodes.c:1.95 Rev: src/operators.c:1.113 Rev: src/peep.c:1.42 Rev: src/pike_memory.c:1.93 Rev: src/pike_search.c:1.4 Rev: src/pike_types.c:1.143 Rev: src/port.c:1.34 Rev: src/post_modules/GL/auto.c.in:1.16 Rev: src/post_modules/GL/top.c:1.13 Rev: src/post_modules/GLUT/auto.c.in:1.3 Rev: src/post_modules/GLUT/top.c:1.4 Rev: src/post_modules/GTK/source/encode_truecolor.c:1.4 Rev: src/post_modules/GTK/source/support.c:1.19 Rev: src/preprocessor.h:1.35 Rev: src/program.c:1.283 Rev: src/queue.c:1.7 Rev: src/security.c:1.28 Rev: src/security.h:1.12 Rev: src/signal_handler.c:1.185 Rev: src/smartlink.c:1.11 Rev: src/stralloc.c:1.109 Rev: src/svalue.c:1.89 Rev: src/svalue.h:1.71 Rev: src/threads.c:1.147 Rev: src/threads.h:1.107
Fredrik Hübinette (Hubbe) authoredRev: src/array.c:1.97 Rev: src/backend.c:1.61 Rev: src/bignum.c:1.19 Rev: src/block_alloc.h:1.26 Rev: src/builtin_functions.c:1.318 Rev: src/callback.c:1.21 Rev: src/constants.c:1.24 Rev: src/cpp.c:1.78 Rev: src/cyclic.h:1.5 Rev: src/docode.c:1.86 Rev: src/dynamic_buffer.c:1.13 Rev: src/dynamic_load.c:1.47 Rev: src/encode.c:1.78 Rev: src/error.c:1.65 Rev: src/fd_control.c:1.34 Rev: src/fdlib.c:1.47 Rev: src/fsort.c:1.15 Rev: src/gc.c:1.143 Rev: src/hashtable.c:1.8 Rev: src/interpret.c:1.176 Rev: src/interpret.h:1.69 Rev: src/interpret_functions.h:1.34 Rev: src/interpreter.h:1.52 Rev: src/las.c:1.226 Rev: src/lex.c:1.85 Rev: src/lexer.h:1.24 Rev: src/main.c:1.108 Rev: src/mapping.c:1.112 Rev: src/module.c:1.12 Rev: src/module_support.c:1.38 Rev: src/modules/CommonLog/clf.c:1.5 Rev: src/modules/Gdbm/gdbmmod.c:1.12 Rev: src/modules/Gettext/gettext.c:1.6 Rev: src/modules/Gmp/mpz_glue.c:1.83 Rev: src/modules/Gz/gz_test.c:1.4 Rev: src/modules/Gz/zlibmod.c:1.32 Rev: src/modules/HTTPLoop/accept_and_parse.c:1.21 Rev: src/modules/HTTPLoop/log.c:1.9 Rev: src/modules/HTTPLoop/requestobject.c:1.16 Rev: src/modules/Image/blit.c:1.49 Rev: src/modules/Image/colors.c:1.41 Rev: src/modules/Image/colortable.c:1.101 Rev: src/modules/Image/colortable.h:1.23 Rev: src/modules/Image/colortable_lookup.h:1.15 Rev: src/modules/Image/dct.c:1.17 Rev: src/modules/Image/encodings/_xpm.c:1.15 Rev: src/modules/Image/encodings/any.c:1.20 Rev: src/modules/Image/encodings/avs.c:1.12 Rev: src/modules/Image/encodings/bmp.c:1.30 Rev: src/modules/Image/encodings/dsi.c:1.3 Rev: src/modules/Image/encodings/gd.c:1.5 Rev: src/modules/Image/encodings/hrz.c:1.6 Rev: src/modules/Image/encodings/iff.c:1.9 Rev: src/modules/Image/encodings/ilbm.c:1.21 Rev: src/modules/Image/encodings/pcx.c:1.14 Rev: src/modules/Image/encodings/png.c:1.40 Rev: src/modules/Image/encodings/pnm.c:1.24 Rev: src/modules/Image/encodings/psd.c:1.26 Rev: src/modules/Image/encodings/pvr.c:1.12 Rev: src/modules/Image/encodings/ras.c:1.13 Rev: src/modules/Image/encodings/tga.c:1.25 Rev: src/modules/Image/encodings/tim.c:1.11 Rev: src/modules/Image/encodings/wbf.c:1.7 Rev: src/modules/Image/encodings/x.c:1.35 Rev: src/modules/Image/encodings/xbm.c:1.12 Rev: src/modules/Image/encodings/xcf.c:1.34 Rev: src/modules/Image/encodings/xwd.c:1.19 Rev: src/modules/Image/font.c:1.66 Rev: src/modules/Image/image.c:1.182 Rev: src/modules/Image/image.h:1.45 Rev: src/modules/Image/image_module.c:1.9 Rev: src/modules/Image/layers.c:1.58 Rev: src/modules/Image/match.h:1.11 Rev: src/modules/Image/matrix.c:1.30 Rev: src/modules/Image/operator.c:1.34 Rev: src/modules/Image/orient.c:1.18 Rev: src/modules/Image/pattern.c:1.23 Rev: src/modules/Image/phase.h:1.3 Rev: src/modules/Image/poly.c:1.11 Rev: src/modules/Image/polyfill.c:1.36 Rev: src/modules/Image/search.c:1.19 Rev: src/modules/Java/jvm.c:1.30 Rev: src/modules/MIME/mime.c:1.27 Rev: src/modules/Math/math_matrix.c:1.19 Rev: src/modules/Mird/mird_glue.c:1.10 Rev: src/modules/Msql/msqlmod.c:1.15 Rev: src/modules/Mysql/mysql.c:1.38 Rev: src/modules/Mysql/precompiled_mysql.h:1.10 Rev: src/modules/Mysql/result.c:1.17 Rev: src/modules/Odbc/odbc.c:1.23 Rev: src/modules/Odbc/odbc_result.c:1.24 Rev: src/modules/Oracle/oracle.c:1.51 Rev: src/modules/Parser/html.c:1.120 Rev: src/modules/Parser/parser.c:1.11 Rev: src/modules/Perl/perlmod.c:1.22 Rev: src/modules/Pipe/pipe.c:1.44 Rev: src/modules/Postgres/pgresult.c:1.15 Rev: src/modules/Postgres/postgres.c:1.20 Rev: src/modules/Regexp/glue.c:1.19 Rev: src/modules/Regexp/pike_regexp.c:1.20 Rev: src/modules/SANE/sane.c:1.8 Rev: src/modules/Ssleay/ssleay.c:1.13 Rev: src/modules/Yp/yp.c:1.20 Rev: src/modules/_Charset/charsetmod.c:1.25 Rev: src/modules/_Charset/iso2022.c:1.20 Rev: src/modules/_Crypto/arcfour.c:1.13 Rev: src/modules/_Crypto/cast.c:1.9 Rev: src/modules/_Crypto/cbc.c:1.18 Rev: src/modules/_Crypto/crypto.c:1.40 Rev: src/modules/_Crypto/des.c:1.18 Rev: src/modules/_Crypto/idea.c:1.16 Rev: src/modules/_Crypto/invert.c:1.11 Rev: src/modules/_Crypto/md2.c:1.10 Rev: src/modules/_Crypto/md5.c:1.15 Rev: src/modules/_Crypto/nt.c:1.7 Rev: src/modules/_Crypto/pipe.c:1.19 Rev: src/modules/_Crypto/rijndael.c:1.4 Rev: src/modules/_Crypto/rsa.c:1.24 Rev: src/modules/_Crypto/sha.c:1.18 Rev: src/modules/_Image_GIF/image_gif.c:1.2 Rev: src/modules/_Image_JPEG/image_jpeg.c:1.36 Rev: src/modules/_Image_TIFF/image_tiff.c:1.22 Rev: src/modules/_Image_TTF/image_ttf.c:1.37 Rev: src/modules/_Image_XFace/image_xface.c:1.14 Rev: src/modules/_Roxen/roxen.c:1.7 Rev: src/modules/_math/math.c:1.34 Rev: src/modules/call_out/call_out.c:1.40 Rev: src/modules/files/efuns.c:1.88 Rev: src/modules/files/file.c:1.204 Rev: src/modules/files/sendfile.c:1.50 Rev: src/modules/files/socket.c:1.52 Rev: src/modules/files/stat.c:1.15 Rev: src/modules/files/termios.c:1.10 Rev: src/modules/files/udp.c:1.18 Rev: src/modules/spider/discdate.c:1.8 Rev: src/modules/spider/spider.c:1.101 Rev: src/modules/spider/stardate.c:1.11 Rev: src/modules/spider/xml.c:1.29 Rev: src/modules/sprintf/sprintf.c:1.74 Rev: src/modules/sybase/sybase.c:1.5 Rev: src/modules/sybase/sybase.h:1.2 Rev: src/modules/system/nt.c:1.28 Rev: src/modules/system/syslog.c:1.10 Rev: src/modules/system/system.c:1.94 Rev: src/multiset.c:1.30 Rev: src/object.c:1.154 Rev: src/opcodes.c:1.95 Rev: src/operators.c:1.113 Rev: src/peep.c:1.42 Rev: src/pike_memory.c:1.93 Rev: src/pike_search.c:1.4 Rev: src/pike_types.c:1.143 Rev: src/port.c:1.34 Rev: src/post_modules/GL/auto.c.in:1.16 Rev: src/post_modules/GL/top.c:1.13 Rev: src/post_modules/GLUT/auto.c.in:1.3 Rev: src/post_modules/GLUT/top.c:1.4 Rev: src/post_modules/GTK/source/encode_truecolor.c:1.4 Rev: src/post_modules/GTK/source/support.c:1.19 Rev: src/preprocessor.h:1.35 Rev: src/program.c:1.283 Rev: src/queue.c:1.7 Rev: src/security.c:1.28 Rev: src/security.h:1.12 Rev: src/signal_handler.c:1.185 Rev: src/smartlink.c:1.11 Rev: src/stralloc.c:1.109 Rev: src/svalue.c:1.89 Rev: src/svalue.h:1.71 Rev: src/threads.c:1.147 Rev: src/threads.h:1.107
asn1.h 4.00 KiB
/* asn1.h
*
* Some very limited asn.1 support.
*/
/* nettle, low-level cryptographics library
*
* Copyright (C) 2005 Niels Möller
*
* The nettle library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or (at your
* option) any later version.
*
* The nettle library 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. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the nettle library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02111-1301, USA.
*/
#ifndef NETTLE_ASN1_H_INCLUDED
#define NETTLE_ASN1_H_INCLUDED
#include "nettle-types.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Name mangling */
#define asn1_der_iterator_first nettle_asn1_der_iterator_first
#define asn1_der_iterator_next nettle_asn1_der_iterator_next
#define asn1_der_decode_constructed nettle_asn1_der_decode_constructed
#define asn1_der_decode_constructed_last nettle_asn1_der_decode_constructed_last
#define asn1_der_decode_bitstring nettle_asn1_der_decode_bitstring
#define asn1_der_decode_bitstring_last nettle_asn1_der_decode_bitstring_last
#define asn1_der_get_uint32 nettle_asn1_der_get_uint32
#define asn1_der_get_bignum nettle_asn1_der_get_bignum
/* enum asn1_type keeps the class number and the constructive in bits
13-14, and the constructive flag in bit 12. The remaining 14 bits
are the tag (although currently, only tags in the range 0-30 are
supported). */
enum
{
ASN1_TYPE_CONSTRUCTED = 1 << 12,
ASN1_CLASS_UNIVERSAL = 0,
ASN1_CLASS_APPLICATION = 1 << 13,
ASN1_CLASS_CONTEXT_SPECIFIC = 2 << 13,
ASN1_CLASS_PRIVATE = 3 << 13,
ASN1_CLASS_MASK = 3 << 13,
ASN1_CLASS_SHIFT = 13,
};
enum asn1_type
{
ASN1_BOOLEAN = 1,
ASN1_INTEGER = 2,
ASN1_BITSTRING = 3,
ASN1_OCTETSTRING = 4,
ASN1_NULL = 5,
ASN1_IDENTIFIER = 6,
ASN1_REAL = 9,
ASN1_ENUMERATED = 10,
ASN1_UTF8STRING = 12,
ASN1_SEQUENCE = 16 | ASN1_TYPE_CONSTRUCTED,
ASN1_SET = 17 | ASN1_TYPE_CONSTRUCTED,
ASN1_PRINTABLESTRING = 19,
ASN1_TELETEXSTRING = 20,
ASN1_IA5STRING = 22,
ASN1_UTC = 23,
ASN1_UNIVERSALSTRING = 28,
ASN1_BMPSTRING = 30,
};
enum asn1_iterator_result
{
ASN1_ITERATOR_ERROR,
ASN1_ITERATOR_PRIMITIVE,
ASN1_ITERATOR_CONSTRUCTED,
ASN1_ITERATOR_END,
};
/* Parsing DER objects. */
struct asn1_der_iterator
{
size_t buffer_length;
const uint8_t *buffer;
/* Next object to parse. */
size_t pos;
enum asn1_type type;
/* Pointer to the current object */
size_t length;
const uint8_t *data;
};
/* Initializes the iterator. */
enum asn1_iterator_result
asn1_der_iterator_first(struct asn1_der_iterator *iterator,
size_t length, const uint8_t *input);
enum asn1_iterator_result
asn1_der_iterator_next(struct asn1_der_iterator *iterator);
/* Starts parsing of a constructed object. */
enum asn1_iterator_result
asn1_der_decode_constructed(struct asn1_der_iterator *i,
struct asn1_der_iterator *contents);
/* For the common case that we have a sequence at the end of the
object. Checks that the current object is the final one, and then
reinitializes the iterator to parse its ontents. */
enum asn1_iterator_result
asn1_der_decode_constructed_last(struct asn1_der_iterator *i);
enum asn1_iterator_result
asn1_der_decode_bitstring(struct asn1_der_iterator *i,
struct asn1_der_iterator *contents);
enum asn1_iterator_result
asn1_der_decode_bitstring_last(struct asn1_der_iterator *i);
/* All these functions return 1 on success, 0 on failure */
int
asn1_der_get_uint32(struct asn1_der_iterator *i,
uint32_t *x);
#ifdef __cplusplus
}
#endif
#endif /* NETTLE_ASN1_H_INCLUDED */