git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23181 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-05-22 02:56:41 +00:00
parent 4ae56dc185
commit c7fa97e1fe

View File

@@ -1,67 +0,0 @@
#include "der_locl.h"
enum prim_opcode {
HAP_BOOLEAN = 0
};
typedef size_t (*op_length)(const void *);
typedef int (*op_get)(const unsigned char *, size_t, void *, size_t *);
typedef int (*op_put)(unsigned char *, size_t, const void *, size_t *);
typedef int (*op_release)(void *);
typedef int (*op_parse)(const char *, void *);
typedef size_t (*op_print)(const void *, char *, size_t);
/* flags */
#define OPTIONAL 1
struct op {
/* must implement */
int dertype;
const char *name;
size_t datasize;
op_length length;
op_get get;
op_put put;
op_release release;
/* may implement */
op_parse parse;
op_print print;
};
/* primitive operatators */
struct op pops[] = {
{
UT_EndOfContent,
"EndOfContent"
},
{
UT_Boolean,
"boolean",
sizeof(int),
(op_length)der_length_boolean,
(op_get)der_get_boolean,
(op_put)der_put_boolean,
(op_release)der_free_generic,
NULL,
NULL
}
};
int
asn1code_decode_type(unsigned int op,
const unsigned char *in, size_t len,
void *data, size_t *size);
int
asn1code_decode_type(unsigned int op,
const unsigned char *in, size_t len,
void *data, size_t *size)
{
if (op > sizeof(pops)/sizeof(pops[0]))
return -1;
return (pops[op].get)(in, len, data, size);
}