iBoot/lib/pki/libDER/libDER.h

63 lines
1.6 KiB
C

/* Copyright (c) 2005-2007 Apple Inc. All Rights Reserved. */
/*
* libDER.h - main header for libDER, a ROM-capable DER decoding library.
*
* Created Nov. 4 2005 by dmitch
*/
#ifndef _LIB_DER_H_
#define _LIB_DER_H_
#include <libDER/libDER_config.h>
__BEGIN_DECLS
/*
* Error returns generated by this library.
*/
typedef enum {
DR_Success = 0,
DR_EndOfSequence, /* end of sequence or set */
DR_UnexpectedTag, /* unexpected tag found while decoding */
DR_DecodeError, /* misc. decoding error (badly formatted DER) */
DR_Unimplemented, /* function not implemented in this configuration */
DR_IncompleteSeq, /* incomplete sequence */
DR_ParamErr, /* incoming parameter error */
DR_BufOverflow /* buffer overflow */
/* etc. */
} DERReturn;
/*
* Primary representation of a block of memory.
*/
typedef struct {
DERByte *data;
DERSize length;
} DERItem;
/*
* The structure of a sequence during decode or encode is expressed as
* an array of DERItemSpecs. While decoding or encoding a sequence,
* each item in the sequence corresponds to one DERItemSpec.
*/
typedef struct {
DERSize offset; /* offset of destination DERItem */
DERTag tag; /* DER tag */
DERShort options; /* DER_DEC_xxx or DER_ENC_xxx */
} DERItemSpec;
/*
* Macro to obtain offset of a DERDecodedInfo within a struct.
* FIXME this is going to need reworking to avoid compiler warnings
* on 64-bit compiles. It'll work OK as long as an offset can't be larger
* than a DERSize, but the cast from a pointer to a DERSize may
* provoke compiler warnings.
*/
#define DER_OFFSET(type, field) ((DERSize)(&((type *)0)->field))
__END_DECLS
#endif /* _LIB_DER_H_ */