From f15320bf6b50a0c02636405561ac8323ae901abd Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Thu, 3 Jun 2004 03:38:44 +0000 Subject: Initial revision --- skeletons/NULL.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 skeletons/NULL.c (limited to 'skeletons/NULL.c') diff --git a/skeletons/NULL.c b/skeletons/NULL.c new file mode 100644 index 00000000..9027e2c1 --- /dev/null +++ b/skeletons/NULL.c @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include /* Implemented in terms of BOOLEAN type */ + +/* + * NULL basic type description. + */ +static ber_tlv_tag_t asn1_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn1_TYPE_descriptor_t asn1_DEF_NULL = { + "NULL", + asn_generic_no_constraint, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_print, + BOOLEAN_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_NULL_tags, + sizeof(asn1_DEF_NULL_tags)/sizeof(asn1_DEF_NULL_tags[0]), + 1, /* Single UNIVERSAL tag may be implicitly overriden */ + 0 /* Always in primitive form */ +}; + +der_enc_rval_t +NULL_encode_der(asn1_TYPE_descriptor_t *sd, void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + der_enc_rval_t erval; + + erval.encoded = der_write_tags(sd, 0, tag_mode, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = sd; + erval.structure_ptr = ptr; + } + + return erval; +} + +int +NULL_print(asn1_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + if(sptr) { + return cb("", 9, app_key); + } else { + return cb("", 8, app_key); + } +} -- cgit v1.2.3