libDER_config.h   [plain text]

/* Copyright (c) 2005-2007 Apple Inc. All Rights Reserved. */

 * libDER_config.h - platform dependent #defines and typedefs for libDER
 * Created Nov. 4 2005 by dmitch
#ifndef	_LIB_DER_CONFIG_H_
#define _LIB_DER_CONFIG_H_

#include <stdint.h>
#include <string.h>

#ifdef __cplusplus
extern "C" {

 * Basic data types: unsigned 8-bit integer, unsigned 32-bit integer
typedef uint8_t DERByte;
typedef uint16_t DERShort;
typedef uint32_t DERSize;

 * Use these #defines of you have memset, memmove, and memcmp; else
 * write your own equivalents.

#define DERMemset(ptr, c, len)		memset(ptr, c, len)
#define DERMemmove(dst, src, len)	memmove(dst, src, len)
#define DERMemcmp(b1, b2, len)		memcmp(b1, b2, len)

 *** Compile time options to trim size of the library. 
/* enable general DER encode */

/* enable general DER decode */

/* enable multibyte tag support. */

#ifndef DER_TAG_SIZE
/* Iff DER_MULTIBYTE_TAGS is 1 this is the sizeof(DERTag) in bytes. Note that
   tags are still encoded and decoded from a minimally encoded DER
   represantation.  This value determines how big each DERItemSpecs is, we
   choose 2 since that makes DERItemSpecs 8 bytes wide.  */
#define DER_TAG_SIZE            2

/* ---------------------- Do not edit below this line ---------------------- */

 * Logical representation of a tag (the encoded representation is always in
 * the minimal number of bytes). The top 3 bits encode class and method
 * The remaining bits encode the tag value.  To obtain smaller DERItemSpecs
 * sizes, choose the smallest type that fits your needs.  Most standard ASN.1
 * usage only needs single byte tags, but ocasionally custom applications
 * require a larger tag namespace.

#if DER_TAG_SIZE == 1
typedef uint8_t DERTag;
#elif DER_TAG_SIZE == 2
typedef uint16_t DERTag;
#elif DER_TAG_SIZE == 4
typedef uint32_t DERTag;
#elif DER_TAG_SIZE == 8
typedef uint64_t DERTag;
#error DER_TAG_SIZE invalid

typedef DERByte DERTag;
#endif /* !DER_MULTIBYTE_TAGS */

#ifdef __cplusplus

#endif	/* _LIB_DER_CONFIG_H_ */