Guardtime KSI c SDK
Data Structures | Macros | Typedefs | Functions
tlv_template.h File Reference
#include <stdlib.h>
#include "common.h"
#include "types.h"

Go to the source code of this file.

Data Structures

struct  KSI_TlvTemplate_st
 

Macros

#define KSI_TLV_toTlv   KSI_TLV_clone
 
#define KSI_TLV_fromTlv   KSI_TLV_clone
 
#define KSI_TLV_TEMPLATE(name)   name##_template
 
#define KSI_IMPORT_TLV_TEMPLATE(name)   KSI_DEFINE_EXTERN(const KSI_TlvTemplate KSI_TLV_TEMPLATE(name)[])
 
#define KSI_TLV_TEMPLATE_OBJECT   1
 
#define KSI_TLV_TEMPLATE_COMPOSITE   2
 
#define KSI_TLV_TEMPLATE_LIST   3
 
#define KSI_TLV_TMPL_FLG_NONE   0x00
 
#define KSI_TLV_TMPL_FLG_FORWARD   0x01
 
#define KSI_TLV_TMPL_FLG_NONCRITICAL   0x02
 
#define KSI_TLV_TMPL_FLG_MANDATORY   0x04
 
#define KSI_TLV_TMPL_FLG_LEAST_ONE_G0   0x08
 
#define KSI_TLV_TMPL_FLG_LEAST_ONE_G1   0x10
 
#define KSI_TLV_TMPL_FLG_MORE_DEFS   0x20
 
#define KSI_TLV_TMPL_FLG_NO_SERIALIZE   0x40
 
#define KSI_TLV_TMPL_FLG_MOST_ONE_G0   0x80
 
#define KSI_TLV_TMPL_FLG_MOST_ONE_G1   0x100
 
#define KSI_TLV_TMPL_FLG_FIXED_ORDER   0x200
 
#define KSI_TLV_TMPL_FLG_FIRST   0x400
 
#define KSI_TLV_TMPL_FLG_LAST   0x800
 
#define KSI_TLV_TMPL_FLG_NO_VALUE   0x1000
 
#define KSI_TLV_TMPL_FLG_MANTATORY_MOST_ONE_G0   (KSI_TLV_TMPL_FLG_LEAST_ONE_G0 | KSI_TLV_TMPL_FLG_MOST_ONE_G0)
 
#define KSI_TLV_TMPL_FLG_MANTATORY_MOST_ONE_G1   (KSI_TLV_TMPL_FLG_LEAST_ONE_G1 | KSI_TLV_TMPL_FLG_MOST_ONE_G1)
 
#define KSI_TLV_FULL_TEMPLATE_DEF(typ, tg, flg, gttr, sttr, constr, destr, subTmpl, list_append, mul, list_new, list_free, list_len, list_elAt, fromTlv, toTlv, descr, parser, p_opt, setRaw)
 
#define KSI_TLV_PRIMITIVE_TEMPLATE_DEF(typ, tg, flg, gttr, sttr, descr)   KSI_TLV_FULL_TEMPLATE_DEF(typ, tg, flg, gttr, sttr, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, descr, NULL, 0, NULL)
 
#define KSI_DEFINE_TLV_TEMPLATE(name)   const KSI_TlvTemplate name##_template[] = {
 
#define KSI_TLV_OBJECT(tg, flg, gttr, sttr, fromTlv, toTlv, destr, descr)   KSI_TLV_FULL_TEMPLATE_DEF(KSI_TLV_TEMPLATE_OBJECT, tg, flg, gttr, sttr, NULL, destr, NULL, NULL, 0, NULL, NULL, NULL, NULL, fromTlv, toTlv, descr, NULL, 0, NULL)
 
#define KSI_TLV_WRAP_OBJECT(tg, flg, gttr, sttr, parser, toTlv, destr, descr)   KSI_TLV_FULL_TEMPLATE_DEF(KSI_TLV_TEMPLATE_OBJECT, tg, flg, gttr, sttr, NULL, destr, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, toTlv, descr, (parser), 0, NULL)
 
#define KSI_TLV_COMPOSITE_OBJECT(tg, flg, gttr, sttr, fromTlv, toTlv, destr, tmpl, descr)   KSI_TLV_FULL_TEMPLATE_DEF(KSI_TLV_TEMPLATE_OBJECT, tg, flg, gttr, sttr, NULL, destr, (tmpl), NULL, 0, NULL, NULL, NULL, NULL, fromTlv, toTlv, descr, NULL, 0, NULL)
 
#define KSI_TLV_UTF8_STRING(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT(tg, flg, gttr, sttr, KSI_Utf8String_fromTlv, KSI_Utf8String_toTlv, KSI_Utf8String_free, descr)
 
#define KSI_TLV_INTEGER(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT(tg, flg, gttr, sttr, KSI_Integer_fromTlv, KSI_Integer_toTlv, KSI_Integer_free, descr)
 
#define KSI_TLV_OCTET_STRING(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT(tg, flg, gttr, sttr, KSI_OctetString_fromTlv, KSI_OctetString_toTlv, KSI_OctetString_free, descr)
 
#define KSI_TLV_IMPRINT(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT(tg, flg, gttr, sttr, KSI_DataHash_fromTlv, KSI_DataHash_toTlv, KSI_DataHash_free, descr)
 
#define KSI_TLV_WRAP_IMPRINT(tg, flg, gttr, sttr, descr)   KSI_TLV_WRAP_OBJECT(tg, flg, gttr, sttr, KSI_DataHash_parse, KSI_DataHash_toTlv, KSI_DataHash_free, descr)
 
#define KSI_TLV_TIME_S   KSI_TLV_INTEGER
 
#define KSI_TLV_TIME_US   KSI_TLV_INTEGER
 
#define KSI_TLV_OBJECT_LIST(tg, flg, gttr, sttr, obj, descr)   KSI_TLV_FULL_TEMPLATE_DEF(KSI_TLV_TEMPLATE_OBJECT, tg, flg, gttr, sttr, NULL, obj##_free, NULL, KSI_List_append, 1, obj##List_new, obj##List_free, KSI_List_length, KSI_List_elementAt, obj##_fromTlv, obj##_toTlv, descr, NULL, 0, NULL)
 
#define KSI_TLV_OCTET_STRING_LIST(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT_LIST(tg, flg, gttr, sttr, KSI_OctetString, descr)
 
#define KSI_TLV_UTF8_STRING_LIST(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT_LIST(tg, flg, gttr, sttr, KSI_Utf8String, descr)
 
#define KSI_TLV_INTEGER_LIST(tg, flg, gttr, sttr, descr)   KSI_TLV_OBJECT_LIST(tg, flg, gttr, sttr, KSI_Integer, descr)
 
#define KSI_TLV_COMPOSITE(tg, flg, gttr, sttr, sub, descr)   KSI_TLV_FULL_TEMPLATE_DEF(KSI_TLV_TEMPLATE_COMPOSITE, tg, flg, gttr, sttr, sub##_new, sub##_free, sub##_template, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, descr, NULL, 0, NULL)
 
#define KSI_TLV_COMPOSITE_LIST(tg, flg, gttr, sttr, sub, descr)   KSI_TLV_FULL_TEMPLATE_DEF(KSI_TLV_TEMPLATE_COMPOSITE, tg, flg, gttr, sttr, sub##_new, sub##_free, sub##_template, KSI_List_append, 1, sub##List_new, sub##List_free, KSI_List_length, KSI_List_elementAt, NULL, NULL, descr, NULL, 0, NULL)
 
#define KSI_END_TLV_TEMPLATE   { -1, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL}};
 
#define KSI_IMPLEMENT_OBJECT_PARSE(type, tag)
 
#define KSI_IMPLEMENT_OBJECT_SERIALIZE(type, tag, nc, fwd)
 
#define KSI_IMPLEMENT_WRITE_BYTES(typ, tag, nc, fwd)
 

Typedefs

typedef int(* getter_t) (const void *, void **)
 
typedef int(* setter_t) (void *, void *)
 
typedef int(* cb_decode_t) (KSI_CTX *ctx, const KSI_TLV *, void *, const KSI_TlvTemplate *)
 
typedef int(* cb_encode_t) (KSI_CTX *, KSI_TLV *, const void *, const KSI_TlvTemplate *)
 
typedef int(* parse_t) (KSI_CTX *, unsigned char *, size_t, int, void *)
 

Functions

int KSI_TlvTemplate_extract (KSI_CTX *ctx, void *payload, KSI_TLV *tlv, const KSI_TlvTemplate *tmpl)
 
int KSI_TlvTemplate_parse (KSI_CTX *ctx, const unsigned char *raw, size_t raw_len, const KSI_TlvTemplate *tmpl, void *payload)
 
int KSI_TlvTemplate_extractGenerator (KSI_CTX *ctx, void *payload, void *generatorCtx, const KSI_TlvTemplate *tmpl, int(*generator)(void *, KSI_TLV **))
 
int KSI_TlvTemplate_construct (KSI_CTX *ctx, KSI_TLV *tlv, const void *payload, const KSI_TlvTemplate *tmpl)
 
int KSI_TlvTemplate_serializeObject (KSI_CTX *ctx, const void *obj, unsigned tag, int isNc, int isFwd, const KSI_TlvTemplate *tmpl, unsigned char **raw, size_t *raw_len)
 
int KSI_TlvTemplate_writeBytes (KSI_CTX *ctx, const void *obj, unsigned tag, int isNc, int isFwd, const KSI_TlvTemplate *tmpl, unsigned char *raw, size_t raw_size, size_t *raw_len, int opt)
 

Macro Definition Documentation

#define KSI_TLV_fromTlv   KSI_TLV_clone
#define KSI_TLV_toTlv   KSI_TLV_clone

These definitions are used to retrieve the entire TLV as the result of parsing.