The unified diff between revisions [636b767b..] and [cbf9e103..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "checks/pk.cpp"
#  from [306b221e18047cb7245a057e775e387d3e7843cf]
#    to [29d3ee1e629ecb164b57caf11f80703043ec1bbe]
#
# patch "doc/log.txt"
#  from [0b9e0e5499ad25cc3ba9b6e7253c93882e68d105]
#    to [f05061923c6fe2798825a82b9cce2b7a7cd3fa28]
#
# patch "include/adler32.h"
#  from [3fb3da1fd6fad8255838631b150dc0ce05efd2cd]
#    to [d0efdb2ca6a2312ef2e2abeba1c110fc15c888e8]
#
# patch "include/aes.h"
#  from [c435704aba7109c47f3a6eb1cd2de292c2d0eca4]
#    to [f21a206b14c737acaa124f04c104e1d5daaee5ae]
#
# patch "include/alg_id.h"
#  from [f35b1fa8eb93f5342db03e2d8bf216cc50e51e24]
#    to [92a1557cfb909aded041463da82d4906b2298928]
#
# patch "include/allocate.h"
#  from [2670420b0e017d31c381021c0b7f1d1866fbab55]
#    to [0f4769a449df515dc1a468eb0b5d06d20fc02148]
#
# patch "include/arc4.h"
#  from [aebe572be0beee98e6c0ed6577157c5b7273d40b]
#    to [01b224e18d457df1b42a24b30fee9a937dd84f13]
#
# patch "include/asn1_int.h"
#  from [73aba9e43f1440e3ca44425e159173815f174f8e]
#    to [5caaae2713c3f14a3a4508263e52bc3331674c36]
#
# patch "include/asn1_obj.h"
#  from [79894e23c4ab45f61b30583b94444f6079e252e5]
#    to [689ebbff1a5254e49f3cd7baa5a9fe82d9b082f6]
#
# patch "include/asn1_oid.h"
#  from [23e21c30ec13da88cc841e270021519c5229d5b5]
#    to [6e4b868ccc447a35b13af5575146d38cc145e05f]
#
# patch "include/base.h"
#  from [0dfe04238a2d8f7f9354f07a4a41ed758d2b596a]
#    to [54a99ec584afb04330ebe7b6c2baaca06a0c0246]
#
# patch "include/base64.h"
#  from [d1f12f08c64810dd5901cca8902bd3d9bec1bec8]
#    to [3155e46ef5f905472ba75bfcf21a3347405175cf]
#
# patch "include/basefilt.h"
#  from [3c60162d57d6362585bd2a0a6ba609c69848ee3b]
#    to [efa2ea51c6eee5fd064a1f0b88084009313ce9e5]
#
# patch "include/ber_dec.h"
#  from [bbf9928c67e9657232a99f2153430f93dd29abd6]
#    to [90a3ca1bab5637490b05f6dce57aca75fc794b01]
#
# patch "include/bigint.h"
#  from [ed1927cc126f73b40fe47039e6c98261a19fd002]
#    to [fb6bdbaf9256d243c2a40b877fbb572986b76b77]
#
# patch "include/blinding.h"
#  from [a21d259830b078b0e8f3ba76c48a66b92247204c]
#    to [dde8b94457fefaf91016cd617dc7590c3bbf9529]
#
# patch "include/blowfish.h"
#  from [09a78b0f7a4c5456346540885931b7504f35bd79]
#    to [d910c2b54b87c511ac9f21f1254e72ed24e5fa82]
#
# patch "include/buf_es.h"
#  from [bf69fc56fb8169929d529afc2e911f954408a838]
#    to [6d0b85ee23b95511cca43e7754a65494d8553b0c]
#
# patch "include/buf_filt.h"
#  from [9a6e15cd22d291c03af283ec5d723b1f04f7d482]
#    to [a87ed4badce2ec906b1e048e3d876f629a525f10]
#
# patch "include/cast128.h"
#  from [04f8ca07c0f6e1829f70f2eaebf153c4df36fc09]
#    to [3ab5011603389f700aa77e2b3b7d2529b8c3648e]
#
# patch "include/cast256.h"
#  from [a42b17aab8fb3bfe958d0842e2bcd962cdf4bd8e]
#    to [2a0689608d851aa9bd85a97dd38043fa89017a04]
#
# patch "include/cbc.h"
#  from [f4651ab650fe65917932c36f9345bed021fb5556]
#    to [df71821e246ae7b793787d4de94c1caae4659c5f]
#
# patch "include/cbc_mac.h"
#  from [0e97c1d1ff160caff0e75b3b20ff6d6c089c236a]
#    to [d27531534d83b3bb9b20177c27a03cc96acd858d]
#
# patch "include/certstor.h"
#  from [df804a2c3adf5c23baa2b03d71452b7713eda226]
#    to [4f44d45129289f39e37c3dff1c2397d585c77656]
#
# patch "include/cfb.h"
#  from [c16cbb250f291241cd804869085cda04369136a2]
#    to [d6fcd294c41d8665b191c69e4964ba79ac084b61]
#
# patch "include/charset.h"
#  from [d14be390cbcd1b0b0a33005c0c6b2165c66fd8b1]
#    to [58f38717c996835f6110b4c932b0df98032a0fbe]
#
# patch "include/cmac.h"
#  from [18c144695270cfa27f065ca94c48f119534c5c83]
#    to [4e32fba357c2b62e83e5316f47fc4d5c587a82b5]
#
# patch "include/config.h"
#  from [229617bc66e109964fa682dfa11dee54b39c9c48]
#    to [5acbd2e041ef13562c85e988834f2b252c3c5a9d]
#
# patch "include/crc24.h"
#  from [d7750f1c09b0f34e07dc4331b8b1e96d80f838fe]
#    to [05f71a16d271e548513abb74854b9f5da9dbbf24]
#
# patch "include/crc32.h"
#  from [9690b6ac67b4af3bf93e685a87f5e47ad7ffe8de]
#    to [ecffda4a723a75444b477e2e37bdd24d1c8656e1]
#
# patch "include/crl_ent.h"
#  from [a40e0b1fa6be72627250db0ea2deec3b3fac7a80]
#    to [ed0bbb9460910d21f367e8ace0286cf93c520db9]
#
# patch "include/ctr.h"
#  from [f2c4136e4461600e4f34e88296b412dc3f5819b7]
#    to [7783b5e3e59dd949a5c0a4af1cd8c3abe46a9c17]
#
# patch "include/cts.h"
#  from [363763a5730bd19dd68435d3f0e1d7abbf4322e4]
#    to [77fdfabc32ea2a733a82947cca8c1795de7c49d4]
#
# patch "include/data_snk.h"
#  from [1b779375cae6bd6c59ef048d1b16b2083d3f3747]
#    to [f5b662f62ade0945865ab4f9edb5a3bae9103b96]
#
# patch "include/data_src.h"
#  from [47b6e0c2a1dea94812f82fd4b0150e1f24619adb]
#    to [e021a46396a1b8fd0a933c115d53a8fa0543e225]
#
# patch "include/datastor.h"
#  from [69e03208c5349e6a84e40084be42c32770ce3d73]
#    to [099bbbabbff92013990fdb0ac8e96dccddfb7732]
#
# patch "include/def_powm.h"
#  from [b8fd1233ac5e90aea858ff83bcc53ad9e93a0ce6]
#    to [441262d6c635e3dc9678bb0fb1b725fb1cabca99]
#
# patch "include/defalloc.h"
#  from [90dbc79dca64e726dea513adbd09bceb47414299]
#    to [c983a1a75c83af8737ecfbe70770e22aed71d4c6]
#
# patch "include/der_enc.h"
#  from [c9c32338023d05e61e061ed29a357bf8ec1f5d98]
#    to [2bd34135e89958c97778e92d5206b2b411887961]
#
# patch "include/des.h"
#  from [4e46ca0119049b63d8ec93f35efd598e4473ba14]
#    to [bf36f106a5d21d182633280efaf4db5aca06517a]
#
# patch "include/dh.h"
#  from [b46595551fbb9db58536e780f0367d5a0d576e8d]
#    to [1f8c9ae4e3e47eb54bf37dd5830feefe33fce1d3]
#
# patch "include/dl_algo.h"
#  from [1f443e80cacfcedd444b4c0cf43528823b8736ab]
#    to [c6c8ab1cc99d09053aa3e887ed0f31d23f029b79]
#
# patch "include/dl_group.h"
#  from [01226cb8248f76ca5b1d587ab42ff1d849eef994]
#    to [2402780054b58ab40f961f2600695a19461df17b]
#
# patch "include/dlies.h"
#  from [2d4210fab2308626bd6f8c08a3f4596be6776200]
#    to [ba8018d6681f084e1fabfab66903260939bec948]
#
# patch "include/dsa.h"
#  from [669645224181beb0dd4cd2b973177c32101598c5]
#    to [03ca791b177eb9709d13a5f79181a157bca0aa4d]
#
# patch "include/eax.h"
#  from [a9a6b7d9ce355e1362719185e093ef91c48b40fa]
#    to [66acdb5b8c0a5552f01ffd2127383864737801d1]
#
# patch "include/ecb.h"
#  from [b720b7718d5d1f7a163f9cea7b19de343972b872]
#    to [f48d0a49b4d848d4707e93c4112aeea0620e4d25]
#
# patch "include/elgamal.h"
#  from [0494d9ec66400a456f6f0638f8473c23ae59507f]
#    to [ae94744be2a6ed1bad2c8485f49b77fb4423ed2d]
#
# patch "include/eme.h"
#  from [0ec41143810e3e55630da3f66a493ed3e847fa70]
#    to [28df8ed20f752944ed6db8d8d4b240070381e358]
#
# patch "include/emsa.h"
#  from [0f92faa34612455ed98f727223a3327e2f21a48c]
#    to [9a72ffbf9550acf6251278a4162adbc375afa7a2]
#
# patch "include/eng_def.h"
#  from [8aa36afc93ca4981ef72d0650accabc49412763a]
#    to [78c95898dc88c426b88c79e21a8b072bfcd77c59]
#
# patch "include/engine.h"
#  from [710e662f21035b9fd98b1da15430b043d33273d4]
#    to [c0145b11930a092ae19f24be691b052aaa15f03c]
#
# patch "include/exceptn.h"
#  from [c336850fda55455f8dbfa05deb12d85b0fa1a081]
#    to [6c8eb39d95fc61a0a1bf2201f053811c61e9623d]
#
# patch "include/filter.h"
#  from [c1df7bb407f4e3aebf3038583ddef572ee805899]
#    to [c36b3a90313dae0e423930a7249e36e9ca8742f0]
#
# patch "include/filters.h"
#  from [94d4f6b8d86cd9ce0521c0824decafaa625949b1]
#    to [50d68a0509271b1a7a27ebd741b9c12ce4491019]
#
# patch "include/fork256.h"
#  from [48d316c02d0498c1f8511227f6d3712f8e788ea8]
#    to [48009420dee58362718e076efe4f96b6b776ff2c]
#
# patch "include/gost.h"
#  from [2258c8299c56e86e46324b2ecebf38d05827ad02]
#    to [8bab6eb0bbff3ddda38f52bd1c373f63b4d94225]
#
# patch "include/has160.h"
#  from [302e61763c91ef37ca82c6fedc47c44b170ed225]
#    to [cc1fc7609b6af354ce39184b20f8ff87dc3e5a2b]
#
# patch "include/hash_id.h"
#  from [87da714dcec8f4fabdba63c86021e0dd641e75f8]
#    to [4dc7493061e94d973d823b28fcd226b8842dd81e]
#
# patch "include/hex.h"
#  from [65ff3d841d7a7d4506b99d175c9a8e4112794409]
#    to [462c74e4913e272f052a3fb27f3a7235ba54655a]
#
# patch "include/hmac.h"
#  from [f86ca2b60fe40cbae9ba1a5a02ea85c6a0cb2ca5]
#    to [536a96d1baa456d63ea688d2304ea8c8f54b5f6e]
#
# patch "include/idea.h"
#  from [789b9471a535847a0ff19af71bebbc8514fb535d]
#    to [f6b0ab5d54fb7a7f5e432feaa7e7cfa0da58753f]
#
# patch "include/if_algo.h"
#  from [26d6793a1eb3c64a252713d32a188808e64cb92c]
#    to [72be1c5cf84e117cc018604a352f686dd18564c1]
#
# patch "include/init.h"
#  from [bb896dab46a2ed1a6bbb6c2b2db629392b708bc7]
#    to [9e6c95b53667ca383d2b21876e09f873f2cc76af]
#
# patch "include/kasumi.h"
#  from [5b4ae12fa8e6eec6bb32e8e76e7140783a71857f]
#    to [c6a4b45d4a6401a2d07fca50f7617e18d9a14755]
#
# patch "include/kdf.h"
#  from [fbbd508477b8940b1d3d30e328539aa374abf25f]
#    to [a96cb1a3021c86215894c15c592eea114ce5463d]
#
# patch "include/keypair.h"
#  from [a4fc8eaa2d42b50ef6985927bac5cd225603585c]
#    to [791ce22bbca12caf243ea25be1c198812fef5c7f]
#
# patch "include/libstate.h"
#  from [f08d397ce253b7d175d4dfc30ccd9f1ddee48279]
#    to [cc522cb9ab803f77a13c05a42addb46e0272cdcc]
#
# patch "include/lion.h"
#  from [21f4eb78b1157e3f1a2e768a24126c5ad16afae3]
#    to [96827aa862aa07afdd27a66730801505cf09cfbb]
#
# patch "include/look_add.h"
#  from [a6139b72698a8375f498a3732c93eb8f78e0cb59]
#    to [bcf3daba9def147a2eb6a390df5d2fbfd2b15211]
#
# patch "include/look_pk.h"
#  from [9f0be0116eb7318ea14fc49d62c95714a5906084]
#    to [33fa10847c9877ffff67c27416d280f3a703bc10]
#
# patch "include/lookup.h"
#  from [44bc6863bfbca4c97f91dcf16968ea7fb591e39e]
#    to [2dfd127a84eb9858a688b1ec0ba12a3fb5bd3e51]
#
# patch "include/lubyrack.h"
#  from [fbfd6400449127148719a3e318ad1ba966767b50]
#    to [ecd39682fd0eaef7bedf64275115a76bb798e732]
#
# patch "include/mars.h"
#  from [469d88ccc99e609f5d50532d54aaee767de9bd6e]
#    to [230be6c52db65a2080e9c604590de770bdfb3018]
#
# patch "include/md2.h"
#  from [12453da653d5346f90ffbff6e0cd34a2846758bc]
#    to [246b0f8a492bd5ec344ff01373d50061d5d6d3ea]
#
# patch "include/md4.h"
#  from [909ca8f155ca017ef83074de3dccd7c9db0aad9a]
#    to [347e2be66179bd81404b9abc065157aa56dbf174]
#
# patch "include/md5.h"
#  from [c973e1bdacfd87fbecebf40bb14df7fecf18550f]
#    to [125ffbdbf8c145f70f0f1f9ed6341d83d5be1a68]
#
# patch "include/mdx_hash.h"
#  from [1795bfa7e387450ac265a0c08e45c26f37d1e8db]
#    to [0deccb5b5224b5f7c3bfba95651511f09f1c8b60]
#
# patch "include/mem_pool.h"
#  from [9774f7b2377e171ed9514eece50d9e06ea0e294c]
#    to [b05125f505c3f2602092699f033c4698f71f4935]
#
# patch "include/mgf1.h"
#  from [739fd112a61fb2dee76686df803894ab66d89e23]
#    to [7359b8d5d3e3ff0daf8f2d23b40581ce64e7ff72]
#
# patch "include/misty1.h"
#  from [d5e3816ba1620937942ebab5f8b6fc5f3d6d2e47]
#    to [f67e5eced26a586d05e7735928d382caeba25ed1]
#
# patch "include/mode_pad.h"
#  from [f45ed8bd18c780b9add92026f95f48e7964e3659]
#    to [3026a91c78ca5ed4b184ac7db2aa50be37108111]
#
# patch "include/modebase.h"
#  from [b7d42f6b00ab46a455075841defa314965c3deee]
#    to [056f174f9f5503b2de49bfa152c1597f809aba5a]
#
# patch "include/modules.h"
#  from [f9acec52a4673e8190322182af16df37231aa2dc]
#    to [dd2710c408c7a116b96db31d53b8fdcee5a65e31]
#
# patch "include/mutex.h"
#  from [f2e5f4862473ea61f881881680763ba8e285312b]
#    to [3fa990bcefeb4ee32990a95a9e8ac0d2a10abb86]
#
# patch "include/nr.h"
#  from [0a8b524f2188039570234d9702312081c78d97ef]
#    to [e9523c6c77eb71f2fc01199b2237cb527dd0e53c]
#
# patch "include/numthry.h"
#  from [2c9588397a71ce950009190f87efb76966715d67]
#    to [15ce975e8d3dd7f3b0499a67c4a66ced254fa5bd]
#
# patch "include/ofb.h"
#  from [7c91fb7eb35104d80e8da125cc6f1b4b3bc82471]
#    to [bc5a889f33acd616c2ba1b28bed0b069eee277cd]
#
# patch "include/oids.h"
#  from [a65a9ade8866b65236b4db2a3f6a109b6789db8b]
#    to [ad753b3ee7bd56616a54a36511d17b84320d7e53]
#
# patch "include/openpgp.h"
#  from [f367f621d92d5d9ba2eac2ada5ffb5c3cd235d18]
#    to [6d06d258db32629ddeca5facae94581dbda65314]
#
# patch "include/out_buf.h"
#  from [321d65539815403e698962aad7fb985088e9c17e]
#    to [c845c5752405c83005bc813f6a3b6406b4a76e10]
#
# patch "include/par_hash.h"
#  from [69e03b769368ea1a41bf500095bb2d448ed332b9]
#    to [4579c4a4e194721934a52f17cd7dce7e0cdcf874]
#
# patch "include/parsing.h"
#  from [cb2aa56649d2ce1d1ee8f417bea7f8afd70b826e]
#    to [495ba5383d508f77387155181abc7c82548238d8]
#
# patch "include/pbe.h"
#  from [e2bce5b3ea8490d42c75c9bd2411b7327905a6f6]
#    to [c857ae798130c367ad3e63f3890adf18833c4b46]
#
# patch "include/pbe_pkcs.h"
#  from [c14e46545178cf2314d6e50045d58417e9f231be]
#    to [248bcd00abf4a4a4b5738c0f96efd110d2ed2ad1]
#
# patch "include/pem.h"
#  from [5acd12644cddbbb42668df078a31361ffdda9505]
#    to [efcb8fb44e315de344c0042d4a1dc40a2b3e8f91]
#
# patch "include/pgp_s2k.h"
#  from [72ef2328cc0b67f4da05bed4e0421239ac8b7364]
#    to [59db0e6234f33a0388b7c6136c9cd8de33682263]
#
# patch "include/pipe.h"
#  from [c733084b07188bad226ec8753f69c661c5284eb6]
#    to [9e03557d153485d83b482f075898718d3617b946]
#
# patch "include/pk_algs.h"
#  from [819a072a7a78e6b971d00b29dadcb8b2c6fad806]
#    to [1a6cd0f2d5098b39fbf2f633d53dce8d9b8a2403]
#
# patch "include/pk_core.h"
#  from [06f6efed8059bdbffca6fc2456fb065e99266589]
#    to [258d5e98a242fd2f27c67adadf524ba32b22e744]
#
# patch "include/pk_filts.h"
#  from [eb898f72d49c8e308308bd9904543f38be676191]
#    to [8cf0aa0cbf6219930fb2530d9c37510ed9662a1e]
#
# patch "include/pk_keys.h"
#  from [20a3944a9fa84e08273eb2b6885c76854c4abed1]
#    to [cf1a5888cef53fd2615b6f00b46e08c58893fe27]
#
# patch "include/pk_ops.h"
#  from [1c2a354d23a1d63274ce9f9964f07fe838acf41b]
#    to [3920d58ef759295ed29d0b753100676f0745da8f]
#
# patch "include/pk_util.h"
#  from [66be1be613a35711e7dfee7c5c7f04c5995cdce4]
#    to [7891afa42d0dff993e51a8d6ec0a059b049706b9]
#
# patch "include/pkcs10.h"
#  from [49d5e2403c8575c41ebc0fd271d6a2f0479e6cbb]
#    to [4984265a4cb5111800f60659a4c8fe69d26b9d5d]
#
# patch "include/pkcs5.h"
#  from [73e4e3b7cccd735231a58c5d1d5a4cd1c11eed81]
#    to [bbbb8892f135dc8b51009b9aec7e58aacdc8ddc4]
#
# patch "include/pkcs8.h"
#  from [cd24e7b1ca80d2bc849eb839ab79f7a984d40e96]
#    to [ef4946e935d2220ffd54106dadaa2929192852a7]
#
# patch "include/pow_mod.h"
#  from [b24647210d5d4f03575626542b7232133ef6a00d]
#    to [362454f448c3eb80b0a8abd778e6f0f0cab2db9e]
#
# patch "include/pubkey.h"
#  from [3ec9d6ada0e0968e6711c87372a66b86652c058e]
#    to [ba87e679f0c99d8b1598b04532e4eeba3085a1ea]
#
# patch "include/randpool.h"
#  from [bc8674bb1e3d9021674e133d39c7f0250300e55b]
#    to [0928e4cc6c0e9db4c0bc80378e2d5846adc4d225]
#
# patch "include/rc2.h"
#  from [38e23deef4a7e8f61b1e86933cf7570fab3b371e]
#    to [6f0dbc244cad0207d76139f053d60c144252ab33]
#
# patch "include/rc5.h"
#  from [91e92ce10c2e545ac9e74490270c5f714e024a9d]
#    to [95604aa00ab3dfb14a0e1aa637150603fb663e78]
#
# patch "include/rc6.h"
#  from [b9e1b74dfecb58a0b9b92d30bff4c56cf0ecbba5]
#    to [bd814085812d9491e7ca7d9714a407c99f2db8e7]
#
# patch "include/reducer.h"
#  from [8c27b654016a0181e57bd1128774ba7cd870cdd0]
#    to [c11599682def397d3376aface6c85a2fbc73223b]
#
# patch "include/rmd128.h"
#  from [32278cbebb8db8773d8a976353770d9b87773d27]
#    to [12e54153fb2e5c459481e9d0c83ea30d4e8b31b9]
#
# patch "include/rmd160.h"
#  from [2eb26b1b48d5d726241e83a99fe2cc129f1f21c9]
#    to [9fcbc152349ad47f4bd3823ea60987f724358df2]
#
# patch "include/rsa.h"
#  from [c40dd400c8af93fd0592cef7637155095eb0a902]
#    to [96e51a461640df8d282d2a3eec3894b818f8e822]
#
# patch "include/rw.h"
#  from [6cc8b857b6dbb07f1520fdc846ba51e45fbf91b7]
#    to [8c3b9b886a511deba603bd6c73b92972de8b0e22]
#
# patch "include/s2k.h"
#  from [fd9416577db62bb69d99893196314b0c9d02670b]
#    to [dfca47094e0f16ffd7c61fa36305b7758771a107]
#
# patch "include/safer_sk.h"
#  from [6c53246d48d12fcd9b359008de93642dcea3367d]
#    to [f79b6f000ada0c27333f4f9d8c2689a7a2653f62]
#
# patch "include/secqueue.h"
#  from [1cc8ed5f36c8f4cbb01b1cd75d6c18a95d12af26]
#    to [cd9544d40e08404b6c18edc999e32bb3e446ea86]
#
# patch "include/seed.h"
#  from [fdde3adf7436a2ce58dff5ecb914ee8b56e04ee1]
#    to [ee56d3b9e0d07e6e75a469950c8a2656a7d77b64]
#
# patch "include/selftest.h"
#  from [a1969936444a9ef5e5bca0c7f4cd1dca7ae6d85f]
#    to [42b485822bb01909667eea600d45703b8746b9b2]
#
# patch "include/serpent.h"
#  from [d891abda8b810501e4ddc8f99814693d18589099]
#    to [ac5af1c20013d338fe74254a9eb4547b4bbe1842]
#
# patch "include/sha160.h"
#  from [748e14e8859487eb2c9c4f09a892f907fe96a011]
#    to [37d56046ef1803c41f802e291e318c4e5d9ddaa2]
#
# patch "include/sha256.h"
#  from [64e17f3dfe6ebf92a06d434943ea81ee9c43d6bf]
#    to [ad8e5270f95f23fe2e703825755190ff6954cb9a]
#
# patch "include/sha_64.h"
#  from [a508a3e180e40f8fdd08d96f810077a2bd7bd317]
#    to [8e761255053141d09a8068560a0537bc5223a074]
#
# patch "include/skipjack.h"
#  from [ab962aab12c5c3928d3ce177d2ac189b255004d0]
#    to [7e78ba076b614342f843fc5e21a1d81318caf970]
#
# patch "include/square.h"
#  from [b4d336d786bbfdca3f982e350a4eee2ad64f3f79]
#    to [7aa0bb1770487292dc1326f237fb9f37dbeb4b23]
#
# patch "include/symkey.h"
#  from [df9f12faa7f6b505bd4b5c9b48fd4848e8d19061]
#    to [614f0dd9f6dc979dd0e841c754b8f4eaa08f49a3]
#
# patch "include/tea.h"
#  from [4526c6727dab1bbdb9b04b1382e8536baee92f26]
#    to [1c04cb05f2bc15d03ceb41d61e33826d7c28b5d9]
#
# patch "include/tiger.h"
#  from [079f90e1933468f9f162745914c0b8bfa5b995c3]
#    to [4a2b2c8f08dc6b2ebfb02e8751df5ab7975f3117]
#
# patch "include/turing.h"
#  from [bc7a6ef287447f9f0a34ccd39f1fedd176c92c7d]
#    to [b953bc11f8f84b1d4a6958de9a437c67776e48df]
#
# patch "include/twofish.h"
#  from [5cae7d77a09186c93e20acb1b9fe9829e8c142d4]
#    to [809e92217142cfbe7a47436ffcb340974056f60a]
#
# patch "include/ui.h"
#  from [853e3a17d0e7d4b32652b7ff28ccda21a2fe9b6b]
#    to [edc430aa1261dacfab65cf5bf004f0ba1c264340]
#
# patch "include/util.h"
#  from [f4cfec7dc5d51e8ac7356cd289c1b0599f24216a]
#    to [e78434c0e695bc47ad2c0bdfbfbae8ba36bda8f7]
#
# patch "include/version.h"
#  from [75ca6908b2084a0e6d976aebc7a15a2d6bee95e6]
#    to [f468ac71bb110a61714372ab7b9a73c0b7dc0ce6]
#
# patch "include/whrlpool.h"
#  from [34584eddd9aabbd062f00211a4f66485789ad3b0]
#    to [bfc7a9165e4a4a4162560b747bda1cdb377f6b92]
#
# patch "include/wid_wake.h"
#  from [0156672f9f0a76eb3050a30c914bf5651923ffaf]
#    to [7ae29262d365c36cd24c0e30430660e445f4acd8]
#
# patch "include/x509_ca.h"
#  from [26d79cace2e21f8843600c7e418bd82366d33196]
#    to [3327c608a47cba05bbed1d840c276ee73aba9624]
#
# patch "include/x509_crl.h"
#  from [7a7d292ec2599837b77160b88e9b188bb72a56fb]
#    to [f62da82fa82f60977d4b4b5e565a88334bbe92fc]
#
# patch "include/x509_ext.h"
#  from [b43b458be1f994c023d5f73991e9b6097fcf0247]
#    to [3d07a4bbddc8ec683e40448dc6a5d9307ec345c0]
#
# patch "include/x509_key.h"
#  from [ceb30b94983a1f5c42eccc4b416bd9a70e061dd3]
#    to [24c8a01c58a33a951d43cf1b375a5fc538132dbd]
#
# patch "include/x509_obj.h"
#  from [99be0ae3fec93c970e1732a2c2ed104009b21a5c]
#    to [4048a6db99a88fd595d1df2010303cf3189dddcc]
#
# patch "include/x509cert.h"
#  from [a112171f8822c7c116fe1856c324934d172ecc4a]
#    to [15f8b6d21e61abb8ec637aa9a8cca227045d8d76]
#
# patch "include/x509find.h"
#  from [549b30c91d6753281a0a83131564335ef8446659]
#    to [2b544fb35d92a37fc573b1bd914363f177ab3dec]
#
# patch "include/x509self.h"
#  from [2bd3f51b47ca9633f0628c2361c1b0731f146632]
#    to [3c3ecc0285256e83b38880dfe8d67fa3ec3d6a27]
#
# patch "include/x509stor.h"
#  from [bd22ac876bb21ad52e202b71aa5bd20aab18296d]
#    to [2242323b5c90c22ea1c5a9c6a88bee139231ef88]
#
# patch "include/x919_mac.h"
#  from [b3122d96ffa1eeff4020f369f8e33f9e1c2d6204]
#    to [1716dcbde2c168d9addb6a648e8525b445d54354]
#
# patch "include/x931_rng.h"
#  from [0582f9f4a3638c622e30e8fe2bcd1e165540b7ec]
#    to [2c37383953654e7400e0bbfbb7aadcc8d85839d5]
#
# patch "src/engine.cpp"
#  from [e08ad4203573f8f9f20d9de98ebcbc5dc75d46d9]
#    to [283279689caad3869ca615bda4ef0b933e680125]
#
============================================================
--- checks/pk.cpp	306b221e18047cb7245a057e775e387d3e7843cf
+++ checks/pk.cpp	29d3ee1e629ecb164b57caf11f80703043ec1bbe
@@ -37,6 +37,8 @@ class Fixed_Output_RNG : public RandomNu
 class Fixed_Output_RNG : public RandomNumberGenerator
    {
    public:
+      bool is_seeded() const { return true; }
+
       byte random()
          {
          if(position < output.size())
============================================================
--- doc/log.txt	0b9e0e5499ad25cc3ba9b6e7253c93882e68d105
+++ doc/log.txt	f05061923c6fe2798825a82b9cce2b7a7cd3fa28
@@ -3,7 +3,7 @@
  - Initial support for Windows DLLs
  - Removed the AEP module, due to inability to test

-* 1.7.5, April 12, 2008
+* 1.7.5, 2008-04-12
  - The API of X509_CA::sign_request was altered to avoid race conditions
  - New type Pipe::message_id to represent the Pipe message number
  - Remove the Named_Mutex_Holder for a small performance gain
@@ -15,7 +15,7 @@
  - The size of random blinding factors is now a compile time setting
  - The install target no longer tries to set a particular owner/group

-* 1.7.4, March 10, 2008
+* 1.7.4, 2008-03-10
  - Use unaligned memory read/writes on systems that allow it, for performance
  - Assembly for x86-64 for accessing the bswap instruction
  - Use larger buffers in ARC4 and WiderWAKE for significant throughput increase
@@ -24,7 +24,7 @@
  - Build fix for NetBSD systems
  - Prevent es_dev from being built except on Unix systems

-* 1.7.3, January 23, 2008
+* 1.7.3, 2008-01-23
  - New invocation syntax for configure.pl with several new options
  - Support for IPv4 addresses in a subject alternative name
  - New fast poll for the generic Unix entropy source (es_unix)
@@ -34,7 +34,7 @@
  - Truncate X9.42 PRF output rather than allow counter overflow
  - PowerPC is now assumed to be big-endian

-* 1.7.2, October 13, 2007
+* 1.7.2, 2007-10-13
  - Initialize the global library state lazily
  - Add plain CBC-MAC for backwards compatability with old systems
  - Clean up some of the self test code
@@ -43,11 +43,11 @@
  - Add newly assigned OIDs for SHA-2 and DSA with SHA-224/256
  - Fix a Visual Studio compilation problem in x509stat.cpp

-* 1.6.3, July 23, 2007
+* 1.6.3, 2007-07-23
  - Fix a race condition in the algorithm lookup cache
  - Fix problems building the memory pool on some versions of Visual C++

-* 1.7.1, July 23, 2007
+* 1.7.1, 2007-07-23
  - Fix a race condition in the algorithm object cache
  - HMAC key schedule optimization
  - The build header sets a macro defining endianness, if known
@@ -55,7 +55,7 @@
  - Modify most of the library to avoid use the C-style casts
  - Use higher resolution timers in symmetric benchmarks

-* 1.7.0, May 19, 2007
+* 1.7.0, 2007-05-19
  - DSA parameter generation now follows FIPS 186-3
  - Added OIDs for Rabin-Williams and Nyberg-Rueppel
  - Somewhat better support for out of tree builds
@@ -63,25 +63,25 @@
  - Documentation updates
  - Update the todo list

-* 1.6.2, March 24, 2007
+* 1.6.2, 2007-03-24
  - Fix autodection on Athlon64s running Linux
  - Fix builds on QNX and compilers using STLport
  - Remove a call to abort() that crept into production

-* 1.6.1, January 20, 2007
+* 1.6.1, 2007-01-20
  - Fix some base64 decoder bugs
  - Add a new option to base64 encoding, to always append a newline
  - Fix some build problems under Visual Studio with debug enabled
  - Fix a bug in BER_Decoder that was triggered under some compilers

-* 1.6.0, December 17, 2006
+* 1.6.0, 2006-12-17
  - Minor cleanups versus 1.5.13

-* 1.5.13, December 10, 2006
+* 1.5.13, 2006-12-10
  - Compilation fixes for the bzip2, zlib, and GNU MP modules
  - Better support for Intel C++ and EKOpath C++ on x86-64

-* 1.5.12, October 27, 2006
+* 1.5.12, 2006-10-27
  - Cleanups in the initialization routines
  - Add some x86-64 assembly for multiply-add
  - Fix problems generating very small (below 384 bit) RSA keys
@@ -89,7 +89,7 @@
  - Bring some of the documentation up to date
  - More improvements to the Python bindings

-* 1.5.11, September 10, 2006
+* 1.5.11, 2006-09-10
  - Removed the Algorithm base class
  - Various cleanups in the public key inheritance hierarchy
  - Major overhaul of the configure/build setup
@@ -98,7 +98,7 @@
  - Various improvements to the Python wrappers
  - Work around a Visual Studio compiler bug

-* 1.5.10, August 13, 2006
+* 1.5.10, 2006-08-13
  - Add x86 assembler versions of MD4, MD5, and SHA-1
  - Expand InitializerOptions' language to support on/off switches
  - Fix definition of OID 2.5.4.8; was accidentally changed in 1.5.9
@@ -110,7 +110,7 @@
  - Expand the xor_ciph example to support longer keys
  - Some updates to the documentation

-* 1.5.9, July 12, 2006
+* 1.5.9, 2006-07-12
  - Fixed bitrot in the AEP engine
  - Fix support for marking certificate/CRL extensions as critical
  - Significant cleanups in the library state / initialization code
@@ -121,7 +121,7 @@
  - Add some STL wrappers for the delete operator
  - Change how certificates are created to be more flexible and general

-* 1.5.8, June 23, 2006
+* 1.5.8, 2006-06-23
  - Many internal cleanups to the X.509 cert/CRL code
  - Allow for application code to support new X.509 extensions
  - Change the return type of X509_Certificate::{subject,issuer}_info
@@ -132,13 +132,13 @@
  - Disable es_unix module on FreeBSD due to build problem on FreeBSD 6.1
  - Support for GCC 2.95.x has been dropped in this release

-* 1.5.7, May 28, 2006
+* 1.5.7, 2006-05-28
  - Further, major changes to the BER/DER coding system
  - Updated the Qt mutex module to use Mutex_Factory
  - Moved the library global state object into an anonymous namespace
  - Drop the Visual C++ x86 assembly module due to bugs

-* 1.5.6, March 1, 2006
+* 1.5.6, 2006-03-01
  - The low-level DER/BER coding system was redesigned and rewritten
  - Portions of the certificate code were cleaned up internally
  - Use macros to substantially clean up the GCC assembly code
@@ -146,7 +146,7 @@
  - Avoid a couple of spurious warnings under Visual C++
  - Some slight cleanups in X509_PublicKey::key_id

-* 1.5.5, February 4, 2006
+* 1.5.5, 2006-02-04
  - Fixed a potential infinite loop in the memory pool code (Matt Johnston)
  - Made Pooling_Allocator::Memory_Block an actual class of sorts
  - Some small optimizations to the division and modulo computations
@@ -157,7 +157,7 @@
  - Fixed some annoying bugs in the benchmark code
  - Added a real credits file

-* 1.5.4, January 29, 2006
+* 1.5.4, 2006-01-29
  - Integrated x86 and amd64 assembly code, contributed by Luca Piccarreta
  - Fixed a memory access off-by-one in the Karatsuba code
  - Changed Pooling_Allocator's free list search to a log(N) algorithm
@@ -174,7 +174,7 @@
  - Removed some dead code from bigint_modop
  - Fix the definition of same_mem

-* 1.5.3, January 24, 2006
+* 1.5.3, 2006-01-24
  - Many optimizations in the low-level multiple precision integer code
  - Added hooks for assembly implementations of the MPI code
  - Support for the X.509 issuer alternative name extension in new certs
@@ -186,13 +186,13 @@
  - Fixed the mp_asm64 module, which was entirely broken in 1.5.2
  - Fixed some module build problems on FreeBSD and Tru64

-* 1.4.12, January 15, 2006
+* 1.4.12, 2006-01-15
  - Fixed an off-by-one memory read in MISTY1::key()
  - Fixed a nasty memory leak in Output_Buffers::retire()
  - Changed maximum HMAC keylength to 1024 bits
  - Fixed a build problem in the hardware timer module on 64-bit PowerPC

-* 1.5.2, January 15, 2006
+* 1.5.2, 2006-01-15
  - Fixed an off-by-one memory read in MISTY1::key()
  - Fixed a nasty memory leak in Output_Buffers::retire()
  - Reimplemented the memory allocator from scratch
@@ -208,7 +208,7 @@
  - Enabled the symmetric algorithm tests, which were accidentally off in 1.5.1
  - Removed the Default_Mutex's unused clone() member function

-* 1.5.1, January 8, 2006
+* 1.5.1, 2006-01-08
  - Implemented Montgomery exponentiation
  - Implemented generalized Karatsuba multiplication and squaring
  - Implemented Comba squaring for 4, 6, and 8 word inputs
@@ -221,7 +221,7 @@
  - Replaced BigInt's get_nibble with the more general get_substring
  - Some documentation updates

-* 1.5.0, January 1, 2006
+* 1.5.0, 2006-01-01
  - Moved all global/shared library state into a single object
  - Mutex objects are created through mutex factories instead of a global
  - Removed ::get_mutex(), ::initialize_mutex(), and Mutex::clone()
@@ -231,7 +231,7 @@
  - Removed the deprecated algorithms SEAL, ISAAC, and HAVAL
  - Change es_ftw to use unbuffered I/O

-* 1.4.11, December 31, 2005
+* 1.4.11, 2005-12-31
  - Changed Whirlpool diffusion matrix to match updated algorithm spec
  - Fixed several engine module build errors introduced in 1.4.10
  - Fixed two build problems in es_capi; reported by Matthew Gregan
@@ -241,7 +241,7 @@
  - Merged doc/rngs.txt into the main API document
  - Thanks to Joel Low for several bugreports on early tarballs of 1.4.11

-* 1.4.10, December 18, 2005
+* 1.4.10, 2005-12-18
  - Added an implementation of KASUMI, the block cipher used in 3G phones
  - Refactored Pipe; output queues are now managed by a distinct class
  - Made certain Filter facilities only available to subclasses of Fanout_Filter
@@ -259,7 +259,7 @@
  - The header util.h was split into bit_ops.h, parsing.h, and util.h
  - Cleaned up some redundant include directives

-* 1.4.9, November 6, 2005
+* 1.4.9, 2005-11-06
  - Added the IBM-created AES candidate algorithm MARS
  - Added the South Korean block cipher SEED
  - Added the stream cipher Turing
@@ -274,14 +274,14 @@
  - Added more test vectors for some algorithms, including all the AES finalists
  - Various cosmetic source code cleanups

-* 1.4.8, October 16, 2005
+* 1.4.8, 2005-10-16
  - Resolved a bad performance problem in the allocators; fix by Matt Johnston
  - Worked around a Visual Studio 2003 compilation problem introduced in 1.4.7
  - Renamed OMAC to CMAC to match the official NIST naming
  - Added single byte versions of update() to PK_Signer and PK_Verifier
  - Removed the unused reverse_bits and reverse_bytes functions

-* 1.4.7, September 25, 2005
+* 1.4.7, 2005-09-25
  - Fixed major performance problems with recent versions of GNU C++
  - Added an implementation of the X9.31 PRNG
  - Removed the X9.17 and FIPS 186-2 PRNG algorithms
@@ -296,7 +296,7 @@
  - Fix some build problems with Visual C++ 2005 beta
  - Fix some build problems with Visual C++ 2003 Workshop

-* 1.4.6, March 13, 2005
+* 1.4.6, 2005-03-13
  - Fix an error in the shutdown code introduced in 1.4.5
  - Setting base/pkcs8_tries to 0 disables the builtin fail-out
  - Support for XMPP identifiers in X.509 certificates
@@ -304,7 +304,7 @@
  - More fixes for Borland C++, from Friedemann Kleint
  - Add a workaround for buggy iostreams

-* 1.4.5, February 26, 2005
+* 1.4.5, 2005-02-26
  - Add support for AES encryption of private keys
  - Minor fixes for PBES2 parameter decoding
  - Internal cleanups for global state variables
@@ -317,14 +317,14 @@
  - Removed some left-over debugging code
  - Removed SSL3_MAC, SSL3_PRF, and TLS_PRF

-* 1.4.4, December 2, 2004
+* 1.4.4, 2004-12-02
  - Further tweaks to the pooling allocator
  - Modified EMSA3 to support SSL/TLS signatures
  - Changes to support Qt/QCA, from Justin Karneges
  - Moved mux_qt module code into mod_qt
  - Fixes for HP-UX from Mike Desjardins

-* 1.4.3, November 6, 2004
+* 1.4.3, 2004-11-06
  - Split up SecureAllocator into Allocator and Pooling_Allocator
  - Memory locking allocators are more likely to be used
  - Fixed the placement of includes in some modules
@@ -332,7 +332,7 @@
  - Fixes in configure script to support alternate install programs
  - Modules can specify the minimum version they support

-* 1.4.2, October 31, 2004
+* 1.4.2, 2004-10-31
  - Fixed a major CRL handling bug
  - Cipher and hash operations can be offloaded to engines
  - Added support for cipher and hash offload in OpenSSL engine
@@ -344,7 +344,7 @@
  - Lots of fixes and cleanups in the configure script
  - Updated the Gentoo ebuild file

-* 1.4.1, October 10, 2004
+* 1.4.1, 2004-10-10
  - Fixed major errors in the X.509 and PKCS #8 copy_key functions
  - Added a LAST_MESSAGE meta-message number for Pipe
  - Added new aliases (3DES and DES-EDE) for Triple-DES
@@ -353,7 +353,7 @@
  - Disabled tm_posix on *BSD due to header issues
  - Fixed a build problem on PowerPC with GNU C++ pre-3.4

-* 1.4.0, June 26, 2004
+* 1.4.0, 2004-06-26
  - Added the FIPS 186 RNG back
  - Added copy_key functions for X.509 public keys and PKCS #8 private keys
  - Fixed PKCS #1 signatures with RIPEMD-128
@@ -362,7 +362,7 @@
  - Fixed some build problems on Tru64, HP-UX
  - Fixed compile problems with Intel C++, Compaq C++

-* 1.3.14, June 12, 2004
+* 1.3.14, 2004-06-12
  - Added support for AEP's AEP1000/AEP2000 crypto cards
  - Added a Mutex module using Qt, from Justin Karneges
  - Added support for engine loading in LibraryInitializer
@@ -386,14 +386,14 @@
  - Changed MP_WORD_BITS macro to BOTAN_MP_WORD_BITS to clean up namespace
  - Documentation updates

-* 1.3.13, May 15, 2004
+* 1.3.13, 2004-05-15
  - Major fixes for Cygwin builds
  - Minor MacOS X install fixes
  - The configure script is a little better at picking the right modules
  - Removed ml_unix from the 'unix' module set for Cygwin compatibility
  - Fixed a stupid compile problem in pkcs10.h

-* 1.3.12, May 2, 2004
+* 1.3.12, 2004-05-02
  - Added ability to remove old entries from CRLs
  - Swapped the first two arguments of X509_CA::update_crl()
  - Added an < operator for MemoryRegion, so it can be used as a std::map key
@@ -406,7 +406,7 @@
  - Corrected errors in the API doc, fixes from Ken Perano
  - More documentation about the Pipe/Filter code

-* 1.3.11, April 1, 2004
+* 1.3.11, 2004-04-01
  - Fixed two show-stopping bugs in PKCS10_Request
  - Added some sanity checks in Pipe/Filter
  - The DNS and URI entries would get swapped in subjectAlternativeNames
@@ -416,7 +416,7 @@
  - Fixed some problems in the tutorial pointed out by Dominik Vogt
  - Documentation updates

-* 1.3.10, March 27, 2004
+* 1.3.10, 2004-03-27
  - Added support for OpenPGP's ASCII armor format
  - Cleaned up the RNG system; seeding is much more flexible
  - Added simple autoconfiguration abilities to configure.pl
@@ -424,7 +424,7 @@
  - Updated the example configuration file
  - Documentation updates

-* 1.3.9, March 7, 2004
+* 1.3.9, 2004-03-07
  - Added an engine using OpenSSL (requires 0.9.7 or later)
  - X509_Certificate would lose email addresses stored in the DN
  - Fixed a missing initialization in a BigInt constructor
@@ -432,7 +432,7 @@
  - Fixed some BeOS build problems
  - Fixed the WiderWake benchmark

-* 1.3.8, December 30, 2003
+* 1.3.8, 2003-12-30
  - Internal changes to PK algorithms to divide data and algorithms
  - DSA/DH/NR/ElGamal constructors accept taking just the private key again
  - ElGamal keys now support being imported/exported as ASN.1 objects
@@ -453,7 +453,7 @@
  - Moved more shared code into MDx_HashFunction
  - Added a policy hook for specifying the encoding of X.509 strings

-* 1.3.7, December 12, 2003
+* 1.3.7, 2003-12-12
  - Fixed a big security problem in es_unix
  - Fixed several stability problems in es_unix
  - Expanded the list of programs es_unix will try to use
@@ -464,13 +464,13 @@
  - Removed the (never tested) VAX support
  - Added support for S/390 Linux

-* 1.3.6, December 7, 2003
+* 1.3.6, 2003-12-07
  - Added a new module 'minimal', which disables most algorithms
  - SecureAllocator allocates a few blocks at startup
  - A few minor MPI cleanups
  - RPM spec file cleanups and fixes

-* 1.3.5, November 30, 2003
+* 1.3.5, 2003-11-30
  - Major improvements in ASN.1 string handling
  - Added partial support for ASN.1 UTF8 STRINGs and BMP STRINGs
  - Added partial support for the X.509v3 certificate policies extension
@@ -489,10 +489,10 @@
  - RPM changed to install into /usr instead of /usr/local
  - Added support for QNX

-* 1.2.8, November 21, 2003
+* 1.2.8, 2003-11-21
  - Merged several important bug fixes from 1.3.x

-* 1.3.4, November 21, 2003
+* 1.3.4, 2003-11-21
  - Added a module that does certain MPI operations using GNU MP
  - Added the X9.42 Diffie-Hellman PRF
  - The Zlib and Bzip2 objects now use custom allocators
@@ -501,7 +501,7 @@
  - Some cleanups in the low-level MPI code
  - Created separate AES-{128,192,256} objects

-* 1.3.3, November 17, 2003
+* 1.3.3, 2003-11-17
  - The library can now be repeatedly initialized and shutdown without crashing
  - Fixed an off-by-one error in the CTS code
  - Fixed an error in the EMSA4 verification code
@@ -517,7 +517,7 @@
  - Updated the example config file with new OIDSs
  - Moved the build instructions into a separate document, building.tex

-* 1.3.2, November 13, 2003
+* 1.3.2, 2003-11-13
  - Fixed a bug preventing DSA signatures from verifying on X.509 objects
  - Made the X509_Store search routines more efficient and flexible
  - Added a function to X509_PublicKey to do easy public/private key matching
@@ -536,12 +536,12 @@
  - Various new hacks in the configure script
  - Removed the already nominal support for SunOS

-* 1.3.1, November 4, 2003
+* 1.3.1, 2003-11-04
  - Generalized a few pieces of the DER encoder
  - PKCS8::load_key would fail if handed an unencrypted key
  - Added a failsafe so PKCS #8 key decoding can't go into an infinite loop

-* 1.3.0, November 2, 2003
+* 1.3.0, 2003-11-02
  - Major redesign of the PKCS #8 private key import/export system
  - Added a small amount of UI interface code for getting passphrases
  - Added heuristics that tell if a key, cert, etc is stored as PEM or BER
@@ -549,7 +549,7 @@
  - Removed certain deprecated constructors of RSA, DSA, DH, RW, NR
  - Made PEM decoding more forgiving of extra text before the header

-* 1.2.7, October 31, 2003
+* 1.2.7, 2003-10-31
  - Added support for reading configuration files
  - Added constructors so NR and RW keys can be imported easily
  - Fixed mp_asm64, which was completely broken in 1.2.6
@@ -562,7 +562,7 @@
  - Updated the RPM spec file
  - Added to the tutorial

-* 1.2.6, July 4, 2003
+* 1.2.6, 2003-07-04
  - Major performance increase for PK algorithms on most 64-bit systems
  - Cleanups in the low-level MPI code to support asm implementations
  - Fixed build problems with some versions of Compaq's C++ compiler
@@ -570,7 +570,7 @@
  - Removed support for the patch_file directive in module files
  - Removed several deprecated functions

-* 1.2.5, June 22, 2003
+* 1.2.5, 2003-06-22
  - Fixed a tricky and long-standing memory leak in Pipe
  - Major cleanups and fixes in the memory allocation system
  - Removed alloc_mlock, which has been superseded by the ml_unix module
@@ -591,13 +591,13 @@
  - Removed the (empty) desx.h header
  - Documentation updates

-* 1.2.4, May 29, 2003
+* 1.2.4, 2003-05-29
  - Fixed a bug in EMSA1 affecting NR signature verification
  - Fixed a few latent bugs in BigInt related to word size
  - Removed an unused function, mp_add2_nc, from the MPI implementation
  - Reorganized the core MPI files

-* 1.2.3, May 20, 2003
+* 1.2.3, 2003-05-20
  - Fixed a bug that prevented DSA/NR key generation
  - Fixed a bug that prevented importing some root CA certs
  - Fixed a bug in the BER decoder when handing optional bit or byte strings
@@ -609,7 +609,7 @@
  - Added a simplistic X.509 CA example
  - Cleaned up some of the examples

-* 1.2.2, May 13, 2003
+* 1.2.2, 2003-05-13
  - Add checks to prevent any BigInt bugs from revealing an RSA or RW key
  - Changed the interface of Global_RNG::seed
  - Major improvements for the es_unix module
@@ -620,7 +620,7 @@
  - Fixed a file descriptor leak in the EGD module
  - Fixed a few locking bugs

-* 1.2.1, May 6, 2003
+* 1.2.1, 2003-05-06
  - Added ANSI X9.23 compatible CBC padding
  - Added an entropy source using Win32 CryptoAPI
  - Removed the Pipe I/O operators taking a FILE*
@@ -628,13 +628,13 @@
  - Integrated several fixes for VC++ 7 (from Hany Greiss)
  - Fixed the configure.pl script for Windows builds

-* 1.2.0, April 28, 2003
+* 1.2.0, 2003-04-28
  - Tweaked the Karatsuba cut-off points
  - Increased the allowed keylength of HMAC and Blowfish
  - Removed the 'mpi_ia32' module, pending rewrite
  - Workaround a GCC 2.95.x bug in eme1.cpp

-* 1.1.13, April 22, 2003
+* 1.1.13, 2003-04-22
  - Added OMAC
  - Added EAX authenticated cipher mode
  - Diffie-Hellman would not do blinding in some cases
@@ -648,7 +648,7 @@
  - Removed 'es_pthr' module, pending further testing
  - Cleaned up get_ciph.cpp

-* 1.1.12, April 15, 2003
+* 1.1.12, 2003-04-15
  - Fixed a ASN.1 string encoding bug
  - Fixed a pair of X509_DN encoding problems
  - Base64_Decoder and Hex_Decoder can now validate input
@@ -658,7 +658,7 @@
  - Updated the RPM .spec file
  - Major documentation updates

-* 1.1.11, April 7, 2003
+* 1.1.11, 2003-04-07
  - Added PKCS #10 certificate requests
  - Changed X509_Store searching interface to be more flexible
  - Added a generic Certificate_Store interface
@@ -667,7 +667,7 @@
  - New examples for PKCS #10 and self-signed certificates
  - Some documentation updates

-* 1.1.10, April 3, 2003
+* 1.1.10, 2003-04-03
  - X509_CA can now generate new X.509 CRLs
  - Added blinding for RSA, RW, DH, and ElGamal to prevent timing attacks
  - More certificate and CRL extensions/attributes are supported
@@ -678,7 +678,7 @@
  - Added a (slow) pthreads based EntropySource
  - Fixed some threading bugs

-* 1.1.9, February 25, 2003
+* 1.1.9, 2003-02-25
  - Added support for using X.509v2 CRLs
  - Fixed several bugs in the path validation algorithm
  - Certificates can be verified for a particular usage
@@ -686,7 +686,7 @@
  - Cleaned up the code for the es_beos, es_ftw, es_unix modules
  - Documentation updates

-* 1.1.8, January 29, 2003
+* 1.1.8, 2003-01-29
  - Fixes for the certificate path validation algorithm in X509_Store
  - Fixed a bug affecting X509_Certificate::is_ca_cert()
  - Added a general configuration interface for policy issues
@@ -697,17 +697,17 @@
  - Fixed problems compiling with GCC 2.95.3 and GCC 2.96
  - Fixed a configure bug (reported by Jon Wilson) affecting MinGW

-* 1.1.7, January 12, 2003
+* 1.1.7, 2003-01-12
  - Fixed an obscure but dangerous bug in SecureVector::swap
  - Consolidated SHA-384 and SHA-512 to save code space
  - Added SSL3-MAC and SSL3-PRF
  - Documentation updates, including a new tutorial

-* 1.0.2, January 12, 2003
+* 1.0.2, 2003-01-12
  - Fixed an obscure SEGFAULT causing bug in Pipe
  - Fixed an obscure but dangerous bug in SecureVector::swap

-* 1.1.6, December 10, 2002
+* 1.1.6, 2002-12-10
  - Initial support for X.509v3 certificates and CAs
  - Major redesign/rewrite of the ASN.1 encoding/decoding code
  - Added handling for DSA/NR signatures encoded as DER SEQUENCEs
@@ -715,13 +715,13 @@
  - Added an (untested) entropy source for BeOS
  - Various cleanups and bug fixes

-* 1.1.5, November 17, 2002
+* 1.1.5, 2002-11-17
  - Added the discrete logarithm integrated encryption system (DLIES)
  - Various optimizations for BigInt
  - Added support for assembler optimizations in modules
  - Added BigInt x86 optimizations module (mpi_ia32)

-* 1.1.4, November 10, 2002
+* 1.1.4, 2002-11-10
  - Speedup of 15-30% for PK algorithms
  - Implemented the PBES2 encryption scheme
  - Fixed a potential bug in decoding RSA and RW private keys
@@ -733,7 +733,7 @@
  - A botan-config script is generated at configure time
  - Documentation updates

-* 1.1.3, November 3, 2002
+* 1.1.3, 2002-11-03
  - Added a generic public/private key loading interface
  - Fixed a small encoding bug in RSA, RW, and DH
  - Changed the PK encryption/decryption interface classes
@@ -746,7 +746,7 @@
  - Added tests for PKCS #8 encoding/decoding
  - Added more tests for ECB and CBC

-* 1.1.2, October 21, 2002
+* 1.1.2, 2002-10-21
  - Support for PKCS #8 encoded RSA, DSA, and DH private keys
  - Support for Diffie-Hellman X.509 public keys
  - Major reorganization of how X.509 keys are handled
@@ -761,7 +761,7 @@
  - Renamed CTR class to CTR_BE
  - Updated the RSA and DSA examples to use X.509 and PKCS #8 key formats

-* 1.1.1, October 15, 2002
+* 1.1.1, 2002-10-15
  - Added the Korean hash function HAS-160
  - Partial support for RSA and DSA X.509 public keys
  - Added a mostly functional BER encoder/decoder
@@ -774,7 +774,7 @@
  - Discrete logarithm groups are checked for safety more closely now
  - For compatibility with GnuPG, ElGamal now supports DSA-style groups

-* 1.1.0, September 14, 2002
+* 1.1.0, 2002-09-14
  - Added entropy estimation to the RNGs
  - Improved the overall design of both Randpool and ANSI_X917_RNG
  - Added a separate RNG for nonce generation
@@ -791,20 +791,20 @@
  - Added support for variable-pass Tiger
  - Major speedup for Rabin-Williams key generation

-* 1.0.1, September 14, 2002
+* 1.0.1, 2002-09-14
  - Fixed a minor bug in Randpool::random()
  - Added some new aliases and typedefs for 1.1.x compatibility
  - The 4096-bit RSA benchmark key was decimal instead of hex
  - EMAC was returning an incorrect name

-* 1.0.0, August 26, 2002
+* 1.0.0, 2002-08-26
  - Octal I/O of BigInt is now supported
  - Fixed portability problems in the es_egd module
  - Generalized IV handling in the block cipher modes
  - Added Karatsuba multiplication and k-ary exponentiation
  - Fixed a problem in the multiplication routines

-* 0.9.2, August 18, 2002
+* 0.9.2, 2002-08-18
  - DH_PrivateKey::public_value() was returning the wrong value
  - Various BigInt optimizations
  - The filters.h header now includes hex.h and base64.h
@@ -812,7 +812,7 @@
  - Fixed a couple minor problems with VC++ 7
  - Fixed problems with the RPM spec file

-* 0.9.1, August 10, 2002
+* 0.9.1, 2002-08-10
  - Grand rename from OpenCL to Botan
  - Major optimizations for the PK algorithms
  - Added ElGamal encryption
@@ -827,12 +827,12 @@
  - Removed some old examples that weren't that interesting
  - Documented the compression modules

-* 0.9.0, August 3, 2002
+* 0.9.0, 2002-08-03
  - EMSA4 supports variable salt size
  - PK_* can take a string naming the encoding method to use
  - Started writing some internals documentation

-* 0.8.7, July 30, 2002
+* 0.8.7, 2002-07-30
  - Fixed bugs in EME1 and EMSA4
  - Fixed a potential crash at shutdown
  - Cipher modes returned an ill-formed name
@@ -841,7 +841,7 @@
  - Minor additions to the documentation
  - First stab at a Visual C++ makefile (doc/Makefile.vc7)

-* 0.8.6, July 25, 2002
+* 0.8.6, 2002-07-25
  - Added EMSA4 (aka PSS)
  - Brought the manual up to date; many corrections and additions
  - Added a parallel hash function construction
@@ -862,7 +862,7 @@
  - Made validation tests more verbose
  - Updated the check and example applications

-* 0.8.5, July 21, 2002
+* 0.8.5, 2002-07-21
  - Major changes to constructors for DL-based cryptosystems (DSA, NR, DH)
  - Added a DL_Group class
  - Reworking of the pubkey internals
@@ -879,7 +879,7 @@
  - Fixes for HP's aCC compiler
  - Cleanups in BigInt

-* 0.8.4, July 14, 2002
+* 0.8.4, 2002-07-14
  - Added Nyberg-Rueppel signatures
  - Added Diffie-Hellman key exchange (kex interface is subject to change)
  - Added KDF2
@@ -894,7 +894,7 @@
  - FTW_EntropySource was not closing the files it read
  - Fixed line breaking problem in Hex_Encoder

-* 0.8.3, June 9, 2002
+* 0.8.3, 2002-06-09
  - Added DSA and Rabin-Williams signature schemes
  - Added EMSA3
  - Added PKCS#1 v1.5 encryption padding
@@ -911,7 +911,7 @@
  - Numerous bugfixes and cleanups
  - Documentation updates

-* 0.8.2, May 18, 2002
+* 0.8.2, 2002-05-18
  - Added an (experimental) algorithm lookup interface
  - Added code for directly testing BigInt
  - Added SHA2-384
@@ -925,7 +925,7 @@
  - Better support for PowerPC, ARM, and Alpha
  - Some more cleanups

-* 0.8.1, May 6, 2002
+* 0.8.1, 2002-05-06
  - Major code cleanup (check doc/deprecated.txt)
  - Various bugs fixed, including several portability problems
  - Renamed MessageAuthCode to MessageAuthenticationCode
@@ -934,7 +934,7 @@
  - Added ANSI X9.19 compatible CBC-MAC
  - TripleDES now supports 128 bit keys

-* 0.8.0, April 24, 2002
+* 0.8.0, 2002-04-24
  - Merged BigInt: many bugfixes and optimizations since alpha2
  - Added RSA (rsa.h)
  - Added EMSA2 (emsa2.h)
@@ -952,7 +952,7 @@
  - Documentation updates for the new stuff (still incomplete)
  - Many new deprecated things: check doc/deprecated.txt

-* 0.7.10, April 7, 2002
+* 0.7.10, 2002-04-07
  - Added EGD_EntropySource module (es_egd)
  - Added a file tree walking EntropySource (es_ftw)
  - Added MemoryLocking_Allocator module (alloc_mlock)
@@ -967,7 +967,7 @@
  - Removed some Pipe functions deprecated since 0.7.8
  - Some fixes for the configure program

-* 0.7.9, March 19, 2002
+* 0.7.9, 2002-03-19
  - Memory allocation substantially revamped
  - Added memory allocation method based on mmap(2) in the mmap_mem module
  - Added ECB and CTS block cipher modes (ecb.h, cts.h)
@@ -981,7 +981,7 @@
  - Made X917 safer (and about 1/3 as fast)
  - Documentation updates

-* 0.7.8, February 28, 2002
+* 0.7.8, 2002-02-28
  - More capabilities for Pipe, inspired by SysV STREAMS, including peeking,
    better buffering, and stack ops. NOT BACKWARDS COMPATIBLE: SEE DOCUMENTATION
  - Added a BufferingFilter class
@@ -995,7 +995,7 @@
  - Fixed various minor bugs
  - Added a couple of new example programs (stack and hasher2)

-* 0.7.7, November 24, 2001
+* 0.7.7, 2001-11-24
  - Filter::send now works in the constructor of a Filter subclass
  - You may now have to include <opencl/pipe.h> explicitly in some code
  - Added preliminary PK infrastructure classes in pubkey.h and pkbase.h
@@ -1008,7 +1008,7 @@
  - Added portions of the BigInt code into the main library
  - Support for VAX, SH, POWER, PowerPC-64, Intel C++

-* 0.7.6, October 14, 2001
+* 0.7.6, 2001-10-14
  - Fixed several serious bugs in SecureVector created in 0.7.5
  - Square optimizations
  - Fixed shared objects on MacOS X and HP-UX
@@ -1017,7 +1017,7 @@
  - Added a table of prime numbers < 2**16 (primes.h)
  - Some minor documentation updates

-* 0.7.5, August 19, 2001
+* 0.7.5, 2001-08-19
  - Split checksum.h into adler32.h, crc24.h, and crc32.h
  - Split modes.h into cbc.h, cfb.h, and ofb.h
  - CBC_wPadding* has been replaced by CBC_Encryption and CBC_Decryption
@@ -1034,7 +1034,7 @@
  - Various non-user-visible cleanups
  - Shared library soname is now set to the full version number

-* 0.7.4, July 15, 2001
+* 0.7.4, 2001-07-15
  - New modules: Zlib, gettimeofday and x86 RTC timers, Unix I/O for Pipe
  - Fixed a vast number of errors in the config script/makefile/specfile
  - Pipe now has a stdio(3) interface as well as C++ iostreams
@@ -1046,14 +1046,14 @@
  - filtbase.h now includes <iosfwd>, not <iostream>
  - Minor documentation updates

-* 0.7.3, June 8, 2001
+* 0.7.3, 2001-06-08
  - Fix build problems on Solaris/SPARC
  - Fix build problems with Perl versions < 5.6
  - Fixed some stupid code that broke on a few compilers
  - Added string handling functions to Pipe
  - MISTY1 optimizations

-* 0.7.2, June 3, 2001
+* 0.7.2, 2001-06-03
  - Build system supports modules
  - Added modules for mlock, a /dev/random EntropySource, POSIX1.b timers
  - Added Bzip2 compression filter, contributed by Peter Jones
@@ -1062,7 +1062,7 @@
  - Various other minor fixes and changes
  - Updates to the documentation

-* 0.7.1, May 16, 2001
+* 0.7.1, 2001-05-16
  - Rewrote configure script: more consistent and complete
  - Made it easier to find out parameters of types at run time (opencl.h)
  - New functions for finding the version being used (version.h)
@@ -1074,5 +1074,5 @@
  - Many more entries in the test vector file
  - Fixed minor and idiotic bug in check.cpp

-* 0.7.0, March 1, 2001
+* 0.7.0, 2001-03-01
  - First public release
============================================================
--- include/adler32.h	3fb3da1fd6fad8255838631b150dc0ce05efd2cd
+++ include/adler32.h	d0efdb2ca6a2312ef2e2abeba1c110fc15c888e8
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Adler32                                        *
 *************************************************/
-class Adler32 : public HashFunction
+class BOTAN_DLL Adler32 : public HashFunction
    {
    public:
       void clear() throw() { S1 = 1; S2 = 0; }
============================================================
--- include/aes.h	c435704aba7109c47f3a6eb1cd2de292c2d0eca4
+++ include/aes.h	f21a206b14c737acaa124f04c104e1d5daaee5ae
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * AES                                            *
 *************************************************/
-class AES : public BlockCipher
+class BOTAN_DLL AES : public BlockCipher
    {
    public:
       void clear() throw();
@@ -26,8 +26,11 @@ class AES : public BlockCipher
       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 TE[1024], TD[1024];
+
+      static const byte SE[256];
+      static const byte SD[256];
+      static const u32bit TE[1024];
+      static const u32bit TD[1024];
       SecureBuffer<u32bit, 52> EK, DK;
       SecureBuffer<byte, 32> ME, MD;
       u32bit ROUNDS;
@@ -36,7 +39,7 @@ class AES : public BlockCipher
 /*************************************************
 * AES-128                                        *
 *************************************************/
-class AES_128 : public AES
+class BOTAN_DLL AES_128 : public AES
    {
    public:
       std::string name() const { return "AES-128"; }
@@ -47,7 +50,7 @@ class AES_128 : public AES
 /*************************************************
 * AES-192                                        *
 *************************************************/
-class AES_192 : public AES
+class BOTAN_DLL AES_192 : public AES
    {
    public:
       std::string name() const { return "AES-192"; }
@@ -58,7 +61,7 @@ class AES_192 : public AES
 /*************************************************
 * AES-256                                        *
 *************************************************/
-class AES_256 : public AES
+class BOTAN_DLL AES_256 : public AES
    {
    public:
       std::string name() const { return "AES-256"; }
============================================================
--- include/alg_id.h	f35b1fa8eb93f5342db03e2d8bf216cc50e51e24
+++ include/alg_id.h	92a1557cfb909aded041463da82d4906b2298928
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Algorithm Identifier                           *
 *************************************************/
-class AlgorithmIdentifier : public ASN1_Object
+class BOTAN_DLL AlgorithmIdentifier : public ASN1_Object
    {
    public:
       enum Encoding_Option { USE_NULL_PARAM };
============================================================
--- include/allocate.h	2670420b0e017d31c381021c0b7f1d1866fbab55
+++ include/allocate.h	0f4769a449df515dc1a468eb0b5d06d20fc02148
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Allocator Interface                            *
 *************************************************/
-class Allocator
+class BOTAN_DLL Allocator
    {
    public:
       static Allocator* get(bool);
============================================================
--- include/arc4.h	aebe572be0beee98e6c0ed6577157c5b7273d40b
+++ include/arc4.h	01b224e18d457df1b42a24b30fee9a937dd84f13
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * ARC4                                           *
 *************************************************/
-class ARC4 : public StreamCipher
+class BOTAN_DLL ARC4 : public StreamCipher
    {
    public:
       void clear() throw();
============================================================
--- include/asn1_int.h	73aba9e43f1440e3ca44425e159173815f174f8e
+++ include/asn1_int.h	5caaae2713c3f14a3a4508263e52bc3331674c36
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Basic ASN.1 Object Interface                   *
 *************************************************/
-class ASN1_Object
+class BOTAN_DLL ASN1_Object
    {
    public:
       virtual void encode_into(class DER_Encoder&) const = 0;
@@ -26,7 +26,7 @@ class ASN1_Object
 /*************************************************
 * BER Encoded Object                             *
 *************************************************/
-class BER_Object
+class BOTAN_DLL BER_Object
    {
    public:
       void assert_is_a(ASN1_Tag, ASN1_Tag);
============================================================
--- include/asn1_obj.h	79894e23c4ab45f61b30583b94444f6079e252e5
+++ include/asn1_obj.h	689ebbff1a5254e49f3cd7baa5a9fe82d9b082f6
@@ -18,7 +18,7 @@ namespace Botan {
 /*************************************************
 * Attribute                                      *
 *************************************************/
-class Attribute : public ASN1_Object
+class BOTAN_DLL Attribute : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -35,7 +35,7 @@ class Attribute : public ASN1_Object
 /*************************************************
 * X.509 Time                                     *
 *************************************************/
-class X509_Time : public ASN1_Object
+class BOTAN_DLL X509_Time : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -62,7 +62,7 @@ class X509_Time : public ASN1_Object
 /*************************************************
 * Simple String                                  *
 *************************************************/
-class ASN1_String : public ASN1_Object
+class BOTAN_DLL ASN1_String : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -83,7 +83,7 @@ class ASN1_String : public ASN1_Object
 /*************************************************
 * Distinguished Name                             *
 *************************************************/
-class X509_DN : public ASN1_Object
+class BOTAN_DLL X509_DN : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -113,7 +113,7 @@ class X509_DN : public ASN1_Object
 /*************************************************
 * Alternative Name                               *
 *************************************************/
-class AlternativeName : public ASN1_Object
+class BOTAN_DLL AlternativeName : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -139,24 +139,26 @@ class AlternativeName : public ASN1_Obje
 /*************************************************
 * Comparison Operations                          *
 *************************************************/
-bool operator==(const AlgorithmIdentifier&, const AlgorithmIdentifier&);
-bool operator!=(const AlgorithmIdentifier&, const AlgorithmIdentifier&);
+bool BOTAN_DLL operator==(const AlgorithmIdentifier&,
+                          const AlgorithmIdentifier&);
+bool BOTAN_DLL operator!=(const AlgorithmIdentifier&,
+                          const AlgorithmIdentifier&);

-bool operator==(const X509_Time&, const X509_Time&);
-bool operator!=(const X509_Time&, const X509_Time&);
-bool operator<=(const X509_Time&, const X509_Time&);
-bool operator>=(const X509_Time&, const X509_Time&);
+bool BOTAN_DLL operator==(const X509_Time&, const X509_Time&);
+bool BOTAN_DLL operator!=(const X509_Time&, const X509_Time&);
+bool BOTAN_DLL operator<=(const X509_Time&, const X509_Time&);
+bool BOTAN_DLL operator>=(const X509_Time&, const X509_Time&);

-bool operator==(const X509_DN&, const X509_DN&);
-bool operator!=(const X509_DN&, const X509_DN&);
-bool operator<(const X509_DN&, const X509_DN&);
+bool BOTAN_DLL operator==(const X509_DN&, const X509_DN&);
+bool BOTAN_DLL operator!=(const X509_DN&, const X509_DN&);
+bool BOTAN_DLL operator<(const X509_DN&, const X509_DN&);

 /*************************************************
 * Helper Functions                               *
 *************************************************/
-s32bit validity_check(const X509_Time&, const X509_Time&, u64bit);
+s32bit BOTAN_DLL validity_check(const X509_Time&, const X509_Time&, u64bit);

-bool is_string_type(ASN1_Tag);
+bool BOTAN_DLL is_string_type(ASN1_Tag);

 }

============================================================
--- include/asn1_oid.h	23e21c30ec13da88cc841e270021519c5229d5b5
+++ include/asn1_oid.h	6e4b868ccc447a35b13af5575146d38cc145e05f
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * ASN.1 Object Identifier                        *
 *************************************************/
-class OID : public ASN1_Object
+class BOTAN_DLL OID : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -37,13 +37,13 @@ class OID : public ASN1_Object
 /*************************************************
 * Append another component onto the OID          *
 *************************************************/
-OID operator+(const OID&, u32bit);
+OID BOTAN_DLL operator+(const OID&, u32bit);

 /*************************************************
 * Compare two OIDs                               *
 *************************************************/
-bool operator!=(const OID&, const OID&);
-bool operator<(const OID&, const OID&);
+bool BOTAN_DLL operator!=(const OID&, const OID&);
+bool BOTAN_DLL operator<(const OID&, const OID&);

 }

============================================================
--- include/base.h	0dfe04238a2d8f7f9354f07a4a41ed758d2b596a
+++ include/base.h	54a99ec584afb04330ebe7b6c2baaca06a0c0246
@@ -19,7 +19,7 @@ static const u32bit DEFAULT_BUFFERSIZE =
 /*************************************************
 * Symmetric Algorithm                            *
 *************************************************/
-class SymmetricAlgorithm
+class BOTAN_DLL SymmetricAlgorithm
    {
    public:
       const u32bit MAXIMUM_KEYLENGTH, MINIMUM_KEYLENGTH, KEYLENGTH_MULTIPLE;
@@ -38,7 +38,7 @@ class SymmetricAlgorithm
 /*************************************************
 * Block Cipher                                   *
 *************************************************/
-class BlockCipher : public SymmetricAlgorithm
+class BOTAN_DLL BlockCipher : public SymmetricAlgorithm
    {
    public:
       const u32bit BLOCK_SIZE;
@@ -61,7 +61,7 @@ class BlockCipher : public SymmetricAlgo
 /*************************************************
 * Stream Cipher                                  *
 *************************************************/
-class StreamCipher : public SymmetricAlgorithm
+class BOTAN_DLL StreamCipher : public SymmetricAlgorithm
    {
    public:
       const u32bit IV_LENGTH;
@@ -85,7 +85,7 @@ class StreamCipher : public SymmetricAlg
 /*************************************************
 * Buffered Computation                           *
 *************************************************/
-class BufferedComputation
+class BOTAN_DLL BufferedComputation
    {
    public:
       const u32bit OUTPUT_LENGTH;
@@ -108,7 +108,7 @@ class BufferedComputation
 /*************************************************
 * Hash Function                                  *
 *************************************************/
-class HashFunction : public BufferedComputation
+class BOTAN_DLL HashFunction : public BufferedComputation
    {
    public:
       const u32bit HASH_BLOCK_SIZE;
@@ -124,7 +124,7 @@ class HashFunction : public BufferedComp
 /*************************************************
 * Message Authentication Code                    *
 *************************************************/
-class MessageAuthenticationCode : public BufferedComputation,
+class BOTAN_DLL MessageAuthenticationCode : public BufferedComputation,
                                   public SymmetricAlgorithm
    {
    public:
@@ -141,7 +141,7 @@ class MessageAuthenticationCode : public
 /*************************************************
 * Entropy Source                                 *
 *************************************************/
-class EntropySource
+class BOTAN_DLL EntropySource
    {
    public:
       virtual u32bit slow_poll(byte[], u32bit) = 0;
@@ -152,11 +152,11 @@ class EntropySource
 /*************************************************
 * Random Number Generator                        *
 *************************************************/
-class RandomNumberGenerator
+class BOTAN_DLL RandomNumberGenerator
    {
    public:
       virtual void randomize(byte[], u32bit) throw(PRNG_Unseeded) = 0;
-      virtual bool is_seeded() const { return true; }
+      virtual bool is_seeded() const = 0;
       virtual void clear() throw() {};

       void add_entropy(const byte[], u32bit);
============================================================
--- include/base64.h	d1f12f08c64810dd5901cca8902bd3d9bec1bec8
+++ include/base64.h	3155e46ef5f905472ba75bfcf21a3347405175cf
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Base64 Encoder                                 *
 *************************************************/
-class Base64_Encoder : public Filter
+class BOTAN_DLL Base64_Encoder : public Filter
    {
    public:
       static void encode(const byte[3], byte[4]);
@@ -36,7 +36,7 @@ class Base64_Encoder : public Filter
 /*************************************************
 * Base64 Decoder                                 *
 *************************************************/
-class Base64_Decoder : public Filter
+class BOTAN_DLL Base64_Decoder : public Filter
    {
    public:
       static void decode(const byte[4], byte[3]);
============================================================
--- include/basefilt.h	3c60162d57d6362585bd2a0a6ba609c69848ee3b
+++ include/basefilt.h	efa2ea51c6eee5fd064a1f0b88084009313ce9e5
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Chain                                          *
 *************************************************/
-class Chain : public Fanout_Filter
+class BOTAN_DLL Chain : public Fanout_Filter
    {
    public:
       void write(const byte input[], u32bit length) { send(input, length); }
@@ -25,7 +25,7 @@ class Chain : public Fanout_Filter
 /*************************************************
 * Fork                                           *
 *************************************************/
-class Fork : public Fanout_Filter
+class BOTAN_DLL Fork : public Fanout_Filter
    {
    public:
       void write(const byte input[], u32bit length) { send(input, length); }
@@ -38,7 +38,7 @@ class Fork : public Fanout_Filter
 /*************************************************
 * Keyed Filter                                   *
 *************************************************/
-class Keyed_Filter : public Filter
+class BOTAN_DLL Keyed_Filter : public Filter
    {
    public:
       virtual void set_key(const SymmetricKey&);
============================================================
--- include/ber_dec.h	bbf9928c67e9657232a99f2153430f93dd29abd6
+++ include/ber_dec.h	90a3ca1bab5637490b05f6dce57aca75fc794b01
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * BER Decoding Object                            *
 *************************************************/
-class BER_Decoder
+class BOTAN_DLL BER_Decoder
    {
    public:
       BER_Object get_next_object();
@@ -120,7 +120,7 @@ namespace BER {
 *************************************************/
 namespace BER {

-void decode(BER_Decoder&, Key_Constraints&);
+void BOTAN_DLL decode(BER_Decoder&, Key_Constraints&);

 }

============================================================
--- include/bigint.h	ed1927cc126f73b40fe47039e6c98261a19fd002
+++ include/bigint.h	fb6bdbaf9256d243c2a40b877fbb572986b76b77
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * BigInt                                         *
 *************************************************/
-class BigInt
+class BOTAN_DLL BigInt
    {
    public:
       enum Base { Octal = 8, Decimal = 10, Hexadecimal = 16, Binary = 256 };
@@ -113,14 +113,14 @@ class BigInt
 /*************************************************
 * Arithmetic Operators                           *
 *************************************************/
-BigInt operator+(const BigInt&, const BigInt&);
-BigInt operator-(const BigInt&, const BigInt&);
-BigInt operator*(const BigInt&, const BigInt&);
-BigInt operator/(const BigInt&, const BigInt&);
-BigInt operator%(const BigInt&, const BigInt&);
-word   operator%(const BigInt&, word);
-BigInt operator<<(const BigInt&, u32bit);
-BigInt operator>>(const BigInt&, u32bit);
+BigInt BOTAN_DLL operator+(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL operator-(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL operator*(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL operator/(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL operator%(const BigInt&, const BigInt&);
+word   BOTAN_DLL operator%(const BigInt&, word);
+BigInt BOTAN_DLL operator<<(const BigInt&, u32bit);
+BigInt BOTAN_DLL operator>>(const BigInt&, u32bit);

 /*************************************************
 * Comparison Operators                           *
@@ -141,8 +141,8 @@ inline bool operator>(const BigInt& a, c
 /*************************************************
 * I/O Operators                                  *
 *************************************************/
-std::ostream& operator<<(std::ostream&, const BigInt&);
-std::istream& operator>>(std::istream&, BigInt&);
+BOTAN_DLL std::ostream& operator<<(std::ostream&, const BigInt&);
+BOTAN_DLL std::istream& operator>>(std::istream&, BigInt&);

 }

============================================================
--- include/blinding.h	a21d259830b078b0e8f3ba76c48a66b92247204c
+++ include/blinding.h	dde8b94457fefaf91016cd617dc7590c3bbf9529
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Blinding Function Object                       *
 *************************************************/
-class Blinder
+class BOTAN_DLL Blinder
    {
    public:
       BigInt blind(const BigInt&) const;
============================================================
--- include/blowfish.h	09a78b0f7a4c5456346540885931b7504f35bd79
+++ include/blowfish.h	d910c2b54b87c511ac9f21f1254e72ed24e5fa82
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Blowfish                                       *
 *************************************************/
-class Blowfish : public BlockCipher
+class BOTAN_DLL Blowfish : public BlockCipher
    {
    public:
       void clear() throw();
@@ -26,7 +26,8 @@ class Blowfish : public BlockCipher
       void key(const byte[], u32bit);
       void generate_sbox(u32bit[], u32bit, u32bit&, u32bit&) const;

-      static const u32bit PBOX[18], SBOX[1024];
+      static const u32bit PBOX[18];
+      static const u32bit SBOX[1024];

       SecureBuffer<u32bit, 256> S1, S2, S3, S4;
       SecureBuffer<u32bit, 18> P;
============================================================
--- include/buf_es.h	bf69fc56fb8169929d529afc2e911f954408a838
+++ include/buf_es.h	6d0b85ee23b95511cca43e7754a65494d8553b0c
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Buffered EntropySource                         *
 *************************************************/
-class Buffered_EntropySource : public EntropySource
+class BOTAN_DLL Buffered_EntropySource : public EntropySource
    {
    public:
       u32bit slow_poll(byte[], u32bit);
============================================================
--- include/buf_filt.h	9a6e15cd22d291c03af283ec5d723b1f04f7d482
+++ include/buf_filt.h	a87ed4badce2ec906b1e048e3d876f629a525f10
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Buffering Filter                               *
 *************************************************/
-class Buffering_Filter : public Filter
+class BOTAN_DLL Buffering_Filter : public Filter
    {
    public:
       void write(const byte[], u32bit);
============================================================
--- include/cast128.h	04f8ca07c0f6e1829f70f2eaebf153c4df36fc09
+++ include/cast128.h	3ab5011603389f700aa77e2b3b7d2529b8c3648e
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CAST-128                                       *
 *************************************************/
-class CAST_128 : public BlockCipher
+class BOTAN_DLL CAST_128 : public BlockCipher
    {
    public:
       void clear() throw() { MK.clear(); RK.clear(); }
@@ -27,7 +27,10 @@ class CAST_128 : public BlockCipher

       static void key_schedule(u32bit[16], u32bit[4]);

-      static const u32bit S5[256], S6[256], S7[256], S8[256];
+      static const u32bit S5[256];
+      static const u32bit S6[256];
+      static const u32bit S7[256];
+      static const u32bit S8[256];

       SecureBuffer<u32bit, 16> MK, RK;
    };
============================================================
--- include/cast256.h	a42b17aab8fb3bfe958d0842e2bcd962cdf4bd8e
+++ include/cast256.h	2a0689608d851aa9bd85a97dd38043fa89017a04
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CAST-256                                       *
 *************************************************/
-class CAST_256 : public BlockCipher
+class BOTAN_DLL CAST_256 : public BlockCipher
    {
    public:
       void clear() throw() { MK.clear(); RK.clear(); }
============================================================
--- include/cbc.h	f4651ab650fe65917932c36f9345bed021fb5556
+++ include/cbc.h	df71821e246ae7b793787d4de94c1caae4659c5f
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * CBC Encryption                                 *
 *************************************************/
-class CBC_Encryption : public BlockCipherMode
+class BOTAN_DLL CBC_Encryption : public BlockCipherMode
    {
    public:
       CBC_Encryption(const std::string&, const std::string&);
@@ -30,7 +30,7 @@ class CBC_Encryption : public BlockCiphe
 /*************************************************
 * CBC Decryption                                 *
 *************************************************/
-class CBC_Decryption : public BlockCipherMode
+class BOTAN_DLL CBC_Decryption : public BlockCipherMode
    {
    public:
       CBC_Decryption(const std::string&, const std::string&);
============================================================
--- include/cbc_mac.h	0e97c1d1ff160caff0e75b3b20ff6d6c089c236a
+++ include/cbc_mac.h	d27531534d83b3bb9b20177c27a03cc96acd858d
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CBC-MAC                                        *
 *************************************************/
-class CBC_MAC : public MessageAuthenticationCode
+class BOTAN_DLL CBC_MAC : public MessageAuthenticationCode
    {
    public:
       void clear() throw();
============================================================
--- include/certstor.h	df804a2c3adf5c23baa2b03d71452b7713eda226
+++ include/certstor.h	4f44d45129289f39e37c3dff1c2397d585c77656
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Certificate Store Interface                    *
 *************************************************/
-class Certificate_Store
+class BOTAN_DLL Certificate_Store
    {
    public:
       virtual std::vector<X509_Certificate>
============================================================
--- include/cfb.h	c16cbb250f291241cd804869085cda04369136a2
+++ include/cfb.h	d6fcd294c41d8665b191c69e4964ba79ac084b61
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CFB Encryption                                 *
 *************************************************/
-class CFB_Encryption : public BlockCipherMode
+class BOTAN_DLL CFB_Encryption : public BlockCipherMode
    {
    public:
       CFB_Encryption(const std::string&, u32bit = 0);
@@ -28,7 +28,7 @@ class CFB_Encryption : public BlockCiphe
 /*************************************************
 * CFB Decryption                                 *
 *************************************************/
-class CFB_Decryption : public BlockCipherMode
+class BOTAN_DLL CFB_Decryption : public BlockCipherMode
    {
    public:
       CFB_Decryption(const std::string&, u32bit = 0);
============================================================
--- include/charset.h	d14be390cbcd1b0b0a33005c0c6b2165c66fd8b1
+++ include/charset.h	58f38717c996835f6110b4c932b0df98032a0fbe
@@ -1,4 +1,4 @@
-/*************************************************
+n/*************************************************
 * Character Set Handling Header File             *
 * (C) 1999-2007 Jack Lloyd                       *
 *************************************************/
============================================================
--- include/cmac.h	18c144695270cfa27f065ca94c48f119534c5c83
+++ include/cmac.h	4e32fba357c2b62e83e5316f47fc4d5c587a82b5
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CMAC                                           *
 *************************************************/
-class CMAC : public MessageAuthenticationCode
+class BOTAN_DLL CMAC : public MessageAuthenticationCode
    {
    public:
       void clear() throw();
============================================================
--- include/config.h	229617bc66e109964fa682dfa11dee54b39c9c48
+++ include/config.h	5acbd2e041ef13562c85e988834f2b252c3c5a9d
@@ -17,7 +17,7 @@ namespace Botan {
 /*************************************************
 * Library Configuration Settings                 *
 *************************************************/
-class Config
+class BOTAN_DLL Config
    {
    public:
       Config();
@@ -53,7 +53,7 @@ class Config
 /*************************************************
 * Hook for the global config                     *
 *************************************************/
-Config& global_config();
+BOTAN_DLL Config& global_config();

 }

============================================================
--- include/crc24.h	d7750f1c09b0f34e07dc4331b8b1e96d80f838fe
+++ include/crc24.h	05f71a16d271e548513abb74854b9f5da9dbbf24
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CRC24                                          *
 *************************************************/
-class CRC24 : public HashFunction
+class BOTAN_DLL CRC24 : public HashFunction
    {
    public:
       void clear() throw() { crc = 0xB704CE; }
============================================================
--- include/crc32.h	9690b6ac67b4af3bf93e685a87f5e47ad7ffe8de
+++ include/crc32.h	ecffda4a723a75444b477e2e37bdd24d1c8656e1
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CRC32                                          *
 *************************************************/
-class CRC32 : public HashFunction
+class BOTAN_DLL CRC32 : public HashFunction
    {
    public:
       void clear() throw() { crc = 0xFFFFFFFF; }
============================================================
--- include/crl_ent.h	a40e0b1fa6be72627250db0ea2deec3b3fac7a80
+++ include/crl_ent.h	ed0bbb9460910d21f367e8ace0286cf93c520db9
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CRL Entry                                      *
 *************************************************/
-class CRL_Entry : public ASN1_Object
+class BOTAN_DLL CRL_Entry : public ASN1_Object
    {
    public:
       void encode_into(class DER_Encoder&) const;
@@ -35,9 +35,9 @@ class CRL_Entry : public ASN1_Object
 /*************************************************
 * Comparison Operations                          *
 *************************************************/
-bool operator==(const CRL_Entry&, const CRL_Entry&);
-bool operator!=(const CRL_Entry&, const CRL_Entry&);
-bool operator<(const CRL_Entry&, const CRL_Entry&);
+BOTAN_DLL bool operator==(const CRL_Entry&, const CRL_Entry&);
+BOTAN_DLL bool operator!=(const CRL_Entry&, const CRL_Entry&);
+BOTAN_DLL bool operator<(const CRL_Entry&, const CRL_Entry&);

 }

============================================================
--- include/ctr.h	f2c4136e4461600e4f34e88296b412dc3f5819b7
+++ include/ctr.h	7783b5e3e59dd949a5c0a4af1cd8c3abe46a9c17
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CTR-BE Mode                                    *
 *************************************************/
-class CTR_BE : public BlockCipherMode
+class BOTAN_DLL CTR_BE : public BlockCipherMode
    {
    public:
       CTR_BE(const std::string&);
============================================================
--- include/cts.h	363763a5730bd19dd68435d3f0e1d7abbf4322e4
+++ include/cts.h	77fdfabc32ea2a733a82947cca8c1795de7c49d4
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * CTS Encryption                                 *
 *************************************************/
-class CTS_Encryption : public BlockCipherMode
+class BOTAN_DLL CTS_Encryption : public BlockCipherMode
    {
    public:
       CTS_Encryption(const std::string&);
@@ -28,7 +28,7 @@ class CTS_Encryption : public BlockCiphe
 /*************************************************
 * CTS Decryption                                 *
 *************************************************/
-class CTS_Decryption : public BlockCipherMode
+class BOTAN_DLL CTS_Decryption : public BlockCipherMode
    {
    public:
       CTS_Decryption(const std::string&);
============================================================
--- include/data_snk.h	1b779375cae6bd6c59ef048d1b16b2083d3f3747
+++ include/data_snk.h	f5b662f62ade0945865ab4f9edb5a3bae9103b96
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Generic DataSink Interface                     *
 *************************************************/
-class DataSink : public Filter
+class BOTAN_DLL DataSink : public Filter
    {
    public:
       bool attachable() { return false; }
@@ -28,7 +28,7 @@ class DataSink : public Filter
 /*************************************************
 * Stream-Based DataSink                          *
 *************************************************/
-class DataSink_Stream : public DataSink
+class BOTAN_DLL DataSink_Stream : public DataSink
    {
    public:
       void write(const byte[], u32bit);
============================================================
--- include/data_src.h	47b6e0c2a1dea94812f82fd4b0150e1f24619adb
+++ include/data_src.h	e021a46396a1b8fd0a933c115d53a8fa0543e225
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Generic DataSource Interface                   *
 *************************************************/
-class DataSource
+class BOTAN_DLL DataSource
    {
    public:
       virtual u32bit read(byte[], u32bit) = 0;
@@ -36,7 +36,7 @@ class DataSource
 /*************************************************
 * Memory-Based DataSource                        *
 *************************************************/
-class DataSource_Memory : public DataSource
+class BOTAN_DLL DataSource_Memory : public DataSource
    {
    public:
       u32bit read(byte[], u32bit);
@@ -54,7 +54,7 @@ class DataSource_Memory : public DataSou
 /*************************************************
 * Stream-Based DataSource                        *
 *************************************************/
-class DataSource_Stream : public DataSource
+class BOTAN_DLL DataSource_Stream : public DataSource
    {
    public:
       u32bit read(byte[], u32bit);
============================================================
--- include/datastor.h	69e03208c5349e6a84e40084be42c32770ce3d73
+++ include/datastor.h	099bbbabbff92013990fdb0ac8e96dccddfb7732
@@ -17,10 +17,10 @@ namespace Botan {
 /*************************************************
 * Data Store                                     *
 *************************************************/
-class Data_Store
+class BOTAN_DLL Data_Store
    {
    public:
-      class Matcher
+      class BOTAN_DLL Matcher
          {
          public:
             virtual bool operator()(const std::string&,
============================================================
--- include/def_powm.h	b8fd1233ac5e90aea858ff83bcc53ad9e93a0ce6
+++ include/def_powm.h	441262d6c635e3dc9678bb0fb1b725fb1cabca99
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Fixed Window Exponentiator                     *
 *************************************************/
-class Fixed_Window_Exponentiator : public Modular_Exponentiator
+class BOTAN_DLL Fixed_Window_Exponentiator : public Modular_Exponentiator
    {
    public:
       void set_exponent(const BigInt&);
@@ -37,7 +37,7 @@ class Fixed_Window_Exponentiator : publi
 /*************************************************
 * Montgomery Exponentiator                       *
 *************************************************/
-class Montgomery_Exponentiator : public Modular_Exponentiator
+class BOTAN_DLL Montgomery_Exponentiator : public Modular_Exponentiator
    {
    public:
       void set_exponent(const BigInt&);
============================================================
--- include/defalloc.h	90dbc79dca64e726dea513adbd09bceb47414299
+++ include/defalloc.h	c983a1a75c83af8737ecfbe70770e22aed71d4c6
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Malloc Allocator                              *
 *************************************************/
-class Malloc_Allocator : public Allocator
+class BOTAN_DLL Malloc_Allocator : public Allocator
    {
    public:
       void* allocate(u32bit);
@@ -25,7 +25,7 @@ class Malloc_Allocator : public Allocato
 /*************************************************
 * Locking Allocator                              *
 *************************************************/
-class Locking_Allocator : public Pooling_Allocator
+class BOTAN_DLL Locking_Allocator : public Pooling_Allocator
    {
    public:
       std::string type() const { return "locking"; }
============================================================
--- include/der_enc.h	c9c32338023d05e61e061ed29a357bf8ec1f5d98
+++ include/der_enc.h	2bd34135e89958c97778e92d5206b2b411887961
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * General DER Encoding Object                    *
 *************************************************/
-class DER_Encoder
+class BOTAN_DLL DER_Encoder
    {
    public:
       SecureVector<byte> get_contents();
============================================================
--- include/des.h	4e46ca0119049b63d8ec93f35efd598e4473ba14
+++ include/des.h	bf36f106a5d21d182633280efaf4db5aca06517a
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * DES                                            *
 *************************************************/
-class DES : public BlockCipher
+class BOTAN_DLL DES : public BlockCipher
    {
    public:
       void clear() throw() { round_key.clear(); }
@@ -32,17 +32,27 @@ class DES : public BlockCipher
       static void IP(u32bit&, u32bit&);
       static void FP(u32bit&, u32bit&);

-      static const u32bit SPBOX1[256], SPBOX2[256], SPBOX3[256], SPBOX4[256],
-                          SPBOX5[256], SPBOX6[256], SPBOX7[256], SPBOX8[256];
-      static const u64bit IPTAB1[256], IPTAB2[256], FPTAB1[256], FPTAB2[256];
+      static const u32bit SPBOX1[256];
+      static const u32bit SPBOX2[256];
+      static const u32bit SPBOX3[256];
+      static const u32bit SPBOX4[256];
+      static const u32bit SPBOX5[256];
+      static const u32bit SPBOX6[256];
+      static const u32bit SPBOX7[256];
+      static const u32bit SPBOX8[256];

+      static const u64bit IPTAB1[256];
+      static const u64bit IPTAB2[256];
+      static const u64bit FPTAB1[256];
+      static const u64bit FPTAB2[256];
+
       SecureBuffer<u32bit, 32> round_key;
    };

 /*************************************************
 * Triple DES                                     *
 *************************************************/
-class TripleDES : public BlockCipher
+class BOTAN_DLL TripleDES : public BlockCipher
    {
    public:
       void clear() throw() { des1.clear(); des2.clear(); des3.clear(); }
@@ -59,7 +69,7 @@ class TripleDES : public BlockCipher
 /*************************************************
 * DESX                                           *
 *************************************************/
-class DESX : public BlockCipher
+class BOTAN_DLL DESX : public BlockCipher
    {
    public:
       void clear() throw() { des.clear(); K1.clear(); K2.clear(); }
============================================================
--- include/dh.h	b46595551fbb9db58536e780f0367d5a0d576e8d
+++ include/dh.h	1f8c9ae4e3e47eb54bf37dd5830feefe33fce1d3
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Diffie-Hellman Public Key                      *
 *************************************************/
-class DH_PublicKey : public virtual DL_Scheme_PublicKey
+class BOTAN_DLL DH_PublicKey : public virtual DL_Scheme_PublicKey
    {
    public:
       std::string algo_name() const { return "DH"; }
@@ -33,7 +33,7 @@ class DH_PublicKey : public virtual DL_S
 /*************************************************
 * Diffie-Hellman Private Key                     *
 *************************************************/
-class DH_PrivateKey : public DH_PublicKey,
+class BOTAN_DLL DH_PrivateKey : public DH_PublicKey,
                       public PK_Key_Agreement_Key,
                       public virtual DL_Scheme_PrivateKey
    {
============================================================
--- include/dl_algo.h	1f443e80cacfcedd444b4c0cf43528823b8736ab
+++ include/dl_algo.h	c6c8ab1cc99d09053aa3e887ed0f31d23f029b79
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * DL Public Key                                  *
 *************************************************/
-class DL_Scheme_PublicKey : public virtual Public_Key
+class BOTAN_DLL DL_Scheme_PublicKey : public virtual Public_Key
    {
    public:
       bool check_key(bool) const;
@@ -39,7 +39,7 @@ class DL_Scheme_PublicKey : public virtu
 /*************************************************
 * DL Private Key                                 *
 *************************************************/
-class DL_Scheme_PrivateKey : public virtual DL_Scheme_PublicKey,
+class BOTAN_DLL DL_Scheme_PrivateKey : public virtual DL_Scheme_PublicKey,
                              public virtual Private_Key
    {
    public:
============================================================
--- include/dl_group.h	01226cb8248f76ca5b1d587ab42ff1d849eef994
+++ include/dl_group.h	2402780054b58ab40f961f2600695a19461df17b
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Discrete Logarithm Group                       *
 *************************************************/
-class DL_Group
+class BOTAN_DLL DL_Group
    {
    public:
       const BigInt& get_p() const;
============================================================
--- include/dlies.h	2d4210fab2308626bd6f8c08a3f4596be6776200
+++ include/dlies.h	ba8018d6681f084e1fabfab66903260939bec948
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * DLIES Encryption                               *
 *************************************************/
-class DLIES_Encryptor : public PK_Encryptor
+class BOTAN_DLL DLIES_Encryptor : public PK_Encryptor
    {
    public:
       DLIES_Encryptor(const PK_Key_Agreement_Key&,
@@ -33,7 +33,7 @@ class DLIES_Encryptor : public PK_Encryp
 /*************************************************
 * DLIES Decryption                               *
 *************************************************/
-class DLIES_Decryptor : public PK_Decryptor
+class BOTAN_DLL DLIES_Decryptor : public PK_Decryptor
    {
    public:
       DLIES_Decryptor(const PK_Key_Agreement_Key&,
============================================================
--- include/dsa.h	669645224181beb0dd4cd2b973177c32101598c5
+++ include/dsa.h	03ca791b177eb9709d13a5f79181a157bca0aa4d
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * DSA Public Key                                 *
 *************************************************/
-class DSA_PublicKey : public PK_Verifying_wo_MR_Key,
+class BOTAN_DLL DSA_PublicKey : public PK_Verifying_wo_MR_Key,
                       public virtual DL_Scheme_PublicKey
    {
    public:
@@ -38,7 +38,7 @@ class DSA_PublicKey : public PK_Verifyin
 /*************************************************
 * DSA Private Key                                *
 *************************************************/
-class DSA_PrivateKey : public DSA_PublicKey,
+class BOTAN_DLL DSA_PrivateKey : public DSA_PublicKey,
                        public PK_Signing_Key,
                        public virtual DL_Scheme_PrivateKey
    {
============================================================
--- include/eax.h	a9a6b7d9ce355e1362719185e093ef91c48b40fa
+++ include/eax.h	66acdb5b8c0a5552f01ffd2127383864737801d1
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * EAX Base Class                                 *
 *************************************************/
-class EAX_Base : public Keyed_Filter
+class BOTAN_DLL EAX_Base : public Keyed_Filter
    {
    public:
       void set_key(const SymmetricKey&);
@@ -39,7 +39,7 @@ class EAX_Base : public Keyed_Filter
 /*************************************************
 * EAX Encryption                                 *
 *************************************************/
-class EAX_Encryption : public EAX_Base
+class BOTAN_DLL EAX_Encryption : public EAX_Base
    {
    public:
       EAX_Encryption(const std::string&, u32bit = 0);
@@ -53,7 +53,7 @@ class EAX_Encryption : public EAX_Base
 /*************************************************
 * EAX Decryption                                 *
 *************************************************/
-class EAX_Decryption : public EAX_Base
+class BOTAN_DLL EAX_Decryption : public EAX_Base
    {
    public:
       EAX_Decryption(const std::string&, u32bit = 0);
============================================================
--- include/ecb.h	b720b7718d5d1f7a163f9cea7b19de343972b872
+++ include/ecb.h	f48d0a49b4d848d4707e93c4112aeea0620e4d25
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * ECB                                            *
 *************************************************/
-class ECB : public BlockCipherMode
+class BOTAN_DLL ECB : public BlockCipherMode
    {
    protected:
       ECB(const std::string&, const std::string&);
@@ -27,7 +27,7 @@ class ECB : public BlockCipherMode
 /*************************************************
 * ECB Encryption                                 *
 *************************************************/
-class ECB_Encryption : public ECB
+class BOTAN_DLL ECB_Encryption : public ECB
    {
    public:
       ECB_Encryption(const std::string&, const std::string&);
@@ -41,7 +41,7 @@ class ECB_Encryption : public ECB
 /*************************************************
 * ECB Decryption                                 *
 *************************************************/
-class ECB_Decryption : public ECB
+class BOTAN_DLL ECB_Decryption : public ECB
    {
    public:
       ECB_Decryption(const std::string&, const std::string&);
============================================================
--- include/elgamal.h	0494d9ec66400a456f6f0638f8473c23ae59507f
+++ include/elgamal.h	ae94744be2a6ed1bad2c8485f49b77fb4423ed2d
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * ElGamal Public Key                             *
 *************************************************/
-class ElGamal_PublicKey : public PK_Encrypting_Key,
+class BOTAN_DLL ElGamal_PublicKey : public PK_Encrypting_Key,
                           public virtual DL_Scheme_PublicKey
    {
    public:
@@ -36,7 +36,7 @@ class ElGamal_PublicKey : public PK_Encr
 /*************************************************
 * ElGamal Private Key                            *
 *************************************************/
-class ElGamal_PrivateKey : public ElGamal_PublicKey,
+class BOTAN_DLL ElGamal_PrivateKey : public ElGamal_PublicKey,
                            public PK_Decrypting_Key,
                            public virtual DL_Scheme_PrivateKey
    {
============================================================
--- include/eme.h	0ec41143810e3e55630da3f66a493ed3e847fa70
+++ include/eme.h	28df8ed20f752944ed6db8d8d4b240070381e358
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * EME1                                           *
 *************************************************/
-class EME1 : public EME
+class BOTAN_DLL EME1 : public EME
    {
    public:
       u32bit maximum_input_size(u32bit) const;
@@ -31,7 +31,7 @@ class EME1 : public EME
 /*************************************************
 * EME_PKCS1v15                                   *
 *************************************************/
-class EME_PKCS1v15 : public EME
+class BOTAN_DLL EME_PKCS1v15 : public EME
    {
    public:
       u32bit maximum_input_size(u32bit) const;
============================================================
--- include/emsa.h	0f92faa34612455ed98f727223a3327e2f21a48c
+++ include/emsa.h	9a72ffbf9550acf6251278a4162adbc375afa7a2
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * EMSA1                                          *
 *************************************************/
-class EMSA1 : public EMSA
+class BOTAN_DLL EMSA1 : public EMSA
    {
    public:
       EMSA1(const std::string&);
@@ -30,7 +30,7 @@ class EMSA1 : public EMSA
 /*************************************************
 * EMSA2                                          *
 *************************************************/
-class EMSA2 : public EMSA
+class BOTAN_DLL EMSA2 : public EMSA
    {
    public:
       EMSA2(const std::string&);
@@ -47,7 +47,7 @@ class EMSA2 : public EMSA
 /*************************************************
 * EMSA3                                          *
 *************************************************/
-class EMSA3 : public EMSA
+class BOTAN_DLL EMSA3 : public EMSA
    {
    public:
       EMSA3(const std::string&);
@@ -63,7 +63,7 @@ class EMSA3 : public EMSA
 /*************************************************
 * EMSA4                                          *
 *************************************************/
-class EMSA4 : public EMSA
+class BOTAN_DLL EMSA4 : public EMSA
    {
    public:
       EMSA4(const std::string&, const std::string&);
@@ -83,7 +83,7 @@ class EMSA4 : public EMSA
 /*************************************************
 * EMSA-Raw                                       *
 *************************************************/
-class EMSA_Raw : public EMSA
+class BOTAN_DLL EMSA_Raw : public EMSA
    {
    private:
       void update(const byte[], u32bit);
============================================================
--- include/eng_def.h	8aa36afc93ca4981ef72d0650accabc49412763a
+++ include/eng_def.h	78c95898dc88c426b88c79e21a8b072bfcd77c59
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Default Engine                                 *
 *************************************************/
-class Default_Engine : public Engine
+class BOTAN_DLL Default_Engine : public Engine
    {
    public:
       IF_Operation* if_op(const BigInt&, const BigInt&, const BigInt&,
============================================================
--- include/engine.h	710e662f21035b9fd98b1da15430b043d33273d4
+++ include/engine.h	c0145b11930a092ae19f24be691b052aaa15f03c
@@ -20,11 +20,11 @@ namespace Botan {
 /*************************************************
 * Engine Base Class                              *
 *************************************************/
-class Engine
+class BOTAN_DLL Engine
    {
    public:
       template<typename T>
-      class Algorithm_Cache
+      class BOTAN_DLL Algorithm_Cache
          {
          public:
             virtual T* get(const std::string&) const = 0;
============================================================
--- include/exceptn.h	c336850fda55455f8dbfa05deb12d85b0fa1a081
+++ include/exceptn.h	6c8eb39d95fc61a0a1bf2201f053811c61e9623d
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Exception Base Class                           *
 *************************************************/
-class Exception : public std::exception
+class BOTAN_DLL Exception : public std::exception
    {
    public:
       const char* what() const throw() { return msg.c_str(); }
@@ -30,7 +30,7 @@ class Exception : public std::exception
 /*************************************************
 * Invalid_Argument Exception                     *
 *************************************************/
-struct Invalid_Argument : public Exception
+struct BOTAN_DLL Invalid_Argument : public Exception
    {
    Invalid_Argument(const std::string& err = "") : Exception(err) {}
    };
@@ -38,7 +38,7 @@ struct Invalid_Argument : public Excepti
 /*************************************************
 * Invalid_Key_Length Exception                   *
 *************************************************/
-struct Invalid_Key_Length : public Invalid_Argument
+struct BOTAN_DLL Invalid_Key_Length : public Invalid_Argument
    {
    Invalid_Key_Length(const std::string&, u32bit);
    };
@@ -46,7 +46,7 @@ struct Invalid_Key_Length : public Inval
 /*************************************************
 * Invalid_Block_Size Exception                   *
 *************************************************/
-struct Invalid_Block_Size : public Invalid_Argument
+struct BOTAN_DLL Invalid_Block_Size : public Invalid_Argument
    {
    Invalid_Block_Size(const std::string&, const std::string&);
    };
@@ -54,7 +54,7 @@ struct Invalid_Block_Size : public Inval
 /*************************************************
 * Invalid_IV_Length Exception                    *
 *************************************************/
-struct Invalid_IV_Length : public Invalid_Argument
+struct BOTAN_DLL Invalid_IV_Length : public Invalid_Argument
    {
    Invalid_IV_Length(const std::string&, u32bit);
    };
@@ -62,7 +62,7 @@ struct Invalid_IV_Length : public Invali
 /*************************************************
 * Invalid_State Exception                        *
 *************************************************/
-struct Invalid_State : public Exception
+struct BOTAN_DLL Invalid_State : public Exception
    {
    Invalid_State(const std::string& err) : Exception(err) {}
    };
@@ -70,7 +70,7 @@ struct Invalid_State : public Exception
 /*************************************************
 * PRNG_Unseeded Exception                        *
 *************************************************/
-struct PRNG_Unseeded : public Invalid_State
+struct BOTAN_DLL PRNG_Unseeded : public Invalid_State
    {
    PRNG_Unseeded(const std::string& algo) :
       Invalid_State("PRNG not seeded: " + algo) {}
@@ -79,7 +79,7 @@ struct PRNG_Unseeded : public Invalid_St
 /*************************************************
 * Policy_Violation Exception                     *
 *************************************************/
-struct Policy_Violation : public Invalid_State
+struct BOTAN_DLL Policy_Violation : public Invalid_State
    {
    Policy_Violation(const std::string& err) :
       Invalid_State("Policy violation: " + err) {}
@@ -88,7 +88,7 @@ struct Policy_Violation : public Invalid
 /*************************************************
 * Lookup_Error Exception                         *
 *************************************************/
-struct Lookup_Error : public Exception
+struct BOTAN_DLL Lookup_Error : public Exception
    {
    Lookup_Error(const std::string& err) : Exception(err) {}
    };
@@ -96,7 +96,7 @@ struct Lookup_Error : public Exception
 /*************************************************
 * Algorithm_Not_Found Exception                  *
 *************************************************/
-struct Algorithm_Not_Found : public Exception
+struct BOTAN_DLL Algorithm_Not_Found : public Exception
    {
    Algorithm_Not_Found(const std::string&);
    };
@@ -104,7 +104,7 @@ struct Algorithm_Not_Found : public Exce
 /*************************************************
 * Format_Error Exception                         *
 *************************************************/
-struct Format_Error : public Exception
+struct BOTAN_DLL Format_Error : public Exception
    {
    Format_Error(const std::string& err = "") : Exception(err) {}
    };
@@ -112,7 +112,7 @@ struct Format_Error : public Exception
 /*************************************************
 * Invalid_Algorithm_Name Exception               *
 *************************************************/
-struct Invalid_Algorithm_Name : public Format_Error
+struct BOTAN_DLL Invalid_Algorithm_Name : public Format_Error
    {
    Invalid_Algorithm_Name(const std::string&);
    };
@@ -120,7 +120,7 @@ struct Invalid_Algorithm_Name : public F
 /*************************************************
 * Encoding_Error Exception                       *
 *************************************************/
-struct Encoding_Error : public Format_Error
+struct BOTAN_DLL Encoding_Error : public Format_Error
    {
    Encoding_Error(const std::string& name) :
       Format_Error("Encoding error: " + name) {}
@@ -129,7 +129,7 @@ struct Encoding_Error : public Format_Er
 /*************************************************
 * Decoding_Error Exception                       *
 *************************************************/
-struct Decoding_Error : public Format_Error
+struct BOTAN_DLL Decoding_Error : public Format_Error
    {
    Decoding_Error(const std::string& name) :
       Format_Error("Decoding error: " + name) {}
@@ -138,7 +138,7 @@ struct Decoding_Error : public Format_Er
 /*************************************************
 * Invalid_OID Exception                          *
 *************************************************/
-struct Invalid_OID : public Decoding_Error
+struct BOTAN_DLL Invalid_OID : public Decoding_Error
    {
    Invalid_OID(const std::string& oid) :
       Decoding_Error("Invalid ASN.1 OID: " + oid) {}
@@ -147,7 +147,7 @@ struct Invalid_OID : public Decoding_Err
 /*************************************************
 * Stream_IO_Error Exception                      *
 *************************************************/
-struct Stream_IO_Error : public Exception
+struct BOTAN_DLL Stream_IO_Error : public Exception
    {
    Stream_IO_Error(const std::string& err) :
       Exception("I/O error: " + err) {}
@@ -156,7 +156,7 @@ struct Stream_IO_Error : public Exceptio
 /*************************************************
 * Configuration Error Exception                  *
 *************************************************/
-struct Config_Error : public Format_Error
+struct BOTAN_DLL Config_Error : public Format_Error
    {
    Config_Error(const std::string& err) :
       Format_Error("Config error: " + err) {}
@@ -166,7 +166,7 @@ struct Config_Error : public Format_Erro
 /*************************************************
 * Integrity Failure Exception                    *
 *************************************************/
-struct Integrity_Failure : public Exception
+struct BOTAN_DLL Integrity_Failure : public Exception
    {
    Integrity_Failure(const std::string& err) :
       Exception("Integrity failure: " + err) {}
@@ -175,7 +175,7 @@ struct Integrity_Failure : public Except
 /*************************************************
 * Internal_Error Exception                       *
 *************************************************/
-struct Internal_Error : public Exception
+struct BOTAN_DLL Internal_Error : public Exception
    {
    Internal_Error(const std::string& err) :
       Exception("Internal error: " + err) {}
@@ -184,7 +184,7 @@ struct Internal_Error : public Exception
 /*************************************************
 * Self Test Failure Exception                    *
 *************************************************/
-struct Self_Test_Failure : public Internal_Error
+struct BOTAN_DLL Self_Test_Failure : public Internal_Error
    {
    Self_Test_Failure(const std::string& err) :
       Internal_Error("Self test failed: " + err) {}
@@ -193,7 +193,7 @@ struct Self_Test_Failure : public Intern
 /*************************************************
 * Memory Allocation Exception                    *
 *************************************************/
-struct Memory_Exhaustion : public Exception
+struct BOTAN_DLL Memory_Exhaustion : public Exception
    {
    Memory_Exhaustion() :
       Exception("Ran out of memory, allocation failed") {}
============================================================
--- include/filter.h	c1df7bb407f4e3aebf3038583ddef572ee805899
+++ include/filter.h	c36b3a90313dae0e423930a7249e36e9ca8742f0
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Filter Base Class                              *
 *************************************************/
-class Filter
+class BOTAN_DLL Filter
    {
    public:
       virtual void write(const byte[], u32bit) = 0;
@@ -55,7 +55,7 @@ class Filter
 /*************************************************
 * Fanout Filter Base Class                       *
 *************************************************/
-class Fanout_Filter : public Filter
+class BOTAN_DLL Fanout_Filter : public Filter
    {
    protected:
       void incr_owns() { ++filter_owns; }
============================================================
--- include/filters.h	94d4f6b8d86cd9ce0521c0824decafaa625949b1
+++ include/filters.h	50d68a0509271b1a7a27ebd741b9c12ce4491019
@@ -18,7 +18,7 @@ namespace Botan {
 /*************************************************
 * Stream Cipher Filter                           *
 *************************************************/
-class StreamCipher_Filter : public Keyed_Filter
+class BOTAN_DLL StreamCipher_Filter : public Keyed_Filter
    {
    public:
       void seek(u32bit position) { cipher->seek(position); }
@@ -38,7 +38,7 @@ class StreamCipher_Filter : public Keyed
 /*************************************************
 * Hash Filter                                    *
 *************************************************/
-class Hash_Filter : public Filter
+class BOTAN_DLL Hash_Filter : public Filter
    {
    public:
       void write(const byte input[], u32bit len) { hash->update(input, len); }
@@ -54,7 +54,7 @@ class Hash_Filter : public Filter
 /*************************************************
 * MessageAuthenticationCode Filter               *
 *************************************************/
-class MAC_Filter : public Keyed_Filter
+class BOTAN_DLL MAC_Filter : public Keyed_Filter
    {
    public:
       void write(const byte input[], u32bit len) { mac->update(input, len); }
============================================================
--- include/fork256.h	48d316c02d0498c1f8511227f6d3712f8e788ea8
+++ include/fork256.h	48009420dee58362718e076efe4f96b6b776ff2c
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * FORK-256                                       *
 *************************************************/
-class FORK_256 : public MDx_HashFunction
+class BOTAN_DLL FORK_256 : public MDx_HashFunction
    {
    public:
       void clear() throw();
============================================================
--- include/gost.h	2258c8299c56e86e46324b2ecebf38d05827ad02
+++ include/gost.h	8bab6eb0bbff3ddda38f52bd1c373f63b4d94225
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * GOST                                           *
 *************************************************/
-class GOST : public BlockCipher
+class BOTAN_DLL GOST : public BlockCipher
    {
    public:
       void clear() throw() { EK.clear(); }
@@ -25,7 +25,10 @@ class GOST : public BlockCipher
       void dec(const byte[], byte[]) const;
       void key(const byte[], u32bit);

-      static const u32bit SBOX1[256], SBOX2[256], SBOX3[256], SBOX4[256];
+      static const u32bit SBOX1[256];
+      static const u32bit SBOX2[256];
+      static const u32bit SBOX3[256];
+      static const u32bit SBOX4[256];

       SecureBuffer<u32bit, 32> EK;
    };
============================================================
--- include/has160.h	302e61763c91ef37ca82c6fedc47c44b170ed225
+++ include/has160.h	cc1fc7609b6af354ce39184b20f8ff87dc3e5a2b
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * HAS-160                                        *
 *************************************************/
-class HAS_160 : public MDx_HashFunction
+class BOTAN_DLL HAS_160 : public MDx_HashFunction
    {
    public:
       void clear() throw();
============================================================
--- include/hash_id.h	87da714dcec8f4fabdba63c86021e0dd641e75f8
+++ include/hash_id.h	4dc7493061e94d973d823b28fcd226b8842dd81e
@@ -14,8 +14,8 @@ namespace Botan {
 /*************************************************
 * Return the values of various defined HashIDs   *
 *************************************************/
-MemoryVector<byte> pkcs_hash_id(const std::string&);
-byte ieee1363_hash_id(const std::string&);
+BOTAN_DLL MemoryVector<byte> pkcs_hash_id(const std::string&);
+BOTAN_DLL byte ieee1363_hash_id(const std::string&);

 }

============================================================
--- include/hex.h	65ff3d841d7a7d4506b99d175c9a8e4112794409
+++ include/hex.h	462c74e4913e272f052a3fb27f3a7235ba54655a
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Hex Encoder                                    *
 *************************************************/
-class Hex_Encoder : public Filter
+class BOTAN_DLL Hex_Encoder : public Filter
    {
    public:
       enum Case { Uppercase, Lowercase };
@@ -39,7 +39,7 @@ class Hex_Encoder : public Filter
 /*************************************************
 * Hex Decoder                                    *
 *************************************************/
-class Hex_Decoder : public Filter
+class BOTAN_DLL Hex_Decoder : public Filter
    {
    public:
       static byte decode(const byte[2]);
============================================================
--- include/hmac.h	f86ca2b60fe40cbae9ba1a5a02ea85c6a0cb2ca5
+++ include/hmac.h	536a96d1baa456d63ea688d2304ea8c8f54b5f6e
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * HMAC                                           *
 *************************************************/
-class HMAC : public MessageAuthenticationCode
+class BOTAN_DLL HMAC : public MessageAuthenticationCode
    {
    public:
       void clear() throw();
============================================================
--- include/idea.h	789b9471a535847a0ff19af71bebbc8514fb535d
+++ include/idea.h	f6b0ab5d54fb7a7f5e432feaa7e7cfa0da58753f
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * IDEA                                           *
 *************************************************/
-class IDEA : public BlockCipher
+class BOTAN_DLL IDEA : public BlockCipher
    {
    public:
       void clear() throw() { EK.clear(); DK.clear(); }
============================================================
--- include/if_algo.h	26d6793a1eb3c64a252713d32a188808e64cb92c
+++ include/if_algo.h	72be1c5cf84e117cc018604a352f686dd18564c1
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * IF Public Key                                  *
 *************************************************/
-class IF_Scheme_PublicKey : public virtual Public_Key
+class BOTAN_DLL IF_Scheme_PublicKey : public virtual Public_Key
    {
    public:
       bool check_key(bool) const;
@@ -36,7 +36,7 @@ class IF_Scheme_PublicKey : public virtu
 /*************************************************
 * IF Private Key                                 *
 *************************************************/
-class IF_Scheme_PrivateKey : public virtual IF_Scheme_PublicKey,
+class BOTAN_DLL IF_Scheme_PrivateKey : public virtual IF_Scheme_PublicKey,
                              public virtual Private_Key
    {
    public:
============================================================
--- include/init.h	bb896dab46a2ed1a6bbb6c2b2db629392b708bc7
+++ include/init.h	9e6c95b53667ca383d2b21876e09f873f2cc76af
@@ -6,6 +6,7 @@
 #ifndef BOTAN_INIT_H__
 #define BOTAN_INIT_H__

+#include <botan/build.h>
 #include <string>
 #include <map>

@@ -14,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Options for initializing the library           *
 *************************************************/
-class InitializerOptions
+class BOTAN_DLL InitializerOptions
    {
    public:
       bool thread_safe() const;
@@ -32,7 +33,7 @@ class InitializerOptions
 /*************************************************
 * Library Initialization/Shutdown Object         *
 *************************************************/
-class LibraryInitializer
+class BOTAN_DLL LibraryInitializer
    {
    public:
       static void initialize(const std::string& = "");
============================================================
--- include/kasumi.h	5b4ae12fa8e6eec6bb32e8e76e7140783a71857f
+++ include/kasumi.h	c6a4b45d4a6401a2d07fca50f7617e18d9a14755
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * KASUMI                                         *
 *************************************************/
-class KASUMI : public BlockCipher
+class BOTAN_DLL KASUMI : public BlockCipher
    {
    public:
       void clear() throw() { EK.clear(); }
============================================================
--- include/kdf.h	fbbd508477b8940b1d3d30e328539aa374abf25f
+++ include/kdf.h	a96cb1a3021c86215894c15c592eea114ce5463d
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * KDF1                                           *
 *************************************************/
-class KDF1 : public KDF
+class BOTAN_DLL KDF1 : public KDF
    {
    public:
       KDF1(const std::string&);
@@ -27,7 +27,7 @@ class KDF1 : public KDF
 /*************************************************
 * KDF2                                           *
 *************************************************/
-class KDF2 : public KDF
+class BOTAN_DLL KDF2 : public KDF
    {
    public:

@@ -41,7 +41,7 @@ class KDF2 : public KDF
 /*************************************************
 * X9.42 PRF                                      *
 *************************************************/
-class X942_PRF : public KDF
+class BOTAN_DLL X942_PRF : public KDF
    {
    public:
       X942_PRF(const std::string&);
============================================================
--- include/keypair.h	a4fc8eaa2d42b50ef6985927bac5cd225603585c
+++ include/keypair.h	791ce22bbca12caf243ea25be1c198812fef5c7f
@@ -15,8 +15,8 @@ namespace KeyPair {
 /*************************************************
 * Check key pair consistency                     *
 *************************************************/
-void check_key(PK_Encryptor*, PK_Decryptor*);
-void check_key(PK_Signer*, PK_Verifier*);
+BOTAN_DLL void check_key(PK_Encryptor*, PK_Decryptor*);
+BOTAN_DLL void check_key(PK_Signer*, PK_Verifier*);

 }

============================================================
--- include/libstate.h	f08d397ce253b7d175d4dfc30ccd9f1ddee48279
+++ include/libstate.h	cc522cb9ab803f77a13c05a42addb46e0272cdcc
@@ -19,7 +19,7 @@ namespace Botan {
 /*************************************************
 * Global State Container Base                    *
 *************************************************/
-class Library_State
+class BOTAN_DLL Library_State
    {
    public:
       Library_State();
@@ -31,7 +31,7 @@ class Library_State

       void add_engine(class Engine*);

-      class Engine_Iterator
+      class BOTAN_DLL Engine_Iterator
          {
          public:
             class Engine* next();
@@ -84,9 +84,9 @@ class Library_State
 /*************************************************
 * Global State                                   *
 *************************************************/
-Library_State& global_state();
-void set_global_state(Library_State*);
-Library_State* swap_global_state(Library_State*);
+BOTAN_DLL Library_State& global_state();
+BOTAN_DLL void set_global_state(Library_State*);
+BOTAN_DLL Library_State* swap_global_state(Library_State*);

 }

============================================================
--- include/lion.h	21f4eb78b1157e3f1a2e768a24126c5ad16afae3
+++ include/lion.h	96827aa862aa07afdd27a66730801505cf09cfbb
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Lion                                           *
 *************************************************/
-class Lion : public BlockCipher
+class BOTAN_DLL Lion : public BlockCipher
    {
    public:
       void clear() throw();
============================================================
--- include/look_add.h	a6139b72698a8375f498a3732c93eb8f78e0cb59
+++ include/look_add.h	bcf3daba9def147a2eb6a390df5d2fbfd2b15211
@@ -15,12 +15,12 @@ namespace Botan {
 /*************************************************
 * Add an algorithm to the lookup table           *
 *************************************************/
-void add_algorithm(BlockCipher*);
-void add_algorithm(StreamCipher*);
-void add_algorithm(HashFunction*);
-void add_algorithm(MessageAuthenticationCode*);
-void add_algorithm(S2K*);
-void add_algori