#
# delete_file "cryptopp/algebra.cpp"
#
# delete_file "cryptopp/algebra.h"
#
# delete_file "cryptopp/algparam.cpp"
#
# delete_file "cryptopp/algparam.h"
#
# delete_file "cryptopp/arc4.cpp"
#
# delete_file "cryptopp/arc4.h"
#
# delete_file "cryptopp/argnames.h"
#
# delete_file "cryptopp/asn.cpp"
#
# delete_file "cryptopp/asn.h"
#
# delete_file "cryptopp/base64.cpp"
#
# delete_file "cryptopp/base64.h"
#
# delete_file "cryptopp/basecode.cpp"
#
# delete_file "cryptopp/basecode.h"
#
# delete_file "cryptopp/config.h"
#
# delete_file "cryptopp/crc.cpp"
#
# delete_file "cryptopp/crc.h"
#
# delete_file "cryptopp/cryptlib.cpp"
#
# delete_file "cryptopp/cryptlib.h"
#
# delete_file "cryptopp/des.cpp"
#
# delete_file "cryptopp/des.h"
#
# delete_file "cryptopp/dessp.cpp"
#
# delete_file "cryptopp/dll.cpp"
#
# delete_file "cryptopp/dll.h"
#
# delete_file "cryptopp/eprecomp.cpp"
#
# delete_file "cryptopp/eprecomp.h"
#
# delete_file "cryptopp/files.cpp"
#
# delete_file "cryptopp/files.h"
#
# delete_file "cryptopp/filters.cpp"
#
# delete_file "cryptopp/filters.h"
#
# delete_file "cryptopp/fips140.cpp"
#
# delete_file "cryptopp/fips140.h"
#
# delete_file "cryptopp/fltrimpl.h"
#
# delete_file "cryptopp/gzip.cpp"
#
# delete_file "cryptopp/gzip.h"
#
# delete_file "cryptopp/hex.cpp"
#
# delete_file "cryptopp/hex.h"
#
# delete_file "cryptopp/hmac.cpp"
#
# delete_file "cryptopp/hmac.h"
#
# delete_file "cryptopp/integer.cpp"
#
# delete_file "cryptopp/integer.h"
#
# delete_file "cryptopp/iterhash.cpp"
#
# delete_file "cryptopp/iterhash.h"
#
# delete_file "cryptopp/mdc.h"
#
# delete_file "cryptopp/misc.cpp"
#
# delete_file "cryptopp/misc.h"
#
# delete_file "cryptopp/modarith.h"
#
# delete_file "cryptopp/modes.cpp"
#
# delete_file "cryptopp/modes.h"
#
# delete_file "cryptopp/mqueue.cpp"
#
# delete_file "cryptopp/mqueue.h"
#
# delete_file "cryptopp/nbtheory.cpp"
#
# delete_file "cryptopp/nbtheory.h"
#
# delete_file "cryptopp/oaep.cpp"
#
# delete_file "cryptopp/oaep.h"
#
# delete_file "cryptopp/oids.h"
#
# delete_file "cryptopp/osrng.cpp"
#
# delete_file "cryptopp/osrng.h"
#
# delete_file "cryptopp/pch.cpp"
#
# delete_file "cryptopp/pch.h"
#
# delete_file "cryptopp/pkcspad.cpp"
#
# delete_file "cryptopp/pkcspad.h"
#
# delete_file "cryptopp/pssr.cpp"
#
# delete_file "cryptopp/pssr.h"
#
# delete_file "cryptopp/pubkey.cpp"
#
# delete_file "cryptopp/pubkey.h"
#
# delete_file "cryptopp/queue.cpp"
#
# delete_file "cryptopp/queue.h"
#
# delete_file "cryptopp/randpool.cpp"
#
# delete_file "cryptopp/randpool.h"
#
# delete_file "cryptopp/rng.cpp"
#
# delete_file "cryptopp/rng.h"
#
# delete_file "cryptopp/rsa.cpp"
#
# delete_file "cryptopp/rsa.h"
#
# delete_file "cryptopp/secblock.h"
#
# delete_file "cryptopp/seckey.h"
#
# delete_file "cryptopp/sha.cpp"
#
# delete_file "cryptopp/sha.h"
#
# delete_file "cryptopp/simple.h"
#
# delete_file "cryptopp/smartptr.h"
#
# delete_file "cryptopp/stdcpp.h"
#
# delete_file "cryptopp/strciphr.cpp"
#
# delete_file "cryptopp/strciphr.h"
#
# delete_file "cryptopp/trdlocal.cpp"
#
# delete_file "cryptopp/trdlocal.h"
#
# delete_file "cryptopp/words.h"
#
# delete_file "cryptopp/zdeflate.cpp"
#
# delete_file "cryptopp/zdeflate.h"
#
# delete_file "cryptopp/zinflate.cpp"
#
# delete_file "cryptopp/zinflate.h"
#
# add_file "botan/aes.cpp"
#
# add_file "botan/aes.h"
#
# add_file "botan/aes_tab.cpp"
#
# add_file "botan/algolist.cpp"
#
# add_file "botan/algolist.h"
#
# add_file "botan/allocate.cpp"
#
# add_file "botan/allocate.h"
#
# add_file "botan/arc4.cpp"
#
# add_file "botan/arc4.h"
#
# add_file "botan/asn1.h"
#
# add_file "botan/asn1_alg.cpp"
#
# add_file "botan/asn1_alt.cpp"
#
# add_file "botan/asn1_att.cpp"
#
# add_file "botan/asn1_dn.cpp"
#
# add_file "botan/asn1_ext.cpp"
#
# add_file "botan/asn1_ku.cpp"
#
# add_file "botan/asn1_obj.h"
#
# add_file "botan/asn1_oid.cpp"
#
# add_file "botan/asn1_oid.h"
#
# add_file "botan/asn1_str.cpp"
#
# add_file "botan/asn1_tm.cpp"
#
# add_file "botan/authors.txt"
#
# add_file "botan/barrett.cpp"
#
# add_file "botan/barrett.h"
#
# add_file "botan/base.cpp"
#
# add_file "botan/base.h"
#
# add_file "botan/base64.cpp"
#
# add_file "botan/base64.h"
#
# add_file "botan/base_eng.h"
#
# add_file "botan/basefilt.cpp"
#
# add_file "botan/basefilt.h"
#
# add_file "botan/ber_code.cpp"
#
# add_file "botan/ber_dec.cpp"
#
# add_file "botan/ber_dec.h"
#
# add_file "botan/big_base.cpp"
#
# add_file "botan/big_code.cpp"
#
# add_file "botan/big_io.cpp"
#
# add_file "botan/big_ops2.cpp"
#
# add_file "botan/big_ops3.cpp"
#
# add_file "botan/bigint.h"
#
# add_file "botan/blinding.cpp"
#
# add_file "botan/blinding.h"
#
# add_file "botan/botan.h"
#
# add_file "botan/buf_es.cpp"
#
# add_file "botan/buf_es.h"
#
# add_file "botan/buf_filt.cpp"
#
# add_file "botan/buf_filt.h"
#
# add_file "botan/cbc.cpp"
#
# add_file "botan/cbc.h"
#
# add_file "botan/certstor.h"
#
# add_file "botan/certstore.cpp"
#
# add_file "botan/cfb.cpp"
#
# add_file "botan/cfb.h"
#
# add_file "botan/charset.cpp"
#
# add_file "botan/conf.cpp"
#
# add_file "botan/conf.h"
#
# add_file "botan/config.h"
#
# add_file "botan/crc32.cpp"
#
# add_file "botan/crc32.h"
#
# add_file "botan/crl_ent.cpp"
#
# add_file "botan/crl_ent.h"
#
# add_file "botan/ctr.cpp"
#
# add_file "botan/ctr.h"
#
# add_file "botan/cts.cpp"
#
# add_file "botan/cts.h"
#
# add_file "botan/data_snk.cpp"
#
# add_file "botan/data_snk.h"
#
# add_file "botan/data_src.cpp"
#
# add_file "botan/data_src.h"
#
# add_file "botan/def_eng.cpp"
#
# add_file "botan/def_eng.h"
#
# add_file "botan/def_ops.cpp"
#
# add_file "botan/defalloc.cpp"
#
# add_file "botan/defalloc.h"
#
# add_file "botan/der_code.cpp"
#
# add_file "botan/der_enc.cpp"
#
# add_file "botan/der_enc.h"
#
# add_file "botan/dh.cpp"
#
# add_file "botan/dh.h"
#
# add_file "botan/divide.cpp"
#
# add_file "botan/dl_algo.cpp"
#
# add_file "botan/dl_algo.h"
#
# add_file "botan/dl_get.cpp"
#
# add_file "botan/dl_group.cpp"
#
# add_file "botan/dl_param.cpp"
#
# add_file "botan/dl_param.h"
#
# add_file "botan/dlies.cpp"
#
# add_file "botan/dlies.h"
#
# add_file "botan/eax.cpp"
#
# add_file "botan/eax.h"
#
# add_file "botan/ecb.cpp"
#
# add_file "botan/ecb.h"
#
# add_file "botan/eme.h"
#
# add_file "botan/eme1.cpp"
#
# add_file "botan/eme_pkcs.cpp"
#
# add_file "botan/emsa.h"
#
# add_file "botan/emsa1.cpp"
#
# add_file "botan/emsa2.cpp"
#
# add_file "botan/emsa3.cpp"
#
# add_file "botan/emsa4.cpp"
#
# add_file "botan/emsa_raw.cpp"
#
# add_file "botan/eng_base.cpp"
#
# add_file "botan/engine.cpp"
#
# add_file "botan/engine.h"
#
# add_file "botan/enums.h"
#
# add_file "botan/es_capi.cpp"
#
# add_file "botan/es_capi.h"
#
# add_file "botan/es_egd.cpp"
#
# add_file "botan/es_egd.h"
#
# add_file "botan/es_file.cpp"
#
# add_file "botan/es_file.h"
#
# add_file "botan/exceptn.cpp"
#
# add_file "botan/exceptn.h"
#
# add_file "botan/filter.cpp"
#
# add_file "botan/filter.h"
#
# add_file "botan/filters.cpp"
#
# add_file "botan/filters.h"
#
# add_file "botan/fips140.cpp"
#
# add_file "botan/fips140.h"
#
# add_file "botan/fips_rng.cpp"
#
# add_file "botan/fips_rng.h"
#
# add_file "botan/fused.cpp"
#
# add_file "botan/get_algo.cpp"
#
# add_file "botan/get_enc.cpp"
#
# add_file "botan/get_pbe.cpp"
#
# add_file "botan/gzip.cpp"
#
# add_file "botan/gzip.h"
#
# add_file "botan/hash_id.cpp"
#
# add_file "botan/hex.cpp"
#
# add_file "botan/hex.h"
#
# add_file "botan/hmac.cpp"
#
# add_file "botan/hmac.h"
#
# add_file "botan/if_algo.cpp"
#
# add_file "botan/if_algo.h"
#
# add_file "botan/inifile.cpp"
#
# add_file "botan/init.cpp"
#
# add_file "botan/init.h"
#
# add_file "botan/kdf.cpp"
#
# add_file "botan/kdf.h"
#
# add_file "botan/keypair.cpp"
#
# add_file "botan/keypair.h"
#
# add_file "botan/license.txt"
#
# add_file "botan/look_add.h"
#
# add_file "botan/look_pk.cpp"
#
# add_file "botan/look_pk.h"
#
# add_file "botan/lookup.cpp"
#
# add_file "botan/lookup.h"
#
# add_file "botan/make_prm.cpp"
#
# add_file "botan/mdx_hash.cpp"
#
# add_file "botan/mdx_hash.h"
#
# add_file "botan/mem_ops.h"
#
# add_file "botan/mem_pool.cpp"
#
# add_file "botan/mem_pool.h"
#
# add_file "botan/mgf1.cpp"
#
# add_file "botan/mgf1.h"
#
# add_file "botan/mlock.cpp"
#
# add_file "botan/mod_exp.cpp"
#
# add_file "botan/mod_exp.h"
#
# add_file "botan/mode_pad.cpp"
#
# add_file "botan/mode_pad.h"
#
# add_file "botan/modebase.cpp"
#
# add_file "botan/modebase.h"
#
# add_file "botan/mp_comba.cpp"
#
# add_file "botan/mp_core.cpp"
#
# add_file "botan/mp_core.h"
#
# add_file "botan/mp_fkmul.cpp"
#
# add_file "botan/mp_madd.h"
#
# add_file "botan/mp_misc.cpp"
#
# add_file "botan/mp_mul.cpp"
#
# add_file "botan/mp_shift.cpp"
#
# add_file "botan/mp_smul.cpp"
#
# add_file "botan/mp_types.h"
#
# add_file "botan/mutex.cpp"
#
# add_file "botan/mutex.h"
#
# add_file "botan/numthry.cpp"
#
# add_file "botan/numthry.h"
#
# add_file "botan/ofb.cpp"
#
# add_file "botan/ofb.h"
#
# add_file "botan/oids.cpp"
#
# add_file "botan/oids.h"
#
# add_file "botan/omac.h"
#
# add_file "botan/par_hash.h"
#
# add_file "botan/parse.cpp"
#
# add_file "botan/pbe.h"
#
# add_file "botan/pbe_pkcs.h"
#
# add_file "botan/pbes1.cpp"
#
# add_file "botan/pbes2.cpp"
#
# add_file "botan/pem.cpp"
#
# add_file "botan/pem.h"
#
# add_file "botan/pipe.cpp"
#
# add_file "botan/pipe.h"
#
# add_file "botan/pipe_io.cpp"
#
# add_file "botan/pipe_rw.cpp"
#
# add_file "botan/pk_algs.cpp"
#
# add_file "botan/pk_algs.h"
#
# add_file "botan/pk_core.cpp"
#
# add_file "botan/pk_core.h"
#
# add_file "botan/pk_filts.cpp"
#
# add_file "botan/pk_filts.h"
#
# add_file "botan/pk_keys.cpp"
#
# add_file "botan/pk_keys.h"
#
# add_file "botan/pk_ops.h"
#
# add_file "botan/pk_util.cpp"
#
# add_file "botan/pk_util.h"
#
# add_file "botan/pkcs10.cpp"
#
# add_file "botan/pkcs10.h"
#
# add_file "botan/pkcs8.cpp"
#
# add_file "botan/pkcs8.h"
#
# add_file "botan/policy.cpp"
#
# add_file "botan/pow_mod.cpp"
#
# add_file "botan/prf_ssl3.cpp"
#
# add_file "botan/prf_tls.cpp"
#
# add_file "botan/prf_x942.cpp"
#
# add_file "botan/primes.cpp"
#
# add_file "botan/pubkey.cpp"
#
# add_file "botan/pubkey.h"
#
# add_file "botan/randpool.cpp"
#
# add_file "botan/randpool.h"
#
# add_file "botan/readme.txt"
#
# add_file "botan/reducer.cpp"
#
# add_file "botan/reducer.h"
#
# add_file "botan/rng.cpp"
#
# add_file "botan/rng.h"
#
# add_file "botan/rsa.cpp"
#
# add_file "botan/rsa.h"
#
# add_file "botan/s2k.cpp"
#
# add_file "botan/s2k.h"
#
# add_file "botan/secalloc.h"
#
# add_file "botan/secmem.h"
#
# add_file "botan/secqueue.cpp"
#
# add_file "botan/secqueue.h"
#
# add_file "botan/sha160.cpp"
#
# add_file "botan/sha160.h"
#
# add_file "botan/socket.h"
#
# add_file "botan/symkey.cpp"
#
# add_file "botan/symkey.h"
#
# add_file "botan/thanks.txt"
#
# add_file "botan/timers.cpp"
#
# add_file "botan/timers.h"
#
# add_file "botan/types.h"
#
# add_file "botan/ui.cpp"
#
# add_file "botan/ui.h"
#
# add_file "botan/util.cpp"
#
# add_file "botan/util.h"
#
# add_file "botan/version.h"
#
# add_file "botan/x509_ca.cpp"
#
# add_file "botan/x509_ca.h"
#
# add_file "botan/x509_crl.cpp"
#
# add_file "botan/x509_crl.h"
#
# add_file "botan/x509_key.cpp"
#
# add_file "botan/x509_key.h"
#
# add_file "botan/x509_obj.cpp"
#
# add_file "botan/x509_obj.h"
#
# add_file "botan/x509cert.cpp"
#
# add_file "botan/x509cert.h"
#
# add_file "botan/x509find.cpp"
#
# add_file "botan/x509opt.cpp"
#
# add_file "botan/x509self.cpp"
#
# add_file "botan/x509self.h"
#
# add_file "botan/x509stor.cpp"
#
# add_file "botan/x509stor.h"
#
# add_file "botan/x917_rng.cpp"
#
# add_file "botan/x917_rng.h"
#
# add_file "botan/x919_mac.h"
#
# add_file "fsck.cc"
#
# add_file "fsck.hh"
#
# add_file "tests/t_fsck.at"
#
# patch "AUTHORS"
# from [97910e402895c8bbae9ad72fad2e58c9f8965508]
# to [48363e3c336bf23f49dcd9cc07f1461ec464695e]
#
# patch "ChangeLog"
# from [f1f875780ef7868880873d47ea2dfa97c297e745]
# to [0ecbb568866836a4805b4d61134f72c2b14c064b]
#
# patch "Makefile.am"
# from [b8121dcf5a8aecc511e437ae64e8bdfbba9e880f]
# to [1f3cb32fc6408feb79cd788d61e6864e97815160]
#
# patch "app_state.hh"
# from [9cfdb7a5976dc31edda11e99ee74046fdc318469]
# to [a239548498beda52f5c4c4488917ef2516cf2fd8]
#
# patch "botan/aes.cpp"
# from []
# to [8135e5fa9b189d5618f67ef27f63b4b16c683ca4]
#
# patch "botan/aes.h"
# from []
# to [244fd78437608f33f3e559d359f8be7abd66c931]
#
# patch "botan/aes_tab.cpp"
# from []
# to [78dcee057d2aa6cf37ca4331a2ce9d499e55ec96]
#
# patch "botan/algolist.cpp"
# from []
# to [e73a701e948afdcb723a29f89e88dbc793764d76]
#
# patch "botan/algolist.h"
# from []
# to [d77a0da036e55d55613326f528ed680d6977bab7]
#
# patch "botan/allocate.cpp"
# from []
# to [bf95f795b13f03947041d16bae44b936d914f30d]
#
# patch "botan/allocate.h"
# from []
# to [f0c3067f73c5cef489b345ab0751b17e5ef07624]
#
# patch "botan/arc4.cpp"
# from []
# to [7ea03bc134ef34a54773c90d4d21d71a9eaa2c18]
#
# patch "botan/arc4.h"
# from []
# to [20156d762201ad8d930a526dbce55fe08ad12996]
#
# patch "botan/asn1.h"
# from []
# to [0673bdaef5291a134595648a953b67dc5d37c442]
#
# patch "botan/asn1_alg.cpp"
# from []
# to [c41db36633e5d356e67540a39230dc95fe36524e]
#
# patch "botan/asn1_alt.cpp"
# from []
# to [003f48d6763514457a190ee5e8753c562223b43d]
#
# patch "botan/asn1_att.cpp"
# from []
# to [175de742c23d2ae762fbe5a4862ae0c131d20392]
#
# patch "botan/asn1_dn.cpp"
# from []
# to [66e58f586ee99e7e0b789250db79320cbae0de16]
#
# patch "botan/asn1_ext.cpp"
# from []
# to [adcded31305574a0c37a44987c27a9c212a81260]
#
# patch "botan/asn1_ku.cpp"
# from []
# to [80baaded8a2bfb051b1b01f74804d51cf9f1a013]
#
# patch "botan/asn1_obj.h"
# from []
# to [197606805a327d6c05f1b98d7181861fc8a6e7ba]
#
# patch "botan/asn1_oid.cpp"
# from []
# to [113696871e0ca992ff1e8c530b77605542b980c9]
#
# patch "botan/asn1_oid.h"
# from []
# to [ff465c835e6a44e73fdabfe10c849e146437a1f3]
#
# patch "botan/asn1_str.cpp"
# from []
# to [56901d327ef5963962c704d9a10a2587e56884a1]
#
# patch "botan/asn1_tm.cpp"
# from []
# to [4a339d34777a8c8f19da139ef0c41d11161dd44d]
#
# patch "botan/authors.txt"
# from []
# to [10798aaadca24ea4ab922825e9b796c5afde6062]
#
# patch "botan/barrett.cpp"
# from []
# to [5c0327d2445b9f3fc066f155674ad2235ca2b64e]
#
# patch "botan/barrett.h"
# from []
# to [8b76f90ed2cd705a5d3a5fb1e57ac9ea2f33b4a2]
#
# patch "botan/base.cpp"
# from []
# to [2d56945dad7cbca306fd1cdfa376297eb796a723]
#
# patch "botan/base.h"
# from []
# to [1fe7fb64e2f2d4cdf9373205ba255ec0296d19ab]
#
# patch "botan/base64.cpp"
# from []
# to [9fe31429403b86d01c267309c04fc90e1e606ff5]
#
# patch "botan/base64.h"
# from []
# to [6903d988dfe5ba1bbc2e82d7c03f3f8ed838ed81]
#
# patch "botan/base_eng.h"
# from []
# to [a1137490aeb1da477c7f827b4cb0c0a4d83be21e]
#
# patch "botan/basefilt.cpp"
# from []
# to [a87e31f5925cc6a1226c1f9e47f206ff7c279d8b]
#
# patch "botan/basefilt.h"
# from []
# to [35b6dbe10c295089d744ebbdef3f98c35b65bfd7]
#
# patch "botan/ber_code.cpp"
# from []
# to [45e75d9d3f7d32d0daf0f692da91cb8c1d4fc326]
#
# patch "botan/ber_dec.cpp"
# from []
# to [b42fae01777b272d26888808e10b95d195801700]
#
# patch "botan/ber_dec.h"
# from []
# to [f0b877d1cfa5d94ec9c0793fc25ac03f24840de8]
#
# patch "botan/big_base.cpp"
# from []
# to [018118b988d580e6ffb34e98d4ccafcd0be4d070]
#
# patch "botan/big_code.cpp"
# from []
# to [50c850ceff3facc002653a9b8d0a1dacfea8c741]
#
# patch "botan/big_io.cpp"
# from []
# to [6a91448edae6ea766cc3159b6ef011acaeabc9ae]
#
# patch "botan/big_ops2.cpp"
# from []
# to [6568718ebd4e38e1e238421efa1be22d37b05db2]
#
# patch "botan/big_ops3.cpp"
# from []
# to [ed3b596d0ac13f3ba549ad1e2849e9966cdf0fea]
#
# patch "botan/bigint.h"
# from []
# to [39ccfdeac610512103d16674c299939e1e693d5a]
#
# patch "botan/blinding.cpp"
# from []
# to [69a1b620f677a22b7c6a55039e964678c3bc2d0a]
#
# patch "botan/blinding.h"
# from []
# to [55ffef0dd36306cf00d35f6f261040c659e2edf7]
#
# patch "botan/botan.h"
# from []
# to [69d369bbb161dadf9db1e224ce7a5b01b97298a4]
#
# patch "botan/buf_es.cpp"
# from []
# to [17ffcafc5f0091775f5ff82361b0e8d211557f0d]
#
# patch "botan/buf_es.h"
# from []
# to [dadb51dc51778193c22232774300054aa6771ff8]
#
# patch "botan/buf_filt.cpp"
# from []
# to [258d2b85a47bc42faf4e50849f125686fe83b2ac]
#
# patch "botan/buf_filt.h"
# from []
# to [0e7534629e985eb81b751339e8c6244007f7c65e]
#
# patch "botan/cbc.cpp"
# from []
# to [ae938d9c8632da302d82fba0a8efab4e609c3885]
#
# patch "botan/cbc.h"
# from []
# to [f741d411a9bd09ee108836e0bf02962ae55cd241]
#
# patch "botan/certstor.h"
# from []
# to [7f5bbeb13d876da9b0905f252110e70250f25289]
#
# patch "botan/certstore.cpp"
# from []
# to [12cddfbff8d0ebf1ddf323198f2381992b527b80]
#
# patch "botan/cfb.cpp"
# from []
# to [e33d8760634d2b5e10329e0c34b5cebe72848904]
#
# patch "botan/cfb.h"
# from []
# to [9b9f3a3ce4094e6f968d12cf0d41bd579219b900]
#
# patch "botan/charset.cpp"
# from []
# to [fb06b37e3cc3dd2f01c30901397d6417bde0a91d]
#
# patch "botan/conf.cpp"
# from []
# to [643f2ea2ddb23e57d0dc3b190c2c9931d4a1fc9c]
#
# patch "botan/conf.h"
# from []
# to [0b602b8e2b927d74ec28d6d87a584aa3e31195ef]
#
# patch "botan/config.h"
# from []
# to [985b707216c13e7cb2684c869166c4dc4e007a45]
#
# patch "botan/crc32.cpp"
# from []
# to [53cbb50cd0477189162fd30c87167042dceeac44]
#
# patch "botan/crc32.h"
# from []
# to [85099a7b83816dc20cb891c999527074187f1ac1]
#
# patch "botan/crl_ent.cpp"
# from []
# to [54b739d37d71f1abcddeb944a58cbee0fa632a84]
#
# patch "botan/crl_ent.h"
# from []
# to [0539e983d16efda8ee76c3fa87b285e774f0b391]
#
# patch "botan/ctr.cpp"
# from []
# to [31a49ab9c99c151565fa8f7298586f342baf7afe]
#
# patch "botan/ctr.h"
# from []
# to [e9b82176a17a126b51e9baab8be858f80c6ca3f6]
#
# patch "botan/cts.cpp"
# from []
# to [0af0fd46dc6c5bb65af0189ef9d5e03bf593df39]
#
# patch "botan/cts.h"
# from []
# to [4c9a0ee6740a624bbf39533f44f24f37c7f0a302]
#
# patch "botan/data_snk.cpp"
# from []
# to [df4b2c5670fe2467986a49ff6a40e8fe836e9ae7]
#
# patch "botan/data_snk.h"
# from []
# to [cb2454f0182f6416729cb5a75279b6a84812be16]
#
# patch "botan/data_src.cpp"
# from []
# to [dfb3403ae7827354d08fd1eb812b0d0441033471]
#
# patch "botan/data_src.h"
# from []
# to [0e7c72b15f861375f65d44b837e24809fb5246cb]
#
# patch "botan/def_eng.cpp"
# from []
# to [036ea54c991b78627bbb43cc80e731f9c8ee2ee6]
#
# patch "botan/def_eng.h"
# from []
# to [a4906d5dd169dc71c5f35111ebe9e7161bebfa16]
#
# patch "botan/def_ops.cpp"
# from []
# to [ca3801883a7902957cded598081a5761aaa10e79]
#
# patch "botan/defalloc.cpp"
# from []
# to [e330d915e67e2b1ff2ea1e01b6f7dc21c752f511]
#
# patch "botan/defalloc.h"
# from []
# to [beda55c363ee2fd4ed5b50d654372a0dd40bf222]
#
# patch "botan/der_code.cpp"
# from []
# to [906a1062209a1f6ecb16ee64c69aa2f653ca9c3e]
#
# patch "botan/der_enc.cpp"
# from []
# to [ac9170917e29853420f5df76943c00eb6df150ea]
#
# patch "botan/der_enc.h"
# from []
# to [a2ddf690cbe1290e24a38b8cc24232b25e48e6a3]
#
# patch "botan/dh.cpp"
# from []
# to [7410d18e0689cf0b88fcd629377532c953fb9372]
#
# patch "botan/dh.h"
# from []
# to [82659d1abc7e35ddb1462a3ff64d26066a17c8a5]
#
# patch "botan/divide.cpp"
# from []
# to [272b0e327dd778b55e36e54e41a6552e1c0c56dd]
#
# patch "botan/dl_algo.cpp"
# from []
# to [06b5b14b241a3dcf402ac8b86446e58dcd762560]
#
# patch "botan/dl_algo.h"
# from []
# to [96e5c93c3d952b29f368ba26ca216bd7781e6675]
#
# patch "botan/dl_get.cpp"
# from []
# to [b01e24eaba2bf8d06c6566f0cb76f8be72c40c77]
#
# patch "botan/dl_group.cpp"
# from []
# to [eb98c6c708e299d70dae4ad614828345ce036a74]
#
# patch "botan/dl_param.cpp"
# from []
# to [2a49018926bb9e393705a2b7c9202af9342fae15]
#
# patch "botan/dl_param.h"
# from []
# to [245ee588426a4fbee58bf4834ae9c373ffcacf32]
#
# patch "botan/dlies.cpp"
# from []
# to [d803e4b7eb0b31f497aac7b06223e7aa28ede268]
#
# patch "botan/dlies.h"
# from []
# to [8cabc3fab297e1d9ffecfd0fec371a3546dbf4f8]
#
# patch "botan/eax.cpp"
# from []
# to [65ab636998b9d9b96d5e90209dfcbc97c0d687a7]
#
# patch "botan/eax.h"
# from []
# to [d1b07e0ba2e6ce2de493b5cf387fb66464f4688a]
#
# patch "botan/ecb.cpp"
# from []
# to [a75694b9df00cbc3ee19e07f95dd42fb53e4598f]
#
# patch "botan/ecb.h"
# from []
# to [737e78fd8af5c8f26487aa2e6e94deef2aedbdcd]
#
# patch "botan/eme.h"
# from []
# to [51b86440d4403db028c50548757795fe49a2192e]
#
# patch "botan/eme1.cpp"
# from []
# to [3c08f892e78d4b3093a3e35cb7351f2b47766e47]
#
# patch "botan/eme_pkcs.cpp"
# from []
# to [dcc6a4ae10f3bc1d50d284cc4285fdf84bc7cad3]
#
# patch "botan/emsa.h"
# from []
# to [5e8b0377da8b2f6d7ce03df9d189498dccce53a2]
#
# patch "botan/emsa1.cpp"
# from []
# to [cdc6b0242927da271f6488eb39502eb36eae3fa4]
#
# patch "botan/emsa2.cpp"
# from []
# to [fae5e6b530c838fccebeac5b6d419efafe0597f1]
#
# patch "botan/emsa3.cpp"
# from []
# to [747190a9e3a8802dd7aefb60b87e6935903fe844]
#
# patch "botan/emsa4.cpp"
# from []
# to [fb48cbf028544c50bdbb6c4f3df82846a576d31f]
#
# patch "botan/emsa_raw.cpp"
# from []
# to [4856d228aa6a7ea5367a91559eae933c5ca3f281]
#
# patch "botan/eng_base.cpp"
# from []
# to [c21bf7a9a3b1e3da0f91db105a4d02d10d574e0b]
#
# patch "botan/engine.cpp"
# from []
# to [516153822616553bed646431168c348713de1e93]
#
# patch "botan/engine.h"
# from []
# to [547b4edca4ac9df32d5121c0b0b5e58d5fbba518]
#
# patch "botan/enums.h"
# from []
# to [8d70f172c1b79d03cbc0d4126d1ae56555207336]
#
# patch "botan/es_capi.cpp"
# from []
# to [e42afd863ee6de903cbb45029d513d15abd05d1c]
#
# patch "botan/es_capi.h"
# from []
# to [9a7ef5ab05ace7647772a20baa3fb803f9d97249]
#
# patch "botan/es_egd.cpp"
# from []
# to [df8fdcbaeb086449cc8387bb62760e7c20178c5c]
#
# patch "botan/es_egd.h"
# from []
# to [5897aea48effee9ea35a1c21a681466db5dbef7c]
#
# patch "botan/es_file.cpp"
# from []
# to [b9c1a6b289f2e79494d77df5fae3f4242d75c1d3]
#
# patch "botan/es_file.h"
# from []
# to [83027d4b6bc201ef272309df3697e43bc846a381]
#
# patch "botan/exceptn.cpp"
# from []
# to [8f5ca9fc666267df72fccd96fc851fdcb7b123f1]
#
# patch "botan/exceptn.h"
# from []
# to [48d813b9a3ca6c896e8cd873cf2491ada522973c]
#
# patch "botan/filter.cpp"
# from []
# to [3506db191bc2d7eaaa67e4e1666add6c3d23a19c]
#
# patch "botan/filter.h"
# from []
# to [d60e7a9d3900ba32b4e2856df6b441007d010138]
#
# patch "botan/filters.cpp"
# from []
# to [ad14e0a2e1639d623b45a8ad63b812945297987a]
#
# patch "botan/filters.h"
# from []
# to [67ed0a521e02165d787c81efee085863b624105e]
#
# patch "botan/fips140.cpp"
# from []
# to [e6fc1426744e58b90917f77c2863627b6bfe3e95]
#
# patch "botan/fips140.h"
# from []
# to [f887fa80632ca747a142f383f8c0a9f4ce6b3f75]
#
# patch "botan/fips_rng.cpp"
# from []
# to [305b3d093136ae275b7a5c667e3c96d860fe5efc]
#
# patch "botan/fips_rng.h"
# from []
# to [45a4189cb973451fbc27a310e9666fc66eec983d]
#
# patch "botan/fused.cpp"
# from []
# to [6fb7c8ea89ea577cf638ca0829f3161261470d8c]
#
# patch "botan/get_algo.cpp"
# from []
# to [fa25847dacdd675514855ff915204e6d9ead8dfa]
#
# patch "botan/get_enc.cpp"
# from []
# to [b0e587e9e8289d9b9ad153491d81f2c81c14a3ef]
#
# patch "botan/get_pbe.cpp"
# from []
# to [cba554a352ad0c15f4da112f89e6069a723d5de2]
#
# patch "botan/gzip.cpp"
# from []
# to [fb3d19b654bb5d8183961396f8f65ee3e3c35134]
#
# patch "botan/gzip.h"
# from []
# to [01488d72ebff8a76915a32fb7bcdbb7af91eb101]
#
# patch "botan/hash_id.cpp"
# from []
# to [41540ab3948c994cfc3f59d5a0a42075779a33ff]
#
# patch "botan/hex.cpp"
# from []
# to [98bbd41c4609c6b02b7af53f09b7e690c4c967be]
#
# patch "botan/hex.h"
# from []
# to [2cfc0e0f5f5a7e368f30225714a3254a362108ed]
#
# patch "botan/hmac.cpp"
# from []
# to [de1313f2eb1b0aa55b39a7b2990682c78f9c9662]
#
# patch "botan/hmac.h"
# from []
# to [2e2149c3036fe4f61e4959787e17d000ec01472d]
#
# patch "botan/if_algo.cpp"
# from []
# to [8ba8e73da35f455f2d33c5364bb8ec50a335e1a9]
#
# patch "botan/if_algo.h"
# from []
# to [4d4b55bbc30d46ede166f16c49a8205772dedcfc]
#
# patch "botan/inifile.cpp"
# from []
# to [93c083a2c23c7fa9594cbfa8e753bba843abd805]
#
# patch "botan/init.cpp"
# from []
# to [fe867ad3ec390b9dfcf9d03f9f3a92a2844fd1bf]
#
# patch "botan/init.h"
# from []
# to [ef58b0990e2ff7abf148e2983417b4696c69872f]
#
# patch "botan/kdf.cpp"
# from []
# to [7a1872d488218b86b88751f7925349d1771483dd]
#
# patch "botan/kdf.h"
# from []
# to [ce2bf9dca868ce3648fbd60f0c89dd41dda8eccb]
#
# patch "botan/keypair.cpp"
# from []
# to [c2ba6d27c702e602ebc5c19401b06a63acd1e1ad]
#
# patch "botan/keypair.h"
# from []
# to [8f3a5a2a87301f0597153df0255d190484036790]
#
# patch "botan/license.txt"
# from []
# to [cf2701bb0aafa9d7d4f52f8f044ad6879cdc862e]
#
# patch "botan/look_add.h"
# from []
# to [ea5876a5bbbe2115a1b85a26f89a91a9c91f4be9]
#
# patch "botan/look_pk.cpp"
# from []
# to [46272ca274e843f3ffbb455a781cc4206cca2551]
#
# patch "botan/look_pk.h"
# from []
# to [f80d5fba4ca6ae87969224851151d9dd56c68d9c]
#
# patch "botan/lookup.cpp"
# from []
# to [b7017306350e0d5cec1bf29fa7aae5fc1476aa14]
#
# patch "botan/lookup.h"
# from []
# to [fc8a5e763db679996fc7bbe67259b70b3fb65c72]
#
# patch "botan/make_prm.cpp"
# from []
# to [38f0b945a62ef720897c2d0641ef1c30b22850cf]
#
# patch "botan/mdx_hash.cpp"
# from []
# to [60980f2b531f0ccc6d9f817a5df85dd30f36724e]
#
# patch "botan/mdx_hash.h"
# from []
# to [cf686de334af142d0a4bead6ffd6fdb6f7b61eb8]
#
# patch "botan/mem_ops.h"
# from []
# to [f5603c43d5c102fa371bdf63e232e6006dc3cecc]
#
# patch "botan/mem_pool.cpp"
# from []
# to [943ebcf01580253115bc2f3e1088791371a55c4d]
#
# patch "botan/mem_pool.h"
# from []
# to [71b41bee14798c742c2a6977bd00764f6b31f160]
#
# patch "botan/mgf1.cpp"
# from []
# to [fdb622c050a16e39088b0a2b5d29e03b732601ce]
#
# patch "botan/mgf1.h"
# from []
# to [128d53c1a67b591b96f6c4a5044da775cc4eb416]
#
# patch "botan/mlock.cpp"
# from []
# to [3010066a99142f353ecdc582c1a18d5bac09dd3d]
#
# patch "botan/mod_exp.cpp"
# from []
# to [1149f9d2c943c0956b769ac266b0d29e9c98f188]
#
# patch "botan/mod_exp.h"
# from []
# to [18c6c30f361b8693f2f4ee33e2b2a597972564fb]
#
# patch "botan/mode_pad.cpp"
# from []
# to [fbcf81f6972834b9a58fba4bbc462feaac03d290]
#
# patch "botan/mode_pad.h"
# from []
# to [bb98613742d08ce0d62663431409f83a2e94ad85]
#
# patch "botan/modebase.cpp"
# from []
# to [441199d5d032597f222e399c80da05c0466e770d]
#
# patch "botan/modebase.h"
# from []
# to [34f3886367213a4a120d1b2bab370ecc9991b203]
#
# patch "botan/mp_comba.cpp"
# from []
# to [cd4bd559010fca3e8f6decfd45ce6801771bc2cd]
#
# patch "botan/mp_core.cpp"
# from []
# to [422451560f3daa8f8cd665dffcfd63d40edda6f3]
#
# patch "botan/mp_core.h"
# from []
# to [1792183f9a720f9fd33838b76eda4ae1515b2f6a]
#
# patch "botan/mp_fkmul.cpp"
# from []
# to [9b24a4c785d41a51a4e6326c8c3f6453c1a34fd8]
#
# patch "botan/mp_madd.h"
# from []
# to [91d7732e96d3a7e6da267164c1984091fb567180]
#
# patch "botan/mp_misc.cpp"
# from []
# to [22d22eba1424da339cf5b710ea421035819a12ca]
#
# patch "botan/mp_mul.cpp"
# from []
# to [6f4b0d753bc894dc0b4a0795645ae560cfc07132]
#
# patch "botan/mp_shift.cpp"
# from []
# to [406513cc6422b5f25d4fd42240dcc6c618f7be64]
#
# patch "botan/mp_smul.cpp"
# from []
# to [ed5ffd208b8b7fa3dc8487fce5f16290a1ecd6f7]
#
# patch "botan/mp_types.h"
# from []
# to [627e3b785902f58ca71f7cb2321b36f0901b090b]
#
# patch "botan/mutex.cpp"
# from []
# to [7ac3c75bf20f6148ac35a8ca8725252dceaf76c1]
#
# patch "botan/mutex.h"
# from []
# to [edfbdfa03538e369e29e72532faa2f2e6eacc55e]
#
# patch "botan/numthry.cpp"
# from []
# to [565ae305cf2ac5ca822796a7527b329403b9204b]
#
# patch "botan/numthry.h"
# from []
# to [17458fbabc1602802e514147f7bcebee4414647e]
#
# patch "botan/ofb.cpp"
# from []
# to [80169c91ae291656e6c4eeec82c3a399b18f09f2]
#
# patch "botan/ofb.h"
# from []
# to [8120445492ab6d9449b761d5005c1de676dffce6]
#
# patch "botan/oids.cpp"
# from []
# to [1a0baccbffdd0f231320d6e554f58a177c18fce8]
#
# patch "botan/oids.h"
# from []
# to [4875b136924adcd55cbb4d8ba4c0ddc784dc3d43]
#
# patch "botan/omac.h"
# from []
# to [999a56ae665d31f7f616b5f6e014cb76d1526f58]
#
# patch "botan/par_hash.h"
# from []
# to [d8401812eec5c2b7e4b60f77f8493a163d178fa5]
#
# patch "botan/parse.cpp"
# from []
# to [a3def2f20cd11724087c05da4dcc46a4a383b142]
#
# patch "botan/pbe.h"
# from []
# to [4993ed6aa4c679740ac5a3003664c720443d44b4]
#
# patch "botan/pbe_pkcs.h"
# from []
# to [47e6d844b94e58ac325f6de110c6565398a3c917]
#
# patch "botan/pbes1.cpp"
# from []
# to [4f8d05c302729c7821e4b40a3076c3fc08c9f26b]
#
# patch "botan/pbes2.cpp"
# from []
# to [68bfe2135c3a4fe2ca4eeb5c83ed61e2368f8ccf]
#
# patch "botan/pem.cpp"
# from []
# to [b72ae3b0a1a422b736f21fc5605d3b4d1591c135]
#
# patch "botan/pem.h"
# from []
# to [bc1422cbd42a4028333a569b150f1ceda195fec4]
#
# patch "botan/pipe.cpp"
# from []
# to [d9c837aa093bfb230cf5c9f9b3978b5bd5bdd0c7]
#
# patch "botan/pipe.h"
# from []
# to [04cb9c849abc6a94e396870f27330ed23b262d31]
#
# patch "botan/pipe_io.cpp"
# from []
# to [974d2e5f91be38025de9db7f01c4fe535facc620]
#
# patch "botan/pipe_rw.cpp"
# from []
# to [59f85107337e39b3418882d48fd2b387405d3d95]
#
# patch "botan/pk_algs.cpp"
# from []
# to [0cf7a8301f09c75bdb93f055fad2f0cd0478e71f]
#
# patch "botan/pk_algs.h"
# from []
# to [68c25007661b1503ea7431ab871bf4a674844c6d]
#
# patch "botan/pk_core.cpp"
# from []
# to [4c3ad70aabe63a760c189fdbfbcad946f73d9d95]
#
# patch "botan/pk_core.h"
# from []
# to [b37fa3da4f807b7f45740b6110d8b4c28cea5fe1]
#
# patch "botan/pk_filts.cpp"
# from []
# to [63d8141f6e0dd0fff341b64327846e33d35c6c00]
#
# patch "botan/pk_filts.h"
# from []
# to [c33f0ad0101684ecdc19fff8126ede12124fafd4]
#
# patch "botan/pk_keys.cpp"
# from []
# to [bb3f3b5fa9ffa98e4949d7f27e1af9d8efbb14cb]
#
# patch "botan/pk_keys.h"
# from []
# to [fa50b78eeda21fc33442d229575c3106b74c5dff]
#
# patch "botan/pk_ops.h"
# from []
# to [d7f762f8ec5b0e52da91ae8864a063bbf94d66d1]
#
# patch "botan/pk_util.cpp"
# from []
# to [2c208fd991b109f7621bc7b99611aae97ae15822]
#
# patch "botan/pk_util.h"
# from []
# to [874530cc97e7f4ca7edc1f540048e6d774a1aee1]
#
# patch "botan/pkcs10.cpp"
# from []
# to [9dd6579c59ce03c6cbd1b11ea2a2db606e9b2206]
#
# patch "botan/pkcs10.h"
# from []
# to [04ea5a06ff5f73eff2964e9e50353caff8bf9a7f]
#
# patch "botan/pkcs8.cpp"
# from []
# to [7ddd271b73aac637d42007f2104781d9f64b924d]
#
# patch "botan/pkcs8.h"
# from []
# to [aa88456c2b2961b74d006b240164b7dbf576b652]
#
# patch "botan/policy.cpp"
# from []
# to [f61a5ad0ee7ddd9ee0fc7e64ae166021f7816051]
#
# patch "botan/pow_mod.cpp"
# from []
# to [59ae9d116647e81fbb6de8f911823034015f16c6]
#
# patch "botan/prf_ssl3.cpp"
# from []
# to [afda5d835c6ef84a6f4691ba6c66b70f4fef3d36]
#
# patch "botan/prf_tls.cpp"
# from []
# to [b28c5a553db6e964d294f0864a767b69d02c6e75]
#
# patch "botan/prf_x942.cpp"
# from []
# to [7b218685f195886dae2ee986c2f55bfdc03fc899]
#
# patch "botan/primes.cpp"
# from []
# to [8c5513f27be0fdb55ffbe22bb3429a4cd582ae4e]
#
# patch "botan/pubkey.cpp"
# from []
# to [dbaf12a2c0e0be641f8d85e9af2c049eb25933cc]
#
# patch "botan/pubkey.h"
# from []
# to [91491173f8aa0f79394f66791b2f73e1db044e0c]
#
# patch "botan/randpool.cpp"
# from []
# to [77d0870820eb8ff049b1c5510f22944d31572331]
#
# patch "botan/randpool.h"
# from []
# to [e485e25942f8e026a1b4c5d309eafba4e58143ae]
#
# patch "botan/readme.txt"
# from []
# to [e6d3de9d3e899187f3701bdc2744619db440b22e]
#
# patch "botan/reducer.cpp"
# from []
# to [ac3ca2c65a244603aa74a72375350d2666605658]
#
# patch "botan/reducer.h"
# from []
# to [782a5a9da892b8ef50c0acd50a7e2f35dc56200b]
#
# patch "botan/rng.cpp"
# from []
# to [61a3c6a4ce80ac0b893ac682e6f3adc26f8468b6]
#
# patch "botan/rng.h"
# from []
# to [ca1a9f356c4e746ef2597ac401325ac746a86221]
#
# patch "botan/rsa.cpp"
# from []
# to [53430bdf7157f135af0e74098840e8e75b75a479]
#
# patch "botan/rsa.h"
# from []
# to [2e6a072ffe722bb6bd472f6b447d20501bcc3cee]
#
# patch "botan/s2k.cpp"
# from []
# to [c9392e2e13421cdbfef0ccab45dc59e9f155c013]
#
# patch "botan/s2k.h"
# from []
# to [68a6ccdce0fede7384124e12fcb442898492a9bf]
#
# patch "botan/secalloc.h"
# from []
# to [b310dff174a674d820a6b76b30e7666f05ff8b64]
#
# patch "botan/secmem.h"
# from []
# to [29935c5b1dc179460e8286f21746322db2ff05bb]
#
# patch "botan/secqueue.cpp"
# from []
# to [5037fd475d246948677e44e2236e800b7c115f92]
#
# patch "botan/secqueue.h"
# from []
# to [106ee36176db91e6152a5b5276980b44aa09b0f1]
#
# patch "botan/sha160.cpp"
# from []
# to [26bf25fdedd24cff075222e44da9f6a98af846c2]
#
# patch "botan/sha160.h"
# from []
# to [e6c428fdf6c80f8c58de85a857e31e27fed82b2d]
#
# patch "botan/socket.h"
# from []
# to [e8849706085cdea44dc8ff3009a2a966965b4b56]
#
# patch "botan/symkey.cpp"
# from []
# to [074224d0aa4368c8291071f47dffe45cb3558206]
#
# patch "botan/symkey.h"
# from []
# to [f33355c7fd13e785fc6f94b21fc0534a4f15b77d]
#
# patch "botan/thanks.txt"
# from []
# to [9971c734b99b04a2b95379e8c1b801d6857d5967]
#
# patch "botan/timers.cpp"
# from []
# to [feff979b666a34d14788555eedf270b7060e592f]
#
# patch "botan/timers.h"
# from []
# to [29ede2e248a818cc5b17b7688a94221259ce38a9]
#
# patch "botan/types.h"
# from []
# to [93238b7a0ee25051c6ddc0ee1a61fcd734978899]
#
# patch "botan/ui.cpp"
# from []
# to [54e27258cd81e065af6b57f9a0acf171ff760760]
#
# patch "botan/ui.h"
# from []
# to [9455f4dce960f0f2b2a05e3e92cc9ba136d31e6e]
#
# patch "botan/util.cpp"
# from []
# to [6a85e690a9d0de8c77fd7c9006a3fcabc5f3c097]
#
# patch "botan/util.h"
# from []
# to [c98b09d26267303db39c6930316ec4bfaa577af2]
#
# patch "botan/version.h"
# from []
# to [0384ce49a78d1f67268676f1b3544a8003fbe283]
#
# patch "botan/x509_ca.cpp"
# from []
# to [8b3275ed1718d77b664a4dac69f9e8df5f25a07e]
#
# patch "botan/x509_ca.h"
# from []
# to [cacda562e7cb5db8e3bc6bb03cb60a30850f9711]
#
# patch "botan/x509_crl.cpp"
# from []
# to [c9aa820103b53c0d8a55aa949fdf8a02e1e8077f]
#
# patch "botan/x509_crl.h"
# from []
# to [17dff45daf11dde3f216958689b06845ed172a4b]
#
# patch "botan/x509_key.cpp"
# from []
# to [f47cf89e09ff326de8136ce3e03f7114eaad2088]
#
# patch "botan/x509_key.h"
# from []
# to [3acac47396c685c507c8a049f0a583dbed5d0a74]
#
# patch "botan/x509_obj.cpp"
# from []
# to [18ea0c22c805e2dc52d92b86a788c1430ffca24d]
#
# patch "botan/x509_obj.h"
# from []
# to [990f87e55fc16c14e143ba9061180486240646ba]
#
# patch "botan/x509cert.cpp"
# from []
# to [2754555bc83253250a1168e7067d288dac9c1905]
#
# patch "botan/x509cert.h"
# from []
# to [3799c01700dffeef0a6d241c656e67f3a4af8dd4]
#
# patch "botan/x509find.cpp"
# from []
# to [fa00cdf310b5642aa8896c693b92db77a66defb9]
#
# patch "botan/x509opt.cpp"
# from []
# to [fba4119a768cdc2f109f87be143a6fe45fbfc914]
#
# patch "botan/x509self.cpp"
# from []
# to [41060ba068e0afb39c729c5b43955d0f8a0bcef9]
#
# patch "botan/x509self.h"
# from []
# to [395ce349b2550df1a44e5a4eb6cf3e98e35a7125]
#
# patch "botan/x509stor.cpp"
# from []
# to [1d4f8428283468c42c16e6dcccd4cd7fc87c9533]
#
# patch "botan/x509stor.h"
# from []
# to [317580b669aabc7ea56d0fa1e68e7d51a0d6e58c]
#
# patch "botan/x917_rng.cpp"
# from []
# to [1025931766017ebe0ad8ebcd50d8a4649f358b14]
#
# patch "botan/x917_rng.h"
# from []
# to [cb25b08a536563d9e5341db6f181530bd79a867a]
#
# patch "botan/x919_mac.h"
# from []
# to [1705fe887e86ebfdade77bbb4486878f72cbfbc5]
#
# patch "cert.cc"
# from [451241f5ac6f41b70211dc92aa500e36688579af]
# to [f5dc319c1553610d1246dd94f7397669ab09a77f]
#
# patch "configure.ac"
# from [43ad5babd29ff6f85cb76f7bfbf16b1c0a9e19e9]
# to [a6c4321f067e087a721e998c6d701347096aa7be]
#
# patch "contrib/monotone-notify.pl"
# from [7b80bc10043bcd080e0a98742cd49a3c8aa7b8df]
# to [7c66c1b5776bdb8b7a325956ded8502434897906]
#
# patch "database_check.cc"
# from [1098ea2b6e2a53449fd89dd6ae815f42d4206cd4]
# to [20895ed494e278620fc03bb7f74655b331e25bef]
#
# patch "file_io.cc"
# from [9507250333f6a8542fdfbe4268786ee068e22c16]
# to [8beb989df6d6f3318e33f95cd40101b979b68cb7]
#
# patch "fsck.cc"
# from []
# to [a5c158c637d5f51d1f57db0f5908624ecdb7ec08]
#
# patch "fsck.hh"
# from []
# to [68dfc0e92acf9cba9346c0eb67e32a929b930cea]
#
# patch "keys.cc"
# from [a4ccef56d24ee9cda7a009144f5476e3cdcb07d7]
# to [ba6a3b2471b851f7114600037312e37a86d73e83]
#
# patch "keys.hh"
# from [f10aaea8dbaf4005a55ec388f278d1bb81d664af]
# to [f501788cdc8894ab73f0023b23f92da8adb549ff]
#
# patch "main.cc"
# from [f5427f1b85d11caddbc2732f049250698bbdb6c3]
# to [1eff4db78605adee1ef7261417bde7afca407fa6]
#
# patch "merkle_tree.cc"
# from [b0a8cacb8d29ab4a8500c0f2cb34509783dca4c8]
# to [b470776b5a443ef073ff29a09ecdc609a23f0213]
#
# patch "mkstemp.cc"
# from [b49b3d62bed1cf26fe36bfcb36c842d70b755081]
# to [66cd847d4d881d1477892e19b819ca31024c43af]
#
# patch "monotone.cc"
# from [2419f27fdb3cba77c658c0f4eac4d0b5026e1884]
# to [65759f227bc57b92883f785551586f30039721cc]
#
# patch "netcmd.cc"
# from [570582d069ed089439cc7c46c4b1f90098d1045b]
# to [eb1a1b795a1a27dfff66d261478fd177796c6a51]
#
# patch "netsync.cc"
# from [04871c9d35e04f3f8ed0d10c6311c643c5f79df1]
# to [8790de4edea2bc9f5cda7d35554b5cebc1de065d]
#
# patch "revision.cc"
# from [588fd8a7bcde43a46f0bde1dd1d13e9e77cf25a1]
# to [c2d18cfa9db45131465b2d6a7e569c7c96532528]
#
# patch "schema_migration.cc"
# from [f3ff31fcbb6673a7a7847cd669e33eee20d32eae]
# to [51b241845c56b3cdb883963c53c4d82778dc9249]
#
# patch "tests/t_database_check.at"
# from [11b64267ef57980019f461ea1acca582d2cb989e]
# to [d348fd238d40a27205b242983edb1c13a017b82d]
#
# patch "tests/t_fsck.at"
# from []
# to [dd124d1ba81e72cbef7ce9735035c55b2b18a714]
#
# patch "tests/t_netsync_unrelated.at"
# from [61ec68db6f63d56d79e65780048c527e27e7c737]
# to [126a8b13399e2b0adfe1dc8fcebdb82aecc7d138]
#
# patch "transforms.cc"
# from [92b2495dcc4067794d6b3cd58c0f30f865a08a28]
# to [012bff62d5ad1dc8bba4123b2b366b02de6fbb75]
#
# patch "transforms.hh"
# from [bb010dc3df990b38ddb900d652d55cc13b4ff423]
# to [0886fc260e3989244f914da25c26e8b6ffc8342f]
#
# patch "unit_tests.cc"
# from [230b4227d08bed323a2625f593073427bca9fe9b]
# to [b8ad9bacce247d9844c377c822e6c16ccedf9d14]
#
# patch "unix/inodeprint.cc"
# from [ba3f21edca6b9c5461bdc844d9c519b70fc4ad1a]
# to [e7b2c3152595841807069e9d335f37536df6de3d]
#
# patch "work.hh"
# from [1e96bd36f787031f743d29cc033bfd1cc1a9c8e2]
# to [b379ccc674d25414e6e890a00688c716c51a85fe]
#
--- AUTHORS
+++ AUTHORS
@@ -63,15 +63,6 @@
http://www.sqlite.org.
-Wei Dai
wrote many of the files in cryptopp/*,
-though possibly not all of them; the files themselves were assigned to
-the public domain, and Wei Dai retains copyright only over the
-collective work of the crypto++ library from whence they were
-copied. I make no claim to be representing the crypto++ collective
-work here; I am merely using several public domain files from it. You
-can find the original code at http://www.cryptopp.com.
-
-
The files in idna/* are copies of the core portion of the "GNU libidn"
library. Copyright (C) 2002, 2003 Simon Josefsson. They are licensed
under the GNU LGPL version 2.1. The original sources for libidn can be
@@ -196,6 +187,38 @@
---
+Jack Lloyd wrote the majority of the Botan
+library, with contributions as noted in botan/thanks.txt
+The library is distributed under a BSD-like license:
+
+---
+
+Copyright (C) 1999-2004 The Botan Project. All rights reserved.
+
+Redistribution and use in source and binary forms, for any use, with or without
+modification, is permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions, and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions, and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
+
+IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTOR(S) BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---
+
The files in popt/* are copies of the original popt 1.7 as provided by
Debian (their own version number is 1.7-5). According to the README
(reproduced as popt/README), it was written by a (former?) RedHat
--- ChangeLog
+++ ChangeLog
@@ -116,6 +116,11 @@
(PNG_FIGURES): Add, constructing in same way as EPS_FIGURES
(monotone.html): Use .perlbak workaround so that this works on Win32
+2005-04-11 Matt Johnston
+
+ * unix/inodeprint.cc: use botan for sha1
+ * various merge fixups
+
2005-04-10 Nathaniel Smith
* Makefile.am (BUILT_SOURCES_CLEAN): Add package_revision.txt.
@@ -408,6 +413,11 @@
* tests/t_sql_unpack.at: New test.
* testsuite.at: Add it.
+2005-04-04 Matt Johnston
+
+ * file_io.cc (read_data_stdin): make it use botan
+ * mkstemp.cc: merge cleanup (missed something up the manual merge)
+
2005-04-04 Nathaniel Smith
* contrib/ciabot_monotone.py (config): Genericize again, so lazy
@@ -738,6 +748,19 @@
2005-03-25 Matt Johnston
+ * tests/t_database_check.at: re-encode the manifestX
+ data so that it doesn't use any fancy gzip features like
+ filenames (so that the botan parse can handle it).
+ ( if it should be able to handle it, an additional test
+ can be added testing it explicitly).
+
+2005-03-25 Matt Johnston
+
+ * botan/base64.h: Change default break value so that
+ output is split into 72 col lines.
+
+2005-03-25 Matt Johnston
+
* monotone.cc: add short options -r, -b, -k, and -m
for --revision, --branch, --key, and --message respectively.
* monotone.texi, monotone.1: document them
@@ -2226,7 +2249,14 @@
(import_states_by_branch): Add 'revisions' argument.
(import_cvs_repo): Add a stage 3 that writes out the revisions
accumulated in the 'revisions' vector.
+
+2005-01-27 Matt Johnston
+ (compile fixes for Linux/gcc 3.3.4)
+ * botan/{util.cpp,primes.cpp}: give large constants ULL
+ suffixes
+ * botan/{gzip.cpp}: fix type for std::max() comparison
+
2005-01-27 graydon hoare
* AUTHORS: Mention Georg.
@@ -2642,6 +2672,11 @@
informative.
(rcs_import): Also add more details to help text.
+2005-01-17 Matt Johnston
+
+ * file_io.cc: re-add accidentally removed #include
+ * botan/gzip.cc: improved comments, removed unused code
+
2005-01-17 Nathaniel Smith
* diff_patch.cc (normalize_extents): Add missing ')'.
@@ -2886,6 +2921,18 @@
function
* tests/t_cross.at: update to work with changesets
+2005-1-1 Matt Johnston
+
+ * botan/base64.cpp: Include a terminating newline in all cases for
+ compatibility with cryptopp
+
+2005-1-1 Matt Johnston
+
+ * keys.cc: fix merge issues propagating 0.16 to net.venge.monotone.botan
+ * botan/config.h: add it
+ * botan/{aes,des,dh,dsa,elgamal,lion,lubyrack,nr,rw,openpgp}*: removed
+ unused files.
+
2004-12-30 graydon hoare
* constants.cc (netcmd_current_protocol_version): Set to 3.
@@ -3764,6 +3811,10 @@
tids being used.
(merge_disjoint_analyses): Fix typo (s/a_tmp/b_tmp/)
+2004-11-27 Matt Johnston
+
+ * Replaced cryptopp with botan
+
2004-11-24 Nathaniel Smith
* tests/t_cleanup_empty_dir.at: Shorten name.
--- Makefile.am
+++ Makefile.am
@@ -40,35 +40,49 @@
netxx/probeinfo.h netxx/sockopt.h netxx/stream.h netxx/streambase.h \
netxx/streamserver.h netxx/timeout.h netxx/types.h
+BOTAN_SOURCES = \
+ botan/aes.cpp botan/aes_tab.cpp botan/algolist.cpp botan/allocate.cpp \
+ botan/arc4.cpp botan/asn1_alg.cpp botan/asn1_alt.cpp botan/asn1_att.cpp \
+ botan/asn1_dn.cpp botan/asn1_ext.cpp botan/asn1_ku.cpp \
+ botan/asn1_oid.cpp botan/asn1_str.cpp botan/asn1_tm.cpp \
+ botan/barrett.cpp botan/base.cpp botan/base64.cpp botan/basefilt.cpp \
+ botan/ber_code.cpp botan/ber_dec.cpp botan/big_base.cpp \
+ botan/big_code.cpp botan/big_io.cpp botan/big_ops2.cpp \
+ botan/big_ops3.cpp botan/blinding.cpp botan/buf_es.cpp \
+ botan/buf_filt.cpp botan/cbc.cpp botan/certstore.cpp botan/cfb.cpp \
+ botan/charset.cpp botan/conf.cpp botan/crc32.cpp botan/crl_ent.cpp \
+ botan/ctr.cpp botan/cts.cpp botan/data_snk.cpp botan/data_src.cpp \
+ botan/def_eng.cpp botan/def_ops.cpp botan/defalloc.cpp \
+ botan/der_code.cpp botan/der_enc.cpp \
+ botan/divide.cpp botan/dl_algo.cpp botan/dl_get.cpp \
+ botan/dl_group.cpp botan/dl_param.cpp botan/dlies.cpp \
+ botan/eax.cpp botan/ecb.cpp botan/eme1.cpp \
+ botan/eme_pkcs.cpp botan/emsa1.cpp botan/emsa2.cpp botan/emsa3.cpp \
+ botan/emsa4.cpp botan/emsa_raw.cpp botan/eng_base.cpp botan/engine.cpp \
+ botan/es_file.cpp botan/exceptn.cpp botan/filter.cpp botan/filters.cpp \
+ botan/fips140.cpp botan/fips_rng.cpp botan/fused.cpp botan/get_algo.cpp \
+ botan/get_enc.cpp botan/get_pbe.cpp botan/gzip.cpp botan/hash_id.cpp \
+ botan/hex.cpp botan/hmac.cpp botan/if_algo.cpp botan/inifile.cpp \
+ botan/init.cpp botan/kdf.cpp botan/keypair.cpp botan/look_pk.cpp \
+ botan/lookup.cpp botan/make_prm.cpp botan/mdx_hash.cpp \
+ botan/mem_pool.cpp botan/mgf1.cpp botan/mlock.cpp botan/mod_exp.cpp \
+ botan/mode_pad.cpp botan/modebase.cpp botan/mp_comba.cpp \
+ botan/mp_core.cpp botan/mp_fkmul.cpp botan/mp_misc.cpp botan/mp_mul.cpp \
+ botan/mp_shift.cpp botan/mp_smul.cpp botan/mutex.cpp \
+ botan/numthry.cpp botan/ofb.cpp botan/oids.cpp \
+ botan/parse.cpp botan/pbes1.cpp botan/pbes2.cpp botan/pem.cpp \
+ botan/pipe.cpp botan/pipe_io.cpp botan/pipe_rw.cpp botan/pk_algs.cpp \
+ botan/pk_core.cpp botan/pk_filts.cpp botan/pk_keys.cpp \
+ botan/pk_util.cpp botan/pkcs10.cpp botan/pkcs8.cpp botan/policy.cpp \
+ botan/pow_mod.cpp botan/prf_ssl3.cpp botan/prf_tls.cpp \
+ botan/prf_x942.cpp botan/primes.cpp botan/pubkey.cpp botan/randpool.cpp \
+ botan/reducer.cpp botan/rng.cpp botan/rsa.cpp \
+ botan/s2k.cpp botan/secqueue.cpp botan/sha160.cpp botan/symkey.cpp \
+ botan/timers.cpp botan/ui.cpp botan/util.cpp botan/x509_ca.cpp \
+ botan/x509_crl.cpp botan/x509_key.cpp botan/x509_obj.cpp \
+ botan/x509cert.cpp botan/x509find.cpp botan/x509opt.cpp \
+ botan/x509self.cpp botan/x509stor.cpp botan/x917_rng.cpp
-CRYPTOPP_SOURCES = \
- cryptopp/algebra.cpp cryptopp/algparam.cpp cryptopp/arc4.cpp \
- cryptopp/asn.cpp cryptopp/base64.cpp cryptopp/basecode.cpp \
- cryptopp/crc.cpp cryptopp/cryptlib.cpp cryptopp/des.cpp cryptopp/dessp.cpp \
- cryptopp/dll.cpp cryptopp/eprecomp.cpp cryptopp/files.cpp cryptopp/filters.cpp \
- cryptopp/fips140.cpp cryptopp/gzip.cpp cryptopp/hex.cpp cryptopp/hmac.cpp \
- cryptopp/integer.cpp cryptopp/iterhash.cpp cryptopp/misc.cpp \
- cryptopp/modes.cpp cryptopp/mqueue.cpp cryptopp/nbtheory.cpp \
- cryptopp/oaep.cpp cryptopp/osrng.cpp cryptopp/pch.cpp cryptopp/pkcspad.cpp \
- cryptopp/pssr.cpp cryptopp/pubkey.cpp cryptopp/queue.cpp \
- cryptopp/randpool.cpp cryptopp/rng.cpp cryptopp/rsa.cpp cryptopp/sha.cpp \
- cryptopp/strciphr.cpp cryptopp/trdlocal.cpp cryptopp/zdeflate.cpp \
- cryptopp/zinflate.cpp \
- \
- cryptopp/algebra.h cryptopp/algparam.h cryptopp/arc4.h cryptopp/argnames.h \
- cryptopp/asn.h cryptopp/base64.h cryptopp/basecode.h cryptopp/config.h \
- cryptopp/crc.h cryptopp/cryptlib.h cryptopp/des.h cryptopp/dll.h cryptopp/eprecomp.h \
- cryptopp/files.h cryptopp/filters.h cryptopp/fips140.h cryptopp/fltrimpl.h \
- cryptopp/gzip.h cryptopp/hex.h cryptopp/integer.h cryptopp/iterhash.h \
- cryptopp/mdc.h cryptopp/misc.h cryptopp/modarith.h cryptopp/modes.h \
- cryptopp/mqueue.h cryptopp/nbtheory.h cryptopp/oaep.h cryptopp/oids.h \
- cryptopp/osrng.h cryptopp/pch.h cryptopp/pkcspad.h cryptopp/pssr.h \
- cryptopp/pubkey.h cryptopp/queue.h cryptopp/randpool.h cryptopp/rng.h \
- cryptopp/rsa.h cryptopp/secblock.h cryptopp/seckey.h cryptopp/sha.h \
- cryptopp/simple.h cryptopp/smartptr.h cryptopp/stdcpp.h cryptopp/strciphr.h \
- cryptopp/trdlocal.h cryptopp/words.h cryptopp/zdeflate.h \
- cryptopp/zinflate.h cryptopp/hmac.h
-
BOOST_SANDBOX_SOURCES = \
boost/circular_buffer_adaptor.hpp \
boost/circular_buffer_base.hpp \
@@ -137,7 +151,7 @@
noinst_LIBRARIES = libplatform.a lib3rdparty.a
libplatform_a_SOURCES = platform.hh
lib3rdparty_a_SOURCES = $(BOOST_SANDBOX_SOURCES) \
- $(CRYPTOPP_SOURCES) \
+ $(BOTAN_SOURCES) \
$(IDNA_SOURCES) \
$(POPT_SOURCES) \
$(NETXX_SOURCES)
@@ -188,6 +202,8 @@
libplatform_a_SOURCES += $(WIN32_PLATFORM_SOURCES)
monotone_LDADD += -lws2_32 -lintl -liconv -liphlpapi
unit_tests_LDADD += -lws2_32 -lintl -liconv -liphlpapi
+ lib3rdparty_a_CPPFLAGS += -DWIN32
+ lib3rdparty_a_SOURCES += botan/es_capi.cpp
else
libplatform_a_SOURCES += $(UNIX_PLATFORM_SOURCES)
endif
--- app_state.hh
+++ app_state.hh
@@ -9,6 +9,10 @@
class app_state;
class lua_hooks;
+#include
+#include
+#include
+
#include
#include "database.hh"
@@ -41,6 +45,18 @@
bool found_working_copy;
long depth;
+ // These are used to cache signers/verifiers (if the hook allows).
+ // They can't be function-static variables in key.cc, since they must be
+ // destroyed before the Botan deinitialize() function is called. */
+ std::map,
+ boost::shared_ptr > > signers;
+ std::map,
+ boost::shared_ptr > > verifiers;
+
+ void initialize(bool working_copy);
+ void initialize(std::string const & dir);
void allow_working_copy();
void require_working_copy();
void create_working_copy(std::string const & dir);
--- botan/aes.cpp
+++ botan/aes.cpp
@@ -0,0 +1,193 @@
+/*************************************************
+* AES Source File *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#include
+
+namespace Botan {
+
+/*************************************************
+* AES Encryption *
+*************************************************/
+void AES::enc(const byte in[], byte out[]) const
+ {
+ u32bit T0, T1, T2, T3, B0, B1, B2, B3;
+ B0 = TE0[in[ 0] ^ ME[ 0]] ^ TE1[in[ 5] ^ ME[ 5]] ^
+ TE2[in[10] ^ ME[10]] ^ TE3[in[15] ^ ME[15]] ^ EK[0];
+ B1 = TE0[in[ 4] ^ ME[ 4]] ^ TE1[in[ 9] ^ ME[ 9]] ^
+ TE2[in[14] ^ ME[14]] ^ TE3[in[ 3] ^ ME[ 3]] ^ EK[1];
+ B2 = TE0[in[ 8] ^ ME[ 8]] ^ TE1[in[13] ^ ME[13]] ^
+ TE2[in[ 2] ^ ME[ 2]] ^ TE3[in[ 7] ^ ME[ 7]] ^ EK[2];
+ B3 = TE0[in[12] ^ ME[12]] ^ TE1[in[ 1] ^ ME[ 1]] ^
+ TE2[in[ 6] ^ ME[ 6]] ^ TE3[in[11] ^ ME[11]] ^ EK[3];
+ for(u32bit j = 1; j != ROUNDS - 1; j += 2)
+ {
+ T0 = TE0[get_byte(0, B0)] ^ TE1[get_byte(1, B1)] ^
+ TE2[get_byte(2, B2)] ^ TE3[get_byte(3, B3)] ^ EK[4*j+0];
+ T1 = TE0[get_byte(0, B1)] ^ TE1[get_byte(1, B2)] ^
+ TE2[get_byte(2, B3)] ^ TE3[get_byte(3, B0)] ^ EK[4*j+1];
+ T2 = TE0[get_byte(0, B2)] ^ TE1[get_byte(1, B3)] ^
+ TE2[get_byte(2, B0)] ^ TE3[get_byte(3, B1)] ^ EK[4*j+2];
+ T3 = TE0[get_byte(0, B3)] ^ TE1[get_byte(1, B0)] ^
+ TE2[get_byte(2, B1)] ^ TE3[get_byte(3, B2)] ^ EK[4*j+3];
+ B0 = TE0[get_byte(0, T0)] ^ TE1[get_byte(1, T1)] ^
+ TE2[get_byte(2, T2)] ^ TE3[get_byte(3, T3)] ^ EK[4*j+4];
+ B1 = TE0[get_byte(0, T1)] ^ TE1[get_byte(1, T2)] ^
+ TE2[get_byte(2, T3)] ^ TE3[get_byte(3, T0)] ^ EK[4*j+5];
+ B2 = TE0[get_byte(0, T2)] ^ TE1[get_byte(1, T3)] ^
+ TE2[get_byte(2, T0)] ^ TE3[get_byte(3, T1)] ^ EK[4*j+6];
+ B3 = TE0[get_byte(0, T3)] ^ TE1[get_byte(1, T0)] ^
+ TE2[get_byte(2, T1)] ^ TE3[get_byte(3, T2)] ^ EK[4*j+7];
+ }
+ out[ 0] = SE[get_byte(0, B0)] ^ ME[16];
+ out[ 1] = SE[get_byte(1, B1)] ^ ME[17];
+ out[ 2] = SE[get_byte(2, B2)] ^ ME[18];
+ out[ 3] = SE[get_byte(3, B3)] ^ ME[19];
+ out[ 4] = SE[get_byte(0, B1)] ^ ME[20];
+ out[ 5] = SE[get_byte(1, B2)] ^ ME[21];
+ out[ 6] = SE[get_byte(2, B3)] ^ ME[22];
+ out[ 7] = SE[get_byte(3, B0)] ^ ME[23];
+ out[ 8] = SE[get_byte(0, B2)] ^ ME[24];
+ out[ 9] = SE[get_byte(1, B3)] ^ ME[25];
+ out[10] = SE[get_byte(2, B0)] ^ ME[26];
+ out[11] = SE[get_byte(3, B1)] ^ ME[27];
+ out[12] = SE[get_byte(0, B3)] ^ ME[28];
+ out[13] = SE[get_byte(1, B0)] ^ ME[29];
+ out[14] = SE[get_byte(2, B1)] ^ ME[30];
+ out[15] = SE[get_byte(3, B2)] ^ ME[31];
+ }
+
+/*************************************************
+* AES Decryption *
+*************************************************/
+void AES::dec(const byte in[], byte out[]) const
+ {
+ u32bit T0, T1, T2, T3, B0, B1, B2, B3;
+ B0 = TD0[in[ 0] ^ MD[ 0]] ^ TD1[in[13] ^ MD[13]] ^
+ TD2[in[10] ^ MD[10]] ^ TD3[in[ 7] ^ MD[ 7]] ^ DK[0];
+ B1 = TD0[in[ 4] ^ MD[ 4]] ^ TD1[in[ 1] ^ MD[ 1]] ^
+ TD2[in[14] ^ MD[14]] ^ TD3[in[11] ^ MD[11]] ^ DK[1];
+ B2 = TD0[in[ 8] ^ MD[ 8]] ^ TD1[in[ 5] ^ MD[ 5]] ^
+ TD2[in[ 2] ^ MD[ 2]] ^ TD3[in[15] ^ MD[15]] ^ DK[2];
+ B3 = TD0[in[12] ^ MD[12]] ^ TD1[in[ 9] ^ MD[ 9]] ^
+ TD2[in[ 6] ^ MD[ 6]] ^ TD3[in[ 3] ^ MD[ 3]] ^ DK[3];
+ for(u32bit j = 1; j != ROUNDS - 1; j += 2)
+ {
+ T0 = TD0[get_byte(0, B0)] ^ TD1[get_byte(1, B3)] ^
+ TD2[get_byte(2, B2)] ^ TD3[get_byte(3, B1)] ^ DK[4*j+0];
+ T1 = TD0[get_byte(0, B1)] ^ TD1[get_byte(1, B0)] ^
+ TD2[get_byte(2, B3)] ^ TD3[get_byte(3, B2)] ^ DK[4*j+1];
+ T2 = TD0[get_byte(0, B2)] ^ TD1[get_byte(1, B1)] ^
+ TD2[get_byte(2, B0)] ^ TD3[get_byte(3, B3)] ^ DK[4*j+2];
+ T3 = TD0[get_byte(0, B3)] ^ TD1[get_byte(1, B2)] ^
+ TD2[get_byte(2, B1)] ^ TD3[get_byte(3, B0)] ^ DK[4*j+3];
+ B0 = TD0[get_byte(0, T0)] ^ TD1[get_byte(1, T3)] ^
+ TD2[get_byte(2, T2)] ^ TD3[get_byte(3, T1)] ^ DK[4*j+4];
+ B1 = TD0[get_byte(0, T1)] ^ TD1[get_byte(1, T0)] ^
+ TD2[get_byte(2, T3)] ^ TD3[get_byte(3, T2)] ^ DK[4*j+5];
+ B2 = TD0[get_byte(0, T2)] ^ TD1[get_byte(1, T1)] ^
+ TD2[get_byte(2, T0)] ^ TD3[get_byte(3, T3)] ^ DK[4*j+6];
+ B3 = TD0[get_byte(0, T3)] ^ TD1[get_byte(1, T2)] ^
+ TD2[get_byte(2, T1)] ^ TD3[get_byte(3, T0)] ^ DK[4*j+7];
+ }
+ out[ 0] = SD[get_byte(0, B0)] ^ MD[16];
+ out[ 1] = SD[get_byte(1, B3)] ^ MD[17];
+ out[ 2] = SD[get_byte(2, B2)] ^ MD[18];
+ out[ 3] = SD[get_byte(3, B1)] ^ MD[19];
+ out[ 4] = SD[get_byte(0, B1)] ^ MD[20];
+ out[ 5] = SD[get_byte(1, B0)] ^ MD[21];
+ out[ 6] = SD[get_byte(2, B3)] ^ MD[22];
+ out[ 7] = SD[get_byte(3, B2)] ^ MD[23];
+ out[ 8] = SD[get_byte(0, B2)] ^ MD[24];
+ out[ 9] = SD[get_byte(1, B1)] ^ MD[25];
+ out[10] = SD[get_byte(2, B0)] ^ MD[26];
+ out[11] = SD[get_byte(3, B3)] ^ MD[27];
+ out[12] = SD[get_byte(0, B3)] ^ MD[28];
+ out[13] = SD[get_byte(1, B2)] ^ MD[29];
+ out[14] = SD[get_byte(2, B1)] ^ MD[30];
+ out[15] = SD[get_byte(3, B0)] ^ MD[31];
+ }
+
+/*************************************************
+* AES Key Schedule *
+*************************************************/
+void AES::key(const byte key[], u32bit length)
+ {
+ static const u32bit RC[10] = {
+ 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000,
+ 0x40000000, 0x80000000, 0x1B000000, 0x36000000 };
+ ROUNDS = (length / 4) + 6;
+
+ SecureBuffer XEK, XDK;
+
+ const u32bit X = length / 4;
+ for(u32bit j = 0; j != X; j++)
+ XEK[j] = make_u32bit(key[4*j], key[4*j+1], key[4*j+2], key[4*j+3]);
+ for(u32bit j = X; j < 4*(ROUNDS+1); j += X)
+ {
+ XEK[j] = XEK[j-X] ^ S(rotate_left(XEK[j-1], 8)) ^ RC[(j-X)/X];
+ for(u32bit k = 1; k != X; k++)
+ {
+ if(X == 8 && k == 4)
+ XEK[j+k] = XEK[j+k-X] ^ S(XEK[j+k-1]);
+ else
+ XEK[j+k] = XEK[j+k-X] ^ XEK[j+k-1];
+ }
+ }
+
+ for(u32bit j = 0; j != 4*(ROUNDS+1); j += 4)
+ {
+ XDK[j ] = XEK[4*ROUNDS-j ];
+ XDK[j+1] = XEK[4*ROUNDS-j+1];
+ XDK[j+2] = XEK[4*ROUNDS-j+2];
+ XDK[j+3] = XEK[4*ROUNDS-j+3];
+ }
+ for(u32bit j = 4; j != length + 24; j++)
+ XDK[j] = TD0[SE[get_byte(0, XDK[j])]] ^ TD1[SE[get_byte(1, XDK[j])]] ^
+ TD2[SE[get_byte(2, XDK[j])]] ^ TD3[SE[get_byte(3, XDK[j])]];
+
+ for(u32bit j = 0; j != 4; j++)
+ for(u32bit k = 0; k != 4; k++)
+ {
+ ME[4*j+k ] = get_byte(k, XEK[j]);
+ ME[4*j+k+16] = get_byte(k, XEK[j+4*ROUNDS]);
+ MD[4*j+k ] = get_byte(k, XDK[j]);
+ MD[4*j+k+16] = get_byte(k, XEK[j]);
+ }
+
+ EK.copy(XEK + 4, length + 20);
+ DK.copy(XDK + 4, length + 20);
+ }
+
+/*************************************************
+* AES Byte Substitution *
+*************************************************/
+u32bit AES::S(u32bit input)
+ {
+ return make_u32bit(SE[get_byte(0, input)], SE[get_byte(1, input)],
+ SE[get_byte(2, input)], SE[get_byte(3, input)]);
+ }
+
+/*************************************************
+* AES Constructor *
+*************************************************/
+AES::AES(u32bit key_size) : BlockCipher(16, key_size)
+ {
+ if(key_size != 16 && key_size != 24 && key_size != 32)
+ throw Invalid_Argument("AES: Bad key size " + to_string(key_size));
+ ROUNDS = (key_size / 4) + 6;
+ }
+
+/*************************************************
+* Clear memory of sensitive data *
+*************************************************/
+void AES::clear() throw()
+ {
+ EK.clear();
+ DK.clear();
+ ME.clear();
+ MD.clear();
+ }
+
+}
--- botan/aes.h
+++ botan/aes.h
@@ -0,0 +1,72 @@
+/*************************************************
+* AES Header File *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#ifndef BOTAN_AES_H__
+#define BOTAN_AES_H__
+
+#include
+
+namespace Botan {
+
+/*************************************************
+* AES *
+*************************************************/
+class AES : public BlockCipher
+ {
+ public:
+ void clear() throw();
+ std::string name() const { return "AES"; }
+ BlockCipher* clone() const { return new AES; }
+ AES() : BlockCipher(16, 16, 32, 8) { ROUNDS = 14; }
+ AES(u32bit);
+ private:
+ void enc(const byte[], byte[]) const;
+ void dec(const byte[], byte[]) const;
+ void key(const byte[], u32bit);
+ static u32bit S(u32bit);
+ static const byte SE[256], SD[256];
+ static const u32bit TE0[256], TE1[256], TE2[256], TE3[256],
+ TD0[256], TD1[256], TD2[256], TD3[256];
+ SecureBuffer EK, DK;
+ SecureBuffer ME, MD;
+ u32bit ROUNDS;
+ };
+
+/*************************************************
+* AES-128 *
+*************************************************/
+class AES_128 : public AES
+ {
+ public:
+ std::string name() const { return "AES-128"; }
+ BlockCipher* clone() const { return new AES_128; }
+ AES_128() : AES(16) {}
+ };
+
+/*************************************************
+* AES-192 *
+*************************************************/
+class AES_192 : public AES
+ {
+ public:
+ std::string name() const { return "AES-192"; }
+ BlockCipher* clone() const { return new AES_192; }
+ AES_192() : AES(24) {}
+ };
+
+/*************************************************
+* AES-256 *
+*************************************************/
+class AES_256 : public AES
+ {
+ public:
+ std::string name() const { return "AES-256"; }
+ BlockCipher* clone() const { return new AES_256; }
+ AES_256() : AES(32) {}
+ };
+
+}
+
+#endif
--- botan/aes_tab.cpp
+++ botan/aes_tab.cpp
@@ -0,0 +1,414 @@
+/*************************************************
+* S-Box and Diffusion Tables for AES *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#include
+
+namespace Botan {
+
+const byte AES::SE[256] = {
+0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE,
+0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4,
+0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7,
+0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7, 0x23, 0xC3,
+0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, 0x09,
+0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3,
+0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE,
+0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85,
+0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92,
+0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C,
+0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19,
+0x73, 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14,
+0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2,
+0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5,
+0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, 0xBA, 0x78, 0x25,
+0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,
+0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86,
+0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E,
+0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42,
+0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 };
+
+const byte AES::SD[256] = {
+0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81,
+0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E,
+0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23,
+0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, 0x08, 0x2E, 0xA1, 0x66,
+0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, 0x72,
+0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65,
+0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46,
+0x57, 0xA7, 0x8D, 0x9D, 0x84, 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A,
+0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA,
+0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91,
+0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6,
+0x73, 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8,
+0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F,
+0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2,
+0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, 0x1F, 0xDD, 0xA8,
+0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F,
+0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93,
+0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB,
+0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6,
+0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D };
+
+const u32bit AES::TE0[256] = {
+0xC66363A5, 0xF87C7C84, 0xEE777799, 0xF67B7B8D, 0xFFF2F20D, 0xD66B6BBD,
+0xDE6F6FB1, 0x91C5C554, 0x60303050, 0x02010103, 0xCE6767A9, 0x562B2B7D,
+0xE7FEFE19, 0xB5D7D762, 0x4DABABE6, 0xEC76769A, 0x8FCACA45, 0x1F82829D,
+0x89C9C940, 0xFA7D7D87, 0xEFFAFA15, 0xB25959EB, 0x8E4747C9, 0xFBF0F00B,
+0x41ADADEC, 0xB3D4D467, 0x5FA2A2FD, 0x45AFAFEA, 0x239C9CBF, 0x53A4A4F7,
+0xE4727296, 0x9BC0C05B, 0x75B7B7C2, 0xE1FDFD1C, 0x3D9393AE, 0x4C26266A,
+0x6C36365A, 0x7E3F3F41, 0xF5F7F702, 0x83CCCC4F, 0x6834345C, 0x51A5A5F4,
+0xD1E5E534, 0xF9F1F108, 0xE2717193, 0xABD8D873, 0x62313153, 0x2A15153F,
+0x0804040C, 0x95C7C752, 0x46232365, 0x9DC3C35E, 0x30181828, 0x379696A1,
+0x0A05050F, 0x2F9A9AB5, 0x0E070709, 0x24121236, 0x1B80809B, 0xDFE2E23D,
+0xCDEBEB26, 0x4E272769, 0x7FB2B2CD, 0xEA75759F, 0x1209091B, 0x1D83839E,
+0x582C2C74, 0x341A1A2E, 0x361B1B2D, 0xDC6E6EB2, 0xB45A5AEE, 0x5BA0A0FB,
+0xA45252F6, 0x763B3B4D, 0xB7D6D661, 0x7DB3B3CE, 0x5229297B, 0xDDE3E33E,
+0x5E2F2F71, 0x13848497, 0xA65353F5, 0xB9D1D168, 0x00000000, 0xC1EDED2C,
+0x40202060, 0xE3FCFC1F, 0x79B1B1C8, 0xB65B5BED, 0xD46A6ABE, 0x8DCBCB46,
+0x67BEBED9, 0x7239394B, 0x944A4ADE, 0x984C4CD4, 0xB05858E8, 0x85CFCF4A,
+0xBBD0D06B, 0xC5EFEF2A, 0x4FAAAAE5, 0xEDFBFB16, 0x864343C5, 0x9A4D4DD7,
+0x66333355, 0x11858594, 0x8A4545CF, 0xE9F9F910, 0x04020206, 0xFE7F7F81,
+0xA05050F0, 0x783C3C44, 0x259F9FBA, 0x4BA8A8E3, 0xA25151F3, 0x5DA3A3FE,
+0x804040C0, 0x058F8F8A, 0x3F9292AD, 0x219D9DBC, 0x70383848, 0xF1F5F504,
+0x63BCBCDF, 0x77B6B6C1, 0xAFDADA75, 0x42212163, 0x20101030, 0xE5FFFF1A,
+0xFDF3F30E, 0xBFD2D26D, 0x81CDCD4C, 0x180C0C14, 0x26131335, 0xC3ECEC2F,
+0xBE5F5FE1, 0x359797A2, 0x884444CC, 0x2E171739, 0x93C4C457, 0x55A7A7F2,
+0xFC7E7E82, 0x7A3D3D47, 0xC86464AC, 0xBA5D5DE7, 0x3219192B, 0xE6737395,
+0xC06060A0, 0x19818198, 0x9E4F4FD1, 0xA3DCDC7F, 0x44222266, 0x542A2A7E,
+0x3B9090AB, 0x0B888883, 0x8C4646CA, 0xC7EEEE29, 0x6BB8B8D3, 0x2814143C,
+0xA7DEDE79, 0xBC5E5EE2, 0x160B0B1D, 0xADDBDB76, 0xDBE0E03B, 0x64323256,
+0x743A3A4E, 0x140A0A1E, 0x924949DB, 0x0C06060A, 0x4824246C, 0xB85C5CE4,
+0x9FC2C25D, 0xBDD3D36E, 0x43ACACEF, 0xC46262A6, 0x399191A8, 0x319595A4,
+0xD3E4E437, 0xF279798B, 0xD5E7E732, 0x8BC8C843, 0x6E373759, 0xDA6D6DB7,
+0x018D8D8C, 0xB1D5D564, 0x9C4E4ED2, 0x49A9A9E0, 0xD86C6CB4, 0xAC5656FA,
+0xF3F4F407, 0xCFEAEA25, 0xCA6565AF, 0xF47A7A8E, 0x47AEAEE9, 0x10080818,
+0x6FBABAD5, 0xF0787888, 0x4A25256F, 0x5C2E2E72, 0x381C1C24, 0x57A6A6F1,
+0x73B4B4C7, 0x97C6C651, 0xCBE8E823, 0xA1DDDD7C, 0xE874749C, 0x3E1F1F21,
+0x964B4BDD, 0x61BDBDDC, 0x0D8B8B86, 0x0F8A8A85, 0xE0707090, 0x7C3E3E42,
+0x71B5B5C4, 0xCC6666AA, 0x904848D8, 0x06030305, 0xF7F6F601, 0x1C0E0E12,
+0xC26161A3, 0x6A35355F, 0xAE5757F9, 0x69B9B9D0, 0x17868691, 0x99C1C158,
+0x3A1D1D27, 0x279E9EB9, 0xD9E1E138, 0xEBF8F813, 0x2B9898B3, 0x22111133,
+0xD26969BB, 0xA9D9D970, 0x078E8E89, 0x339494A7, 0x2D9B9BB6, 0x3C1E1E22,
+0x15878792, 0xC9E9E920, 0x87CECE49, 0xAA5555FF, 0x50282878, 0xA5DFDF7A,
+0x038C8C8F, 0x59A1A1F8, 0x09898980, 0x1A0D0D17, 0x65BFBFDA, 0xD7E6E631,
+0x844242C6, 0xD06868B8, 0x824141C3, 0x299999B0, 0x5A2D2D77, 0x1E0F0F11,
+0x7BB0B0CB, 0xA85454FC, 0x6DBBBBD6, 0x2C16163A };
+
+const u32bit AES::TE1[256] = {
+0xA5C66363, 0x84F87C7C, 0x99EE7777, 0x8DF67B7B, 0x0DFFF2F2, 0xBDD66B6B,
+0xB1DE6F6F, 0x5491C5C5, 0x50603030, 0x03020101, 0xA9CE6767, 0x7D562B2B,
+0x19E7FEFE, 0x62B5D7D7, 0xE64DABAB, 0x9AEC7676, 0x458FCACA, 0x9D1F8282,
+0x4089C9C9, 0x87FA7D7D, 0x15EFFAFA, 0xEBB25959, 0xC98E4747, 0x0BFBF0F0,
+0xEC41ADAD, 0x67B3D4D4, 0xFD5FA2A2, 0xEA45AFAF, 0xBF239C9C, 0xF753A4A4,
+0x96E47272, 0x5B9BC0C0, 0xC275B7B7, 0x1CE1FDFD, 0xAE3D9393, 0x6A4C2626,
+0x5A6C3636, 0x417E3F3F, 0x02F5F7F7, 0x4F83CCCC, 0x5C683434, 0xF451A5A5,
+0x34D1E5E5, 0x08F9F1F1, 0x93E27171, 0x73ABD8D8, 0x53623131, 0x3F2A1515,
+0x0C080404, 0x5295C7C7, 0x65462323, 0x5E9DC3C3, 0x28301818, 0xA1379696,
+0x0F0A0505, 0xB52F9A9A, 0x090E0707, 0x36241212, 0x9B1B8080, 0x3DDFE2E2,
+0x26CDEBEB, 0x694E2727, 0xCD7FB2B2, 0x9FEA7575, 0x1B120909, 0x9E1D8383,
+0x74582C2C, 0x2E341A1A, 0x2D361B1B, 0xB2DC6E6E, 0xEEB45A5A, 0xFB5BA0A0,
+0xF6A45252, 0x4D763B3B, 0x61B7D6D6, 0xCE7DB3B3, 0x7B522929, 0x3EDDE3E3,
+0x715E2F2F, 0x97138484, 0xF5A65353, 0x68B9D1D1, 0x00000000, 0x2CC1EDED,
+0x60402020, 0x1FE3FCFC, 0xC879B1B1, 0xEDB65B5B, 0xBED46A6A, 0x468DCBCB,
+0xD967BEBE, 0x4B723939, 0xDE944A4A, 0xD4984C4C, 0xE8B05858, 0x4A85CFCF,
+0x6BBBD0D0, 0x2AC5EFEF, 0xE54FAAAA, 0x16EDFBFB, 0xC5864343, 0xD79A4D4D,
+0x55663333, 0x94118585, 0xCF8A4545, 0x10E9F9F9, 0x06040202, 0x81FE7F7F,
+0xF0A05050, 0x44783C3C, 0xBA259F9F, 0xE34BA8A8, 0xF3A25151, 0xFE5DA3A3,
+0xC0804040, 0x8A058F8F, 0xAD3F9292, 0xBC219D9D, 0x48703838, 0x04F1F5F5,
+0xDF63BCBC, 0xC177B6B6, 0x75AFDADA, 0x63422121, 0x30201010, 0x1AE5FFFF,
+0x0EFDF3F3, 0x6DBFD2D2, 0x4C81CDCD, 0x14180C0C, 0x35261313, 0x2FC3ECEC,
+0xE1BE5F5F, 0xA2359797, 0xCC884444, 0x392E1717, 0x5793C4C4, 0xF255A7A7,
+0x82FC7E7E, 0x477A3D3D, 0xACC86464, 0xE7BA5D5D, 0x2B321919, 0x95E67373,
+0xA0C06060, 0x98198181, 0xD19E4F4F, 0x7FA3DCDC, 0x66442222, 0x7E542A2A,
+0xAB3B9090, 0x830B8888, 0xCA8C4646, 0x29C7EEEE, 0xD36BB8B8, 0x3C281414,
+0x79A7DEDE, 0xE2BC5E5E, 0x1D160B0B, 0x76ADDBDB, 0x3BDBE0E0, 0x56643232,
+0x4E743A3A, 0x1E140A0A, 0xDB924949, 0x0A0C0606, 0x6C482424, 0xE4B85C5C,
+0x5D9FC2C2, 0x6EBDD3D3, 0xEF43ACAC, 0xA6C46262, 0xA8399191, 0xA4319595,
+0x37D3E4E4, 0x8BF27979, 0x32D5E7E7, 0x438BC8C8, 0x596E3737, 0xB7DA6D6D,
+0x8C018D8D, 0x64B1D5D5, 0xD29C4E4E, 0xE049A9A9, 0xB4D86C6C, 0xFAAC5656,
+0x07F3F4F4, 0x25CFEAEA, 0xAFCA6565, 0x8EF47A7A, 0xE947AEAE, 0x18100808,
+0xD56FBABA, 0x88F07878, 0x6F4A2525, 0x725C2E2E, 0x24381C1C, 0xF157A6A6,
+0xC773B4B4, 0x5197C6C6, 0x23CBE8E8, 0x7CA1DDDD, 0x9CE87474, 0x213E1F1F,
+0xDD964B4B, 0xDC61BDBD, 0x860D8B8B, 0x850F8A8A, 0x90E07070, 0x427C3E3E,
+0xC471B5B5, 0xAACC6666, 0xD8904848, 0x05060303, 0x01F7F6F6, 0x121C0E0E,
+0xA3C26161, 0x5F6A3535, 0xF9AE5757, 0xD069B9B9, 0x91178686, 0x5899C1C1,
+0x273A1D1D, 0xB9279E9E, 0x38D9E1E1, 0x13EBF8F8, 0xB32B9898, 0x33221111,
+0xBBD26969, 0x70A9D9D9, 0x89078E8E, 0xA7339494, 0xB62D9B9B, 0x223C1E1E,
+0x92158787, 0x20C9E9E9, 0x4987CECE, 0xFFAA5555, 0x78502828, 0x7AA5DFDF,
+0x8F038C8C, 0xF859A1A1, 0x80098989, 0x171A0D0D, 0xDA65BFBF, 0x31D7E6E6,
+0xC6844242, 0xB8D06868, 0xC3824141, 0xB0299999, 0x775A2D2D, 0x111E0F0F,
+0xCB7BB0B0, 0xFCA85454, 0xD66DBBBB, 0x3A2C1616 };
+
+const u32bit AES::TE2[256] = {
+0x63A5C663, 0x7C84F87C, 0x7799EE77, 0x7B8DF67B, 0xF20DFFF2, 0x6BBDD66B,
+0x6FB1DE6F, 0xC55491C5, 0x30506030, 0x01030201, 0x67A9CE67, 0x2B7D562B,
+0xFE19E7FE, 0xD762B5D7, 0xABE64DAB, 0x769AEC76, 0xCA458FCA, 0x829D1F82,
+0xC94089C9, 0x7D87FA7D, 0xFA15EFFA, 0x59EBB259, 0x47C98E47, 0xF00BFBF0,
+0xADEC41AD, 0xD467B3D4, 0xA2FD5FA2, 0xAFEA45AF, 0x9CBF239C, 0xA4F753A4,
+0x7296E472, 0xC05B9BC0, 0xB7C275B7, 0xFD1CE1FD, 0x93AE3D93, 0x266A4C26,
+0x365A6C36, 0x3F417E3F, 0xF702F5F7, 0xCC4F83CC, 0x345C6834, 0xA5F451A5,
+0xE534D1E5, 0xF108F9F1, 0x7193E271, 0xD873ABD8, 0x31536231, 0x153F2A15,
+0x040C0804, 0xC75295C7, 0x23654623, 0xC35E9DC3, 0x18283018, 0x96A13796,
+0x050F0A05, 0x9AB52F9A, 0x07090E07, 0x12362412, 0x809B1B80, 0xE23DDFE2,
+0xEB26CDEB, 0x27694E27, 0xB2CD7FB2, 0x759FEA75, 0x091B1209, 0x839E1D83,
+0x2C74582C, 0x1A2E341A, 0x1B2D361B, 0x6EB2DC6E, 0x5AEEB45A, 0xA0FB5BA0,
+0x52F6A452, 0x3B4D763B, 0xD661B7D6, 0xB3CE7DB3, 0x297B5229, 0xE33EDDE3,
+0x2F715E2F, 0x84971384, 0x53F5A653, 0xD168B9D1, 0x00000000, 0xED2CC1ED,
+0x20604020, 0xFC1FE3FC, 0xB1C879B1, 0x5BEDB65B, 0x6ABED46A, 0xCB468DCB,
+0xBED967BE, 0x394B7239, 0x4ADE944A, 0x4CD4984C, 0x58E8B058, 0xCF4A85CF,
+0xD06BBBD0, 0xEF2AC5EF, 0xAAE54FAA, 0xFB16EDFB, 0x43C58643, 0x4DD79A4D,
+0x33556633, 0x85941185, 0x45CF8A45, 0xF910E9F9, 0x02060402, 0x7F81FE7F,
+0x50F0A050, 0x3C44783C, 0x9FBA259F, 0xA8E34BA8, 0x51F3A251, 0xA3FE5DA3,
+0x40C08040, 0x8F8A058F, 0x92AD3F92, 0x9DBC219D, 0x38487038, 0xF504F1F5,
+0xBCDF63BC, 0xB6C177B6, 0xDA75AFDA, 0x21634221, 0x10302010, 0xFF1AE5FF,
+0xF30EFDF3, 0xD26DBFD2, 0xCD4C81CD, 0x0C14180C, 0x13352613, 0xEC2FC3EC,
+0x5FE1BE5F, 0x97A23597, 0x44CC8844, 0x17392E17, 0xC45793C4, 0xA7F255A7,
+0x7E82FC7E, 0x3D477A3D, 0x64ACC864, 0x5DE7BA5D, 0x192B3219, 0x7395E673,
+0x60A0C060, 0x81981981, 0x4FD19E4F, 0xDC7FA3DC, 0x22664422, 0x2A7E542A,
+0x90AB3B90, 0x88830B88, 0x46CA8C46, 0xEE29C7EE, 0xB8D36BB8, 0x143C2814,
+0xDE79A7DE, 0x5EE2BC5E, 0x0B1D160B, 0xDB76ADDB, 0xE03BDBE0, 0x32566432,
+0x3A4E743A, 0x0A1E140A, 0x49DB9249, 0x060A0C06, 0x246C4824, 0x5CE4B85C,
+0xC25D9FC2, 0xD36EBDD3, 0xACEF43AC, 0x62A6C462, 0x91A83991, 0x95A43195,
+0xE437D3E4, 0x798BF279, 0xE732D5E7, 0xC8438BC8, 0x37596E37, 0x6DB7DA6D,
+0x8D8C018D, 0xD564B1D5, 0x4ED29C4E, 0xA9E049A9, 0x6CB4D86C, 0x56FAAC56,
+0xF407F3F4, 0xEA25CFEA, 0x65AFCA65, 0x7A8EF47A, 0xAEE947AE, 0x08181008,
+0xBAD56FBA, 0x7888F078, 0x256F4A25, 0x2E725C2E, 0x1C24381C, 0xA6F157A6,
+0xB4C773B4, 0xC65197C6, 0xE823CBE8, 0xDD7CA1DD, 0x749CE874, 0x1F213E1F,
+0x4BDD964B, 0xBDDC61BD, 0x8B860D8B, 0x8A850F8A, 0x7090E070, 0x3E427C3E,
+0xB5C471B5, 0x66AACC66, 0x48D89048, 0x03050603, 0xF601F7F6, 0x0E121C0E,
+0x61A3C261, 0x355F6A35, 0x57F9AE57, 0xB9D069B9, 0x86911786, 0xC15899C1,
+0x1D273A1D, 0x9EB9279E, 0xE138D9E1, 0xF813EBF8, 0x98B32B98, 0x11332211,
+0x69BBD269, 0xD970A9D9, 0x8E89078E, 0x94A73394, 0x9BB62D9B, 0x1E223C1E,
+0x87921587, 0xE920C9E9, 0xCE4987CE, 0x55FFAA55, 0x28785028, 0xDF7AA5DF,
+0x8C8F038C, 0xA1F859A1, 0x89800989, 0x0D171A0D, 0xBFDA65BF, 0xE631D7E6,
+0x42C68442, 0x68B8D068, 0x41C38241, 0x99B02999, 0x2D775A2D, 0x0F111E0F,
+0xB0CB7BB0, 0x54FCA854, 0xBBD66DBB, 0x163A2C16 };
+
+const u32bit AES::TE3[256] = {
+0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6,
+0x6F6FB1DE, 0xC5C55491, 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56,
+0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, 0xCACA458F, 0x82829D1F,
+0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB,
+0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753,
+0x727296E4, 0xC0C05B9B, 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C,
+0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, 0x34345C68, 0xA5A5F451,
+0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A,
+0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137,
+0x05050F0A, 0x9A9AB52F, 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF,
+0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, 0x09091B12, 0x83839E1D,
+0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B,
+0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD,
+0x2F2F715E, 0x84849713, 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1,
+0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, 0x6A6ABED4, 0xCBCB468D,
+0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85,
+0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A,
+0x33335566, 0x85859411, 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE,
+0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, 0x5151F3A2, 0xA3A3FE5D,
+0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1,
+0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5,
+0xF3F30EFD, 0xD2D26DBF, 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3,
+0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, 0xC4C45793, 0xA7A7F255,
+0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6,
+0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54,
+0x9090AB3B, 0x8888830B, 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28,
+0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, 0xE0E03BDB, 0x32325664,
+0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8,
+0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431,
+0xE4E437D3, 0x79798BF2, 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA,
+0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, 0x6C6CB4D8, 0x5656FAAC,
+0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810,
+0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157,
+0xB4B4C773, 0xC6C65197, 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E,
+0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, 0x707090E0, 0x3E3E427C,
+0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C,
+0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899,
+0x1D1D273A, 0x9E9EB927, 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322,
+0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, 0x9B9BB62D, 0x1E1E223C,
+0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5,
+0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7,
+0x4242C684, 0x6868B8D0, 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E,
+0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C };
+
+const u32bit AES::TD0[256] = {
+0x51F4A750, 0x7E416553, 0x1A17A4C3, 0x3A275E96, 0x3BAB6BCB, 0x1F9D45F1,
+0xACFA58AB, 0x4BE30393, 0x2030FA55, 0xAD766DF6, 0x88CC7691, 0xF5024C25,
+0x4FE5D7FC, 0xC52ACBD7, 0x26354480, 0xB562A38F, 0xDEB15A49, 0x25BA1B67,
+0x45EA0E98, 0x5DFEC0E1, 0xC32F7502, 0x814CF012, 0x8D4697A3, 0x6BD3F9C6,
+0x038F5FE7, 0x15929C95, 0xBF6D7AEB, 0x955259DA, 0xD4BE832D, 0x587421D3,
+0x49E06929, 0x8EC9C844, 0x75C2896A, 0xF48E7978, 0x99583E6B, 0x27B971DD,
+0xBEE14FB6, 0xF088AD17, 0xC920AC66, 0x7DCE3AB4, 0x63DF4A18, 0xE51A3182,
+0x97513360, 0x62537F45, 0xB16477E0, 0xBB6BAE84, 0xFE81A01C, 0xF9082B94,
+0x70486858, 0x8F45FD19, 0x94DE6C87, 0x527BF8B7, 0xAB73D323, 0x724B02E2,
+0xE31F8F57, 0x6655AB2A, 0xB2EB2807, 0x2FB5C203, 0x86C57B9A, 0xD33708A5,
+0x302887F2, 0x23BFA5B2, 0x02036ABA, 0xED16825C, 0x8ACF1C2B, 0xA779B492,
+0xF307F2F0, 0x4E69E2A1, 0x65DAF4CD, 0x0605BED5, 0xD134621F, 0xC4A6FE8A,
+0x342E539D, 0xA2F355A0, 0x058AE132, 0xA4F6EB75, 0x0B83EC39, 0x4060EFAA,
+0x5E719F06, 0xBD6E1051, 0x3E218AF9, 0x96DD063D, 0xDD3E05AE, 0x4DE6BD46,
+0x91548DB5, 0x71C45D05, 0x0406D46F, 0x605015FF, 0x1998FB24, 0xD6BDE997,
+0x894043CC, 0x67D99E77, 0xB0E842BD, 0x07898B88, 0xE7195B38, 0x79C8EEDB,
+0xA17C0A47, 0x7C420FE9, 0xF8841EC9, 0x00000000, 0x09808683, 0x322BED48,
+0x1E1170AC, 0x6C5A724E, 0xFD0EFFFB, 0x0F853856, 0x3DAED51E, 0x362D3927,
+0x0A0FD964, 0x685CA621, 0x9B5B54D1, 0x24362E3A, 0x0C0A67B1, 0x9357E70F,
+0xB4EE96D2, 0x1B9B919E, 0x80C0C54F, 0x61DC20A2, 0x5A774B69, 0x1C121A16,
+0xE293BA0A, 0xC0A02AE5, 0x3C22E043, 0x121B171D, 0x0E090D0B, 0xF28BC7AD,
+0x2DB6A8B9, 0x141EA9C8, 0x57F11985, 0xAF75074C, 0xEE99DDBB, 0xA37F60FD,
+0xF701269F, 0x5C72F5BC, 0x44663BC5, 0x5BFB7E34, 0x8B432976, 0xCB23C6DC,
+0xB6EDFC68, 0xB8E4F163, 0xD731DCCA, 0x42638510, 0x13972240, 0x84C61120,
+0x854A247D, 0xD2BB3DF8, 0xAEF93211, 0xC729A16D, 0x1D9E2F4B, 0xDCB230F3,
+0x0D8652EC, 0x77C1E3D0, 0x2BB3166C, 0xA970B999, 0x119448FA, 0x47E96422,
+0xA8FC8CC4, 0xA0F03F1A, 0x567D2CD8, 0x223390EF, 0x87494EC7, 0xD938D1C1,
+0x8CCAA2FE, 0x98D40B36, 0xA6F581CF, 0xA57ADE28, 0xDAB78E26, 0x3FADBFA4,
+0x2C3A9DE4, 0x5078920D, 0x6A5FCC9B, 0x547E4662, 0xF68D13C2, 0x90D8B8E8,
+0x2E39F75E, 0x82C3AFF5, 0x9F5D80BE, 0x69D0937C, 0x6FD52DA9, 0xCF2512B3,
+0xC8AC993B, 0x10187DA7, 0xE89C636E, 0xDB3BBB7B, 0xCD267809, 0x6E5918F4,
+0xEC9AB701, 0x834F9AA8, 0xE6956E65, 0xAAFFE67E, 0x21BCCF08, 0xEF15E8E6,
+0xBAE79BD9, 0x4A6F36CE, 0xEA9F09D4, 0x29B07CD6, 0x31A4B2AF, 0x2A3F2331,
+0xC6A59430, 0x35A266C0, 0x744EBC37, 0xFC82CAA6, 0xE090D0B0, 0x33A7D815,
+0xF104984A, 0x41ECDAF7, 0x7FCD500E, 0x1791F62F, 0x764DD68D, 0x43EFB04D,
+0xCCAA4D54, 0xE49604DF, 0x9ED1B5E3, 0x4C6A881B, 0xC12C1FB8, 0x4665517F,
+0x9D5EEA04, 0x018C355D, 0xFA877473, 0xFB0B412E, 0xB3671D5A, 0x92DBD252,
+0xE9105633, 0x6DD64713, 0x9AD7618C, 0x37A10C7A, 0x59F8148E, 0xEB133C89,
+0xCEA927EE, 0xB761C935, 0xE11CE5ED, 0x7A47B13C, 0x9CD2DF59, 0x55F2733F,
+0x1814CE79, 0x73C737BF, 0x53F7CDEA, 0x5FFDAA5B, 0xDF3D6F14, 0x7844DB86,
+0xCAAFF381, 0xB968C43E, 0x3824342C, 0xC2A3405F, 0x161DC372, 0xBCE2250C,
+0x283C498B, 0xFF0D9541, 0x39A80171, 0x080CB3DE, 0xD8B4E49C, 0x6456C190,
+0x7BCB8461, 0xD532B670, 0x486C5C74, 0xD0B85742 };
+
+const u32bit AES::TD1[256] = {
+0x5051F4A7, 0x537E4165, 0xC31A17A4, 0x963A275E, 0xCB3BAB6B, 0xF11F9D45,
+0xABACFA58, 0x934BE303, 0x552030FA, 0xF6AD766D, 0x9188CC76, 0x25F5024C,
+0xFC4FE5D7, 0xD7C52ACB, 0x80263544, 0x8FB562A3, 0x49DEB15A, 0x6725BA1B,
+0x9845EA0E, 0xE15DFEC0, 0x02C32F75, 0x12814CF0, 0xA38D4697, 0xC66BD3F9,
+0xE7038F5F, 0x9515929C, 0xEBBF6D7A, 0xDA955259, 0x2DD4BE83, 0xD3587421,
+0x2949E069, 0x448EC9C8, 0x6A75C289, 0x78F48E79, 0x6B99583E, 0xDD27B971,
+0xB6BEE14F, 0x17F088AD, 0x66C920AC, 0xB47DCE3A, 0x1863DF4A, 0x82E51A31,
+0x60975133, 0x4562537F, 0xE0B16477, 0x84BB6BAE, 0x1CFE81A0, 0x94F9082B,
+0x58704868, 0x198F45FD, 0x8794DE6C, 0xB7527BF8, 0x23AB73D3, 0xE2724B02,
+0x57E31F8F, 0x2A6655AB, 0x07B2EB28, 0x032FB5C2, 0x9A86C57B, 0xA5D33708,
+0xF2302887, 0xB223BFA5, 0xBA02036A, 0x5CED1682, 0x2B8ACF1C, 0x92A779B4,
+0xF0F307F2, 0xA14E69E2, 0xCD65DAF4, 0xD50605BE, 0x1FD13462, 0x8AC4A6FE,
+0x9D342E53, 0xA0A2F355, 0x32058AE1, 0x75A4F6EB, 0x390B83EC, 0xAA4060EF,
+0x065E719F, 0x51BD6E10, 0xF93E218A, 0x3D96DD06, 0xAEDD3E05, 0x464DE6BD,
+0xB591548D, 0x0571C45D, 0x6F0406D4, 0xFF605015, 0x241998FB, 0x97D6BDE9,
+0xCC894043, 0x7767D99E, 0xBDB0E842, 0x8807898B, 0x38E7195B, 0xDB79C8EE,
+0x47A17C0A, 0xE97C420F, 0xC9F8841E, 0x00000000, 0x83098086, 0x48322BED,
+0xAC1E1170, 0x4E6C5A72, 0xFBFD0EFF, 0x560F8538, 0x1E3DAED5, 0x27362D39,
+0x640A0FD9, 0x21685CA6, 0xD19B5B54, 0x3A24362E, 0xB10C0A67, 0x0F9357E7,
+0xD2B4EE96, 0x9E1B9B91, 0x4F80C0C5, 0xA261DC20, 0x695A774B, 0x161C121A,
+0x0AE293BA, 0xE5C0A02A, 0x433C22E0, 0x1D121B17, 0x0B0E090D, 0xADF28BC7,
+0xB92DB6A8, 0xC8141EA9, 0x8557F119, 0x4CAF7507, 0xBBEE99DD, 0xFDA37F60,
+0x9FF70126, 0xBC5C72F5, 0xC544663B, 0x345BFB7E, 0x768B4329, 0xDCCB23C6,
+0x68B6EDFC, 0x63B8E4F1, 0xCAD731DC, 0x10426385, 0x40139722, 0x2084C611,
+0x7D854A24, 0xF8D2BB3D, 0x11AEF932, 0x6DC729A1, 0x4B1D9E2F, 0xF3DCB230,
+0xEC0D8652, 0xD077C1E3, 0x6C2BB316, 0x99A970B9, 0xFA119448, 0x2247E964,
+0xC4A8FC8C, 0x1AA0F03F, 0xD8567D2C, 0xEF223390, 0xC787494E, 0xC1D938D1,
+0xFE8CCAA2, 0x3698D40B, 0xCFA6F581, 0x28A57ADE, 0x26DAB78E, 0xA43FADBF,
+0xE42C3A9D, 0x0D507892, 0x9B6A5FCC, 0x62547E46, 0xC2F68D13, 0xE890D8B8,
+0x5E2E39F7, 0xF582C3AF, 0xBE9F5D80, 0x7C69D093, 0xA96FD52D, 0xB3CF2512,
+0x3BC8AC99, 0xA710187D, 0x6EE89C63, 0x7BDB3BBB, 0x09CD2678, 0xF46E5918,
+0x01EC9AB7, 0xA8834F9A, 0x65E6956E, 0x7EAAFFE6, 0x0821BCCF, 0xE6EF15E8,
+0xD9BAE79B, 0xCE4A6F36, 0xD4EA9F09, 0xD629B07C, 0xAF31A4B2, 0x312A3F23,
+0x30C6A594, 0xC035A266, 0x37744EBC, 0xA6FC82CA, 0xB0E090D0, 0x1533A7D8,
+0x4AF10498, 0xF741ECDA, 0x0E7FCD50, 0x2F1791F6, 0x8D764DD6, 0x4D43EFB0,
+0x54CCAA4D, 0xDFE49604, 0xE39ED1B5, 0x1B4C6A88, 0xB8C12C1F, 0x7F466551,
+0x049D5EEA, 0x5D018C35, 0x73FA8774, 0x2EFB0B41, 0x5AB3671D, 0x5292DBD2,
+0x33E91056, 0x136DD647, 0x8C9AD761, 0x7A37A10C, 0x8E59F814, 0x89EB133C,
+0xEECEA927, 0x35B761C9, 0xEDE11CE5, 0x3C7A47B1, 0x599CD2DF, 0x3F55F273,
+0x791814CE, 0xBF73C737, 0xEA53F7CD, 0x5B5FFDAA, 0x14DF3D6F, 0x867844DB,
+0x81CAAFF3, 0x3EB968C4, 0x2C382434, 0x5FC2A340, 0x72161DC3, 0x0CBCE225,
+0x8B283C49, 0x41FF0D95, 0x7139A801, 0xDE080CB3, 0x9CD8B4E4, 0x906456C1,
+0x617BCB84, 0x70D532B6, 0x74486C5C, 0x42D0B857 };
+
+const u32bit AES::TD2[256] = {
+0xA75051F4, 0x65537E41, 0xA4C31A17, 0x5E963A27, 0x6BCB3BAB, 0x45F11F9D,
+0x58ABACFA, 0x03934BE3, 0xFA552030, 0x6DF6AD76, 0x769188CC, 0x4C25F502,
+0xD7FC4FE5, 0xCBD7C52A, 0x44802635, 0xA38FB562, 0x5A49DEB1, 0x1B6725BA,
+0x0E9845EA, 0xC0E15DFE, 0x7502C32F, 0xF012814C, 0x97A38D46, 0xF9C66BD3,
+0x5FE7038F, 0x9C951592, 0x7AEBBF6D, 0x59DA9552, 0x832DD4BE, 0x21D35874,
+0x692949E0, 0xC8448EC9, 0x896A75C2, 0x7978F48E, 0x3E6B9958, 0x71DD27B9,
+0x4FB6BEE1, 0xAD17F088, 0xAC66C920, 0x3AB47DCE, 0x4A1863DF, 0x3182E51A,
+0x33609751, 0x7F456253, 0x77E0B164, 0xAE84BB6B, 0xA01CFE81, 0x2B94F908,
+0x68587048, 0xFD198F45, 0x6C8794DE, 0xF8B7527B, 0xD323AB73, 0x02E2724B,
+0x8F57E31F, 0xAB2A6655, 0x2807B2EB, 0xC2032FB5, 0x7B9A86C5, 0x08A5D337,
+0x87F23028, 0xA5B223BF, 0x6ABA0203, 0x825CED16, 0x1C2B8ACF, 0xB492A779,
+0xF2F0F307, 0xE2A14E69, 0xF4CD65DA, 0xBED50605, 0x621FD134, 0xFE8AC4A6,
+0x539D342E, 0x55A0A2F3, 0xE132058A, 0xEB75A4F6, 0xEC390B83, 0xEFAA4060,
+0x9F065E71, 0x1051BD6E, 0x8AF93E21, 0x063D96DD, 0x05AEDD3E, 0xBD464DE6,
+0x8DB59154, 0x5D0571C4, 0xD46F0406, 0x15FF6050, 0xFB241998, 0xE997D6BD,
+0x43CC8940, 0x9E7767D9, 0x42BDB0E8, 0x8B880789, 0x5B38E719, 0xEEDB79C8,
+0x0A47A17C, 0x0FE97C42, 0x1EC9F884, 0x00000000, 0x86830980, 0xED48322B,
+0x70AC1E11, 0x724E6C5A, 0xFFFBFD0E, 0x38560F85, 0xD51E3DAE, 0x3927362D,
+0xD9640A0F, 0xA621685C, 0x54D19B5B, 0x2E3A2436, 0x67B10C0A, 0xE70F9357,
+0x96D2B4EE, 0x919E1B9B, 0xC54F80C0, 0x20A261DC, 0x4B695A77, 0x1A161C12,
+0xBA0AE293, 0x2AE5C0A0, 0xE0433C22, 0x171D121B, 0x0D0B0E09, 0xC7ADF28B,
+0xA8B92DB6, 0xA9C8141E, 0x198557F1, 0x074CAF75, 0xDDBBEE99, 0x60FDA37F,
+0x269FF701, 0xF5BC5C72, 0x3BC54466, 0x7E345BFB, 0x29768B43, 0xC6DCCB23,
+0xFC68B6ED, 0xF163B8E4, 0xDCCAD731, 0x85104263, 0x22401397, 0x112084C6,
+0x247D854A, 0x3DF8D2BB, 0x3211AEF9, 0xA16DC729, 0x2F4B1D9E, 0x30F3DCB2,
+0x52EC0D86, 0xE3D077C1, 0x166C2BB3, 0xB999A970, 0x48FA1194, 0x642247E9,
+0x8CC4A8FC, 0x3F1AA0F0, 0x2CD8567D, 0x90EF2233, 0x4EC78749, 0xD1C1D938,
+0xA2FE8CCA, 0x0B3698D4, 0x81CFA6F5, 0xDE28A57A, 0x8E26DAB7, 0xBFA43FAD,
+0x9DE42C3A, 0x920D5078, 0xCC9B6A5F, 0x4662547E, 0x13C2F68D, 0xB8E890D8,
+0xF75E2E39, 0xAFF582C3, 0x80BE9F5D, 0x937C69D0, 0x2DA96FD5, 0x12B3CF25,
+0x993BC8AC, 0x7DA71018, 0x636EE89C, 0xBB7BDB3B, 0x7809CD26, 0x18F46E59,
+0xB701EC9A, 0x9AA8834F, 0x6E65E695, 0xE67EAAFF, 0xCF0821BC, 0xE8E6EF15,
+0x9BD9BAE7, 0x36CE4A6F, 0x09D4EA9F, 0x7CD629B0, 0xB2AF31A4, 0x23312A3F,
+0x9430C6A5, 0x66C035A2, 0xBC37744E, 0xCAA6FC82, 0xD0B0E090, 0xD81533A7,
+0x984AF104, 0xDAF741EC, 0x500E7FCD, 0xF62F1791, 0xD68D764D, 0xB04D43EF,
+0x4D54CCAA, 0x04DFE496, 0xB5E39ED1, 0x881B4C6A, 0x1FB8C12C, 0x517F4665,
+0xEA049D5E, 0x355D018C, 0x7473FA87, 0x412EFB0B, 0x1D5AB367, 0xD25292DB,
+0x5633E910, 0x47136DD6, 0x618C9AD7, 0x0C7A37A1, 0x148E59F8, 0x3C89EB13,
+0x27EECEA9, 0xC935B761, 0xE5EDE11C, 0xB13C7A47, 0xDF599CD2, 0x733F55F2,
+0xCE791814, 0x37BF73C7, 0xCDEA53F7, 0xAA5B5FFD, 0x6F14DF3D, 0xDB867844,
+0xF381CAAF, 0xC43EB968, 0x342C3824, 0x405FC2A3, 0xC372161D, 0x250CBCE2,
+0x498B283C, 0x9541FF0D, 0x017139A8, 0xB3DE080C, 0xE49CD8B4, 0xC1906456,
+0x84617BCB, 0xB670D532, 0x5C74486C, 0x5742D0B8 };
+
+const u32bit AES::TD3[256] = {
+0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F,
+0xFA58ABAC, 0xE303934B, 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5,
+0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, 0xB15A49DE, 0xBA1B6725,
+0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B,
+0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358,
+0xE0692949, 0xC9C8448E, 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27,
+0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, 0xDF4A1863, 0x1A3182E5,
+0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9,
+0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272,
+0x1F8F57E3, 0x55AB2A66, 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3,
+0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, 0xCF1C2B8A, 0x79B492A7,
+0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4,
+0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40,
+0x719F065E, 0x6E1051BD, 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D,
+0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, 0x98FB2419, 0xBDE997D6,
+0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79,
+0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832,
+0x1170AC1E, 0x5A724E6C, 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736,
+0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, 0x0A67B10C, 0x57E70F93,
+0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C,
+0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2,
+0xB6A8B92D, 0x1EA9C814, 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3,
+0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, 0x4329768B, 0x23C6DCCB,
+0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084,
+0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC,
+0x8652EC0D, 0xC1E3D077, 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247,
+0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, 0x494EC787, 0x38D1C1D9,
+0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F,
+0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890,
+0x39F75E2E, 0xC3AFF582, 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF,
+0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, 0x267809CD, 0x5918F46E,
+0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF,
+0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A,
+0xA59430C6, 0xA266C035, 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533,
+0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, 0x4DD68D76, 0xEFB04D43,
+0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46,
+0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292,
+0x105633E9, 0xD647136D, 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB,
+0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, 0xD2DF599C, 0xF2733F55,
+0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678,
+0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC,
+0x3C498B28, 0x0D9541FF, 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064,
+0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 };
+
+}
--- botan/algolist.cpp
+++ botan/algolist.cpp
@@ -0,0 +1,162 @@
+/*************************************************
+* Algorithms List Source File *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#include
+
+#include
+
+#include
+
+#include
+#include
+
+#include
+
+#include
+
+namespace Botan {
+
+namespace Algolist {
+
+/*************************************************
+* Some macros to simplify control flow *
+*************************************************/
+#define HANDLE_TYPE_NO_ARGS(NAME, TYPE) \
+ if(algo_name == NAME) \
+ { \
+ if(name.size() == 1) \
+ return new TYPE; \
+ throw Invalid_Algorithm_Name(algo_spec); \
+ }
+
+#define HANDLE_TYPE_ONE_U32BIT(NAME, TYPE, DEFAULT) \
+ if(algo_name == NAME) \
+ { \
+ if(name.size() == 1) \
+ return new TYPE(DEFAULT); \
+ if(name.size() == 2) \
+ return new TYPE(to_u32bit(name[1])); \
+ throw Invalid_Algorithm_Name(algo_spec); \
+ }
+
+#define HANDLE_TYPE_TWO_U32BIT(NAME, TYPE, DEFAULT) \
+ if(algo_name == NAME) \
+ { \
+ if(name.size() == 1) \
+ return new TYPE(DEFAULT); \
+ if(name.size() == 2) \
+ return new TYPE(to_u32bit(name[1])); \
+ if(name.size() == 3) \
+ return new TYPE(to_u32bit(name[1]), to_u32bit(name[2])); \
+ throw Invalid_Algorithm_Name(algo_spec); \
+ }
+
+#define HANDLE_TYPE_ONE_STRING(NAME, TYPE) \
+ if(algo_name == NAME) \
+ { \
+ if(name.size() == 2) \
+ return new TYPE(name[1]); \
+ throw Invalid_Algorithm_Name(algo_spec); \
+ }
+
+/*************************************************
+* Attempt to get a block cipher object *
+*************************************************/
+BlockCipher* get_block_cipher(const std::string& algo_spec)
+ {
+ std::vector name = parse_algorithm_name(algo_spec);
+ if(name.size() == 0)
+ return 0;
+ const std::string algo_name = deref_alias(name[0]);
+
+ HANDLE_TYPE_NO_ARGS("AES", AES);
+ HANDLE_TYPE_NO_ARGS("AES-128", AES_128);
+ HANDLE_TYPE_NO_ARGS("AES-192", AES_192);
+ HANDLE_TYPE_NO_ARGS("AES-256", AES_256);
+
+ return 0;
+ }
+
+/*************************************************
+* Attempt to get a stream cipher object *
+*************************************************/
+StreamCipher* get_stream_cipher(const std::string& algo_spec)
+ {
+ std::vector name = parse_algorithm_name(algo_spec);
+ if(name.size() == 0)
+ return 0;
+ const std::string algo_name = deref_alias(name[0]);
+
+ HANDLE_TYPE_ONE_U32BIT("ARC4", ARC4, 0);
+ HANDLE_TYPE_ONE_U32BIT("RC4_drop", ARC4, 768);
+
+ return 0;
+ }
+
+/*************************************************
+* Attempt to get a hash function object *
+*************************************************/
+HashFunction* get_hash(const std::string& algo_spec)
+ {
+ std::vector name = parse_algorithm_name(algo_spec);
+ if(name.size() == 0)
+ return 0;
+ const std::string algo_name = deref_alias(name[0]);
+
+ HANDLE_TYPE_NO_ARGS("CRC32", CRC32);
+ HANDLE_TYPE_NO_ARGS("SHA-160", SHA_160);
+
+ return 0;
+ }
+
+/*************************************************
+* Attempt to get an authentication code object *
+*************************************************/
+MessageAuthenticationCode* get_mac(const std::string& algo_spec)
+ {
+ std::vector name = parse_algorithm_name(algo_spec);
+ if(name.size() == 0)
+ return 0;
+ const std::string algo_name = deref_alias(name[0]);
+
+ HANDLE_TYPE_ONE_STRING("HMAC", HMAC);
+
+ return 0;
+ }
+
+/*************************************************
+* Attempt to get a string to key object *
+*************************************************/
+S2K* get_s2k(const std::string& algo_spec)
+ {
+ std::vector name = parse_algorithm_name(algo_spec);
+ if(name.size() == 0)
+ return 0;
+ const std::string algo_name = deref_alias(name[0]);
+
+ return 0;
+ }
+
+/*************************************************
+* Attempt to get a block cipher padding method *
+*************************************************/
+BlockCipherModePaddingMethod* get_bc_pad(const std::string& algo_spec)
+ {
+ std::vector name = parse_algorithm_name(algo_spec);
+ if(name.size() == 0)
+ return 0;
+ const std::string algo_name = deref_alias(name[0]);
+
+ HANDLE_TYPE_NO_ARGS("PKCS7", PKCS7_Padding);
+ HANDLE_TYPE_NO_ARGS("OneAndZeros", OneAndZeros_Padding);
+ HANDLE_TYPE_NO_ARGS("X9.23", ANSI_X923_Padding);
+ HANDLE_TYPE_NO_ARGS("NoPadding", Null_Padding);
+
+ return 0;
+ }
+
+}
+
+}
--- botan/algolist.h
+++ botan/algolist.h
@@ -0,0 +1,31 @@
+/*************************************************
+* Algorithm Lookup Table Header File *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#ifndef BOTAN_ALGOLIST_H__
+#define BOTAN_ALGOLIST_H__
+
+#include
+#include
+#include
+
+namespace Botan {
+
+namespace Algolist {
+
+/*************************************************
+* Lookup an algorithm in the table *
+*************************************************/
+BlockCipher* get_block_cipher(const std::string&);
+StreamCipher* get_stream_cipher(const std::string&);
+HashFunction* get_hash(const std::string&);
+MessageAuthenticationCode* get_mac(const std::string&);
+S2K* get_s2k(const std::string&);
+BlockCipherModePaddingMethod* get_bc_pad(const std::string&);
+
+}
+
+}
+
+#endif
--- botan/allocate.cpp
+++ botan/allocate.cpp
@@ -0,0 +1,162 @@
+/*************************************************
+* Allocator Factory Source File *
+* (C) 1999-2004 The Botan Project *
+*************************************************/
+
+#include
+#include
+#include
+#include
+#include
+#include