# # This code depends on heimdal's asn1_compile generated krb5 decoding # stuff. The code is originally from rxkad that Björn Grönvall # for kth-krb and was included in Arla. # # The first file, v5der.c are part for of support functions # that all generated files depends on. # # The second file (v5gen.h) is the header file that is generated for # the decoding functions. # # The third file (v5gen.c) is the subset of the generated functions we # need to decode the authenticator. # # The forth file (v5gen-rewrite.h) is used to make sure we don't # pollute the namespace. # # All files are modified to build within OpenAFS environment without # any external dependencies. Below is the shell script that is used to # import the code into the four files. # # All internal symbols are rewritten to _rxkad_v5_. # # Make sure we don't export too much # # : lha@nutcracker ; nm ticket5.o | grep T | grep -v _rxkad_v5 # 00005748 T tkt_DecodeTicket5 # htree=/home/lha/src/cvs/heimdal hotree=/sources/obj/heimdal otree=/sources/afs/openafs-rxkad5 export htree hotree otree (cd $htree/lib/asn1 ; \ echo '#include "asn1_err.h"'; \ echo '#include '; \ echo '#include '; \ cat timegm.c \ der_get.c \ der_put.c \ der_free.c \ der_length.c \ der_copy.c \ ) \ | grep -v 'include "der_locl.h"' \ | grep -v 'include ' \ | sed 's!\(RCSID.*\)!/* \1 */!' \ | sed 's!$Id: !Heimdal: !' \ > $otree/src/rxkad/v5der.c grep -v 'struct units' $hotree/lib/asn1/krb5_asn1.h \ | sed s/uint16_t/afs_uint16/ \ | sed s/uint32_t/afs_uint32/ \ > $otree/src/rxkad/v5gen.h cp $hotree/lib/asn1/der-protos.h \ $otree/src/rxkad/der-protos.h < $hotree/lib/asn1/asn1_err.h \ sed 's!#include !struct et_list;!' \ > $otree/src/rxkad/asn1_err.h (cd $hotree/lib/asn1 ; \ echo '#define HEIMDAL_UNUSED_ATTRIBUTE AFS_UNUSED' ; \ cat krb5_asn1-priv.h ; \ cat asn1_krb5_asn1.x ) \ | grep -v 'include ' \ | grep -v 'include "krb5_asn1.h"' \ | grep -v 'include "krb5_asn1-priv.h"' \ | grep -v 'include ' \ | grep -v 'include ' \ | grep -v 'include ' \ | grep -v 'include ' \ | perl \ -e '$f=0; while(<>){$f=1 if(/struct units/);print if($f eq 0);$f=0 if(/^}/);}' \ | sed -n '/^encode_Checksum[(]/q;p' \ | head -n -2 \ > $otree/src/rxkad/v5gen.c ( \ perl -p -e 's/^(encode_|decode_|free_|copy_|length_)([^(]*)\([^)]*\)\n$/#define $1$2 _rxkad_v5_$1$2\n/' $otree/src/rxkad/v5gen.c ; \ perl -p -e 's/^(der_|copy_|encode_|decode_|len_|length_|free_|fix_dce|time2generalizedtime)([^( ]*).*/#define $1$2 _rxkad_v5_$1$2/' $otree/src/rxkad/v5der.c ; \ echo '#define TicketFlags2int _rxkad_v5_TicketFlags2int' ; \ echo '#define int2TicketFlags _rxkad_v5_int2TicketFlags' ; \ : ) | \ grep _rxkad_v5 \ > $otree/src/rxkad/v5gen-rewrite.h ( \ < $otree/src/rxkad/v5gen.c \ indent -npro -nbad -bap -nbc -br -ce -cd4 -brs -ncdb -di2 -ndj -nfc1 -i4 -lp -npcs -psl -sc -nsob \ > $otree/src/rxkad/v5gen.c.indent ; \ mv $otree/src/rxkad/v5gen.c.indent $otree/src/rxkad/v5gen.c \ )