gwenhywfar  4.6.0beta
Macros | Functions
tlv.c File Reference
#include "tlv_p.h"
#include <gwenhywfar/debug.h>
#include <gwenhywfar/inherit.h>
#include <gwenhywfar/misc.h>
#include <gwenhywfar/text.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>

Go to the source code of this file.

Macros

#define DISABLE_DEBUGLOG

Functions

GWEN_TLVGWEN_TLV_create (unsigned int tagType, unsigned int tagMode, const void *p, unsigned int dlen, int isBerTlv)
int GWEN_TLV_DirectlyToBuffer (unsigned int tagType, unsigned int tagMode, const void *tagData, int tagLength, int isBerTlv, GWEN_BUFFER *mbuf)
void GWEN_TLV_free (GWEN_TLV *tlv)
GWEN_TLVGWEN_TLV_fromBuffer (GWEN_BUFFER *mbuf, int isBerTlv)
unsigned int GWEN_TLV_GetClass (const GWEN_TLV *tlv)
const void * GWEN_TLV_GetTagData (const GWEN_TLV *tlv)
unsigned int GWEN_TLV_GetTagLength (const GWEN_TLV *tlv)
unsigned int GWEN_TLV_GetTagSize (const GWEN_TLV *tlv)
unsigned int GWEN_TLV_GetTagType (const GWEN_TLV *tlv)
int GWEN_TLV_IsBerTlv (const GWEN_TLV *tlv)
int GWEN_TLV_IsContructed (const GWEN_TLV *tlv)
GWEN_TLVGWEN_TLV_new (void)
int GWEN_TLV_ReadHeader (GWEN_TLV *tlv, const uint8_t *p, uint32_t size, int isBerTlv)
int GWEN_TLV_toBuffer (GWEN_TLV *tlv, GWEN_BUFFER *mbuf)
int GWEN_TLV_WriteHeader (unsigned int tagType, unsigned int tagMode, uint64_t tagLength, int isBerTlv, GWEN_BUFFER *mbuf)

Macro Definition Documentation

#define DISABLE_DEBUGLOG

Definition at line 15 of file tlv.c.

Function Documentation

GWEN_TLV* GWEN_TLV_create ( unsigned int  tagType,
unsigned int  tagMode,
const void *  p,
unsigned int  dlen,
int  isBerTlv 
)

Definition at line 53 of file tlv.c.

References DBG_ERROR, GWEN_LOGDOMAIN, and GWEN_TLV_new().

int GWEN_TLV_DirectlyToBuffer ( unsigned int  tagType,
unsigned int  tagMode,
const void *  tagData,
int  tagLength,
int  isBerTlv,
GWEN_BUFFER mbuf 
)
void GWEN_TLV_free ( GWEN_TLV tlv)

Definition at line 43 of file tlv.c.

References GWEN_FREE_OBJECT, and GWEN_LIST_FINI.

Referenced by GWEN_Sar_ScanFile().

GWEN_TLV* GWEN_TLV_fromBuffer ( GWEN_BUFFER mbuf,
int  isBerTlv 
)
unsigned int GWEN_TLV_GetClass ( const GWEN_TLV tlv)

Definition at line 260 of file tlv.c.

const void* GWEN_TLV_GetTagData ( const GWEN_TLV tlv)

Definition at line 124 of file tlv.c.

Referenced by GWEN_Sar_TlvToFileHeader().

unsigned int GWEN_TLV_GetTagLength ( const GWEN_TLV tlv)

Definition at line 110 of file tlv.c.

Referenced by GWEN_Sar_ScanFile(), and GWEN_Sar_TlvToFileHeader().

unsigned int GWEN_TLV_GetTagSize ( const GWEN_TLV tlv)

Definition at line 117 of file tlv.c.

Referenced by GWEN_Sar_ScanFile().

unsigned int GWEN_TLV_GetTagType ( const GWEN_TLV tlv)

Definition at line 103 of file tlv.c.

Referenced by GWEN_Sar_ScanFile(), and GWEN_Sar_TlvToFileHeader().

int GWEN_TLV_IsBerTlv ( const GWEN_TLV tlv)

Definition at line 96 of file tlv.c.

int GWEN_TLV_IsContructed ( const GWEN_TLV tlv)

Definition at line 253 of file tlv.c.

GWEN_TLV* GWEN_TLV_new ( void  )

Definition at line 32 of file tlv.c.

References GWEN_LIST_INIT, and GWEN_NEW_OBJECT.

Referenced by GWEN_Sar_ScanFile(), GWEN_TLV_create(), and GWEN_TLV_fromBuffer().

int GWEN_TLV_ReadHeader ( GWEN_TLV tlv,
const uint8_t *  p,
uint32_t  size,
int  isBerTlv 
)

Reads a TLV header from a buffer (tag and length) and returns the number of bytes used by the header.

Returns
number of bytes used to specify tag and length (i.e. TLV size without the data part)
Parameters
tlvTLV to read the header into
ppointer to a buffer containing at least the header
sizesiez of the buffer pointed to by p
isBerTlvif !=0 then the TLV is supposed to be a BER-TLV object

Definition at line 340 of file tlv.c.

References DBG_DEBUG, DBG_ERROR, GWEN_ERROR_BAD_DATA, and GWEN_LOGDOMAIN.

Referenced by GWEN_Sar_ScanFile().

int GWEN_TLV_toBuffer ( GWEN_TLV tlv,
GWEN_BUFFER mbuf 
)

Definition at line 267 of file tlv.c.

References GWEN_TLV_DirectlyToBuffer().

int GWEN_TLV_WriteHeader ( unsigned int  tagType,
unsigned int  tagMode,
uint64_t  tagLength,
int  isBerTlv,
GWEN_BUFFER mbuf 
)

Directly writes a TLV header (tag and length) to the given buffer.

Returns
0 if ok, error code otherwise
Parameters
tagTypetag id
tagModebits 5, 6 and 7 of the first TLV byte (bits 6/7: class, bit 5: constructed)
tagLengthlength of the data part introduced by the TLV header
isBerTlvif !=0 then the TLV is supposed to be a BER-TLV object
mbufbuffer to receive the TLV header

Definition at line 477 of file tlv.c.

References GWEN_Buffer_AppendByte().

Referenced by GWEN_Sar_AddAndDigestFileReg(), and GWEN_Sar_AddFile().