|
|
/* Copyright (C) Boris Nikolaus, Germany, 1996-1997. All rights reserved. */ /* Copyright (C) Microsoft Corporation, 1997-1998. All rights reserved. */
#ifndef _ASN1_CINTERN_H_
#define _ASN1_CINTERN_H_
typedef struct ASN1INTERNencoding_s *ASN1INTERNencoding_t; typedef struct ASN1INTERNdecoding_s *ASN1INTERNdecoding_t;
// lonchanc: this is really bad to duplicate the definitions of ASN1encoding_s
// and ASN1decoding_s here. We sould simply use them as components in
// the following ASN1INTERNencoding_s and ASN1INTERNdecoding_s.
struct ASN1INTERNencoding_s {
// public view of encoding structure
struct ASN1encoding_s info;
// private portion of encoding structure
ASN1INTERNencoding_t parent; ASN1INTERNencoding_t child;
#ifdef ENABLE_EXTRA_INFO
ASN1uint32_t memlength; ASN1uint32_t memsize; void** mem; ASN1uint32_t epilength; ASN1uint32_t episize; ASN1embeddedpdv_identification_t** epi; ASN1uint32_t csilength; ASN1uint32_t csisize; ASN1characterstring_identification_t** csi; #endif // ENABLE_EXTRA_INFO
};
struct ASN1INTERNdecoding_s {
// public view of decoding structure
struct ASN1decoding_s info;
// private portion of decoding structure
ASN1INTERNdecoding_t parent; ASN1INTERNdecoding_t child;
#ifdef ENABLE_EXTRA_INFO
ASN1uint32_t memlength; ASN1uint32_t memsize; void** mem; ASN1uint32_t epilength; ASN1uint32_t episize; ASN1embeddedpdv_identification_t** epi; ASN1uint32_t csilength; ASN1uint32_t csisize; ASN1characterstring_identification_t** csi; #endif // ENABLE_EXTRA_INFO
// decoded into an external buffer
ASN1uint32_t fExtBuf; void* lpOrigExtBuf; // original buffer pointer
ASN1uint32_t cbOrigExtBufSize;// original buffer size
ASN1uint8_t* lpRemExtBuf; // remaining buffer pointer
ASN1uint32_t cbRemExtBufSize; // remaining buffer size
ASN1uint32_t cbLinearBufSize; // linear buffer size to hold the data
};
extern ASN1_PUBLIC void ASN1API ASN1DecAbort(ASN1decoding_t dec); extern ASN1_PUBLIC void ASN1API ASN1DecDone(ASN1decoding_t dec); extern ASN1_PUBLIC void ASN1API ASN1EncAbort(ASN1encoding_t enc); extern ASN1_PUBLIC void ASN1API ASN1EncDone(ASN1encoding_t enc);
#ifdef ENABLE_GENERALIZED_CHAR_STR
int ASN1EncSearchCharacterStringIdentification(ASN1INTERNencoding_t e, ASN1characterstring_identification_t *identification, ASN1uint32_t *index, ASN1uint32_t *flag); int ASN1DecAddCharacterStringIdentification(ASN1INTERNdecoding_t d, ASN1characterstring_identification_t *identification); ASN1characterstring_identification_t *ASN1DecGetCharacterStringIdentification(ASN1INTERNdecoding_t d, ASN1uint32_t index); #endif // ENABLE_GENERALIZED_CHAR_STR
#ifdef ENABLE_EMBEDDED_PDV
int ASN1EncSearchEmbeddedPdvIdentification(ASN1INTERNencoding_t e, ASN1embeddedpdv_identification_t *identification, ASN1uint32_t *index, ASN1uint32_t *flag); int ASN1DecAddEmbeddedPdvIdentification(ASN1INTERNdecoding_t d, ASN1embeddedpdv_identification_t *identification); ASN1embeddedpdv_identification_t *ASN1DecGetEmbeddedPdvIdentification(ASN1INTERNdecoding_t d, ASN1uint32_t index); #endif // ENABLE_EMBEDDED_PDV
int ASN1DecDupObjectIdentifier(ASN1decoding_t dec, ASN1objectidentifier_t *dst, ASN1objectidentifier_t *src);
ASN1uint32_t GetObjectIdentifierCount(ASN1objectidentifier_t val); ASN1uint32_t CopyObjectIdentifier(ASN1objectidentifier_t dst, ASN1objectidentifier_t src); ASN1objectidentifier_t DecAllocObjectIdentifier(ASN1decoding_t dec, ASN1uint32_t cObjIds); void DecFreeObjectIdentifier(ASN1decoding_t dec, ASN1objectidentifier_t p);
/* ------ perencod.c ------ */
int ASN1EncCheck(ASN1encoding_t enc, ASN1uint32_t noctets); __inline int ASN1PEREncCheck(ASN1encoding_t enc, ASN1uint32_t noctets) { return ASN1EncCheck(enc, noctets); } __inline int ASN1BEREncCheck(ASN1encoding_t enc, ASN1uint32_t noctets) { return ASN1EncCheck(enc, noctets); }
/* ------ bit.c ------ */
int ASN1is32space(ASN1char32_t); int ASN1str32len(ASN1char32_t *); int ASN1is16space(ASN1char16_t); int ASN1str16len(ASN1char16_t *); int My_lstrlenA(char *p); int My_lstrlenW(WCHAR *p); void ASN1bitcpy(ASN1octet_t *dst, ASN1uint32_t dstbit, ASN1octet_t *src, ASN1uint32_t srcbit, ASN1uint32_t nbits); void ASN1bitclr(ASN1octet_t *dst, ASN1uint32_t dstbit, ASN1uint32_t nbits); void ASN1bitset(ASN1octet_t *dst, ASN1uint32_t dstbit, ASN1uint32_t nbits); void ASN1bitput(ASN1octet_t *dst, ASN1uint32_t dstbit, ASN1uint32_t val, ASN1uint32_t nbits); ASN1uint32_t ASN1bitgetu(ASN1octet_t *src, ASN1uint32_t srcbit, ASN1uint32_t nbits); ASN1int32_t ASN1bitget(ASN1octet_t *src, ASN1uint32_t srcbit, ASN1uint32_t nbits); ASN1uint32_t ASN1bitcount(ASN1octet_t *src, ASN1uint32_t srcbit, ASN1uint32_t nbits); void ASN1octetput(ASN1octet_t *dst, ASN1uint32_t val, ASN1uint32_t noctets); ASN1uint32_t ASN1octetget(ASN1octet_t *src, ASN1uint32_t noctets);
#endif /* _ASN1_CINTERN_H_ */
|