Redesign ASN.1 encoder engine, removing field_info
authorGreg Hudson <ghudson@mit.edu>
Tue, 24 Jan 2012 05:52:39 +0000 (05:52 +0000)
committerGreg Hudson <ghudson@mit.edu>
Tue, 24 Jan 2012 05:52:39 +0000 (05:52 +0000)
commitfde815444b60dffd16b2fcd14953c1f928991d59
tree69080f4d9e84c1d0ff7632b5fec8e5c38e2f2297
parent719263b39171c624c45ae54a511a4c64f216d7d4
Redesign ASN.1 encoder engine, removing field_info

Replace the "field" half of the ASN.1 encoder machinery with several
new struct atype_info types (offset, counted, and int_immediate) and a
new counted_type machinery used exclusively for object/integer pairs.
This change eliminates the two-way entanglement between atypes and
fields, and makes the encoder more independent of RFC 4120 ASN.1
conventions.

Defining sequences with the preprocessor macros is now slightly more
cumbersome; we need to define a type for each field and then string
them together with an array of struct atype_info *.  But it's not so
bad, and hopefully we can auto-generate some of this soon.

*_optional functions now return a bitmask of sequence field offsets
not present in the C type.  This will need some more attention before
we add decoding support to the engine, since it means sequence fields
no longer know whether they are optional or not.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25657 dc483132-0cff-0310-8789-dd5450dbe970
src/lib/krb5/asn.1/asn1_encode.c
src/lib/krb5/asn.1/asn1_encode.h
src/lib/krb5/asn.1/asn1_k_encode.c
src/lib/krb5/asn.1/ldap_key_seq.c