The unified diff between revisions [229d3942..] and [51f9ee51..] is displayed below. It can also be downloaded as a raw diff.

#
#
# 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 [d7cc4e8bc600fd90d327334e56d6ea5fdaecb98c]
#    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 [bd1753e4e7fadd64f774b874e1e2b0557bad8a9b]
#    to [9e2738c31e98547443cd0cb21daaa64161890e8c]
#
# 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 [190ea188126117198e9ea487740c472d317b5b12]
#    to [2302b355b8fdafcb4908254cb954713bbce45ac5]
#
# 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_char.h"
#  from [26878419fcdee71aa14035e589c40bc6140b8b81]
#    to [b01ce00ff33cc9aadf9f35b724e3ceb2b0c79740]
#
# 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 [d6b846b9bb2fde1aa134ff88409e7972ba3f229c]
#    to [447f0bbcbc4387c2622e86efd374413784764484]
#
# 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 [3df00e474fd54aa6d8d6a7e061a11d6e8ec91e2a]
#    to [8243eb4fd9554ef933c197e08ad9a623671708f4]
#
# 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/rng.h"
#  from [a6faa2fff37d7f98bc67bcadcf62775c05b9b24c]
#    to [35dcf42e92faecc2f5db9aee67f333e7acd2d31b]
#
# 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/timers.h"
#  from [30ce6b52c2033dd4b7e07d481cad8f5645b64559]
#    to [bc5a5ce2e7f0ba2d66481add7c5b585ab21e85df]
#
# 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 [aa94cc91d4d5605f8dae20fd20ce5fc364867b37]
#    to [f4d9e0bb9bd1e620203ac85b38735ac5ed8e0158]
#
# 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 [5dadb128c26e85f79f355a2d889b2389de39789f]
#    to [f78f64cdb6e00e4d88a5ada4c1a9703d42f1b071]
#
# 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/x509stat.h"
#  from [719b288d16bcc970ce56e71f40de71b74d935961]
#    to [085810b19733c0a784fd1ff2bb11a2d6ff3d6302]
#
# 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]
#
============================================================
--- 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	d7cc4e8bc600fd90d327334e56d6ea5fdaecb98c
+++ 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,7 +152,7 @@ class EntropySource
 /*************************************************
 * Random Number Generator                        *
 *************************************************/
-class RandomNumberGenerator
+class BOTAN_DLL RandomNumberGenerator
    {
    public:
       virtual void randomize(byte[], u32bit) throw(PRNG_Unseeded) = 0;
============================================================
--- 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	bd1753e4e7fadd64f774b874e1e2b0557bad8a9b
+++ include/buf_es.h	9e2738c31e98547443cd0cb21daaa64161890e8c
@@ -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	190ea188126117198e9ea487740c472d317b5b12
+++ include/charset.h	2302b355b8fdafcb4908254cb954713bbce45ac5
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Character Set Transcoder Interface             *
 *************************************************/
-class Charset_Transcoder
+class BOTAN_DLL Charset_Transcoder
    {
    public:
       virtual std::string transcode(const std::string&,
============================================================
--- 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_char.h	26878419fcdee71aa14035e589c40bc6140b8b81
+++ include/def_char.h	b01ce00ff33cc9aadf9f35b724e3ceb2b0c79740
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Default Character Set Transcoder Object        *
 *************************************************/
-class Default_Charset_Transcoder : public Charset_Transcoder
+class BOTAN_DLL Default_Charset_Transcoder : public Charset_Transcoder
    {
    public:
       std::string transcode(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	d6b846b9bb2fde1aa134ff88409e7972ba3f229c
+++ include/libstate.h	447f0bbcbc4387c2622e86efd374413784764484
@@ -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();
@@ -42,7 +42,7 @@ class Library_State
          };
       friend class Engine_Iterator;

-      class UI
+      class BOTAN_DLL UI
          {
          public:
             virtual void pulse(Pulse_Type) {}
@@ -107,9 +107,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_algorithm(BlockCipherModePaddingMethod*);
+BOTAN_DLL void add_algorithm(BlockCipher*);
+BOTAN_DLL void add_algorithm(StreamCipher*);
+BOTAN_DLL void add_algorithm(HashFunction*);
+BOTAN_DLL void add_algorithm(MessageAuthenticationCode*);
+BOTAN_DLL void add_algorithm(S2K*);
+BOTAN_DLL void add_algorithm(BlockCipherModePaddingMethod*);

 }

============================================================
--- include/look_pk.h	9f0be0116eb7318ea14fc49d62c95714a5906084
+++ include/look_pk.h	33fa10847c9877ffff67c27416d280f3a703bc10
@@ -13,21 +13,26 @@ namespace Botan {
 /*************************************************
 * Get an PK algorithm object                     *
 *************************************************/
-PK_Encryptor* get_pk_encryptor(const PK_Encrypting_Key&, const std::string&);
-PK_Decryptor* get_pk_decryptor(const PK_Decrypting_Key&, const std::string&);
+BOTAN_DLL PK_Encryptor* get_pk_encryptor(const PK_Encrypting_Key&,
+                                         const std::string&);

-PK_Signer*    get_pk_signer(const PK_Signing_Key&, const std::string&,
-                            Signature_Format = IEEE_1363);
+BOTAN_DLL PK_Decryptor* get_pk_decryptor(const PK_Decrypting_Key&,
+                                         const std::string&);

-PK_Verifier*  get_pk_verifier(const PK_Verifying_with_MR_Key&,
-                              const std::string&,
-                              Signature_Format = IEEE_1363);
-PK_Verifier*  get_pk_verifier(const PK_Verifying_wo_MR_Key&,
-                              const std::string&,
-                              Signature_Format = IEEE_1363);
+BOTAN_DLL PK_Signer* get_pk_signer(const PK_Signing_Key&,
+                                   const std::string&,
+                                   Signature_Format = IEEE_1363);

-PK_Key_Agreement* get_pk_kas(const PK_Key_Agreement_Key&, const std::string&);
+BOTAN_DLL PK_Verifier* get_pk_verifier(const PK_Verifying_with_MR_Key&,
+                                       const std::string&,
+                                       Signature_Format = IEEE_1363);
+BOTAN_DLL PK_Verifier* get_pk_verifier(const PK_Verifying_wo_MR_Key&,
+                                       const std::string&,
+                                       Signature_Format = IEEE_1363);

+BOTAN_DLL PK_Key_Agreement* get_pk_kas(const PK_Key_Agreement_Key&,
+                                       const std::string&);
+
 }

 #endif
============================================================
--- include/lookup.h	44bc6863bfbca4c97f91dcf16968ea7fb591e39e
+++ include/lookup.h	2dfd127a84eb9858a688b1ec0ba12a3fb5bd3e51
@@ -17,64 +17,72 @@ namespace Botan {
 /*************************************************
 * Retrieve an object from the lookup table       *
 *************************************************/
-const BlockCipher*                  retrieve_block_cipher(const std::string&);
-const StreamCipher*                 retrieve_stream_cipher(const std::string&);
-const HashFunction*                 retrieve_hash(const std::string&);
-const MessageAuthenticationCode*    retrieve_mac(const std::string&);
-const S2K*                          retrieve_s2k(const std::string&);
-const BlockCipherModePaddingMethod* retrieve_bc_pad(const std::string&);
+BOTAN_DLL const BlockCipher* retrieve_block_cipher(const std::string&);
+BOTAN_DLL const StreamCipher* retrieve_stream_cipher(const std::string&);
+BOTAN_DLL const HashFunction* retrieve_hash(const std::string&);
+BOTAN_DLL const MessageAuthenticationCode* retrieve_mac(const std::string&);
+BOTAN_DLL const S2K* retrieve_s2k(const std::string&);

+BOTAN_DLL const BlockCipherModePaddingMethod*
+retrieve_bc_pad(const std::string&);
+
 /*************************************************
 * Get an algorithm object                        *
 *************************************************/
-BlockCipher*                        get_block_cipher(const std::string&);
-StreamCipher*                       get_stream_cipher(const std::string&);
-HashFunction*                       get_hash(const std::string&);
-MessageAuthenticationCode*          get_mac(const std::string&);
-S2K*                                get_s2k(const std::string&);
-const BlockCipherModePaddingMethod* get_bc_pad(const std::string&);
+BOTAN_DLL BlockCipher* get_block_cipher(const std::string&);
+BOTAN_DLL StreamCipher* get_stream_cipher(const std::string&);
+BOTAN_DLL HashFunction* get_hash(const std::string&);
+BOTAN_DLL MessageAuthenticationCode* get_mac(const std::string&);
+BOTAN_DLL S2K* get_s2k(const std::string&);
+BOTAN_DLL const BlockCipherModePaddingMethod* get_bc_pad(const std::string&);

 /*************************************************
 * Get an EMSA/EME/KDF/MGF function               *
 *************************************************/
-EME*  get_eme(const std::string&);
-EMSA* get_emsa(const std::string&);
-MGF*  get_mgf(const std::string&);
-KDF*  get_kdf(const std::string&);
+BOTAN_DLL EME*  get_eme(const std::string&);
+BOTAN_DLL EMSA* get_emsa(const std::string&);
+BOTAN_DLL MGF*  get_mgf(const std::string&);
+BOTAN_DLL KDF*  get_kdf(const std::string&);

 /*************************************************
 * Get a cipher object                            *
 *************************************************/
-Keyed_Filter* get_cipher(const std::string&, const SymmetricKey&,
-                         const InitializationVector&, Cipher_Dir);
-Keyed_Filter* get_cipher(const std::string&, const SymmetricKey&, Cipher_Dir);
-Keyed_Filter* get_cipher(const std::string&, Cipher_Dir);
+BOTAN_DLL Keyed_Filter* get_cipher(const std::string&,
+                                   const SymmetricKey&,
+                                   const InitializationVector&,
+                                   Cipher_Dir);

+BOTAN_DLL Keyed_Filter* get_cipher(const std::string&,
+                                   const SymmetricKey&,
+                                   Cipher_Dir);
+
+BOTAN_DLL Keyed_Filter* get_cipher(const std::string&, Cipher_Dir);
+
 /*************************************************
 * Check to see if an algorithm exists            *
 *************************************************/
-bool have_algorithm(const std::string&);
+BOTAN_DLL bool have_algorithm(const std::string&);

-bool have_block_cipher(const std::string&);
-bool have_stream_cipher(const std::string&);
-bool have_hash(const std::string&);
-bool have_mac(const std::string&);
+BOTAN_DLL bool have_block_cipher(const std::string&);
+BOTAN_DLL bool have_stream_cipher(const std::string&);
+BOTAN_DLL bool have_hash(const std::string&);
+BOTAN_DLL bool have_mac(const std::string&);

 /*************************************************
 * Dereference an alias                           *
 *************************************************/
-std::string deref_alias(const std::string&);
+BOTAN_DLL std::string deref_alias(const std::string&);

 /*************************************************
 * Query information about an algorithm           *
 *************************************************/
-u32bit block_size_of(const std::string&);
-u32bit output_length_of(const std::string&);
+BOTAN_DLL u32bit block_size_of(const std::string&);
+BOTAN_DLL u32bit output_length_of(const std::string&);

-bool valid_keylength_for(u32bit, const std::string&);
-u32bit min_keylength_of(const std::string&);
-u32bit max_keylength_of(const std::string&);
-u32bit keylength_multiple_of(const std::string&);
+BOTAN_DLL bool valid_keylength_for(u32bit, const std::string&);
+BOTAN_DLL u32bit min_keylength_of(const std::string&);
+BOTAN_DLL u32bit max_keylength_of(const std::string&);
+BOTAN_DLL u32bit keylength_multiple_of(const std::string&);

 }

============================================================
--- include/lubyrack.h	fbfd6400449127148719a3e318ad1ba966767b50
+++ include/lubyrack.h	ecd39682fd0eaef7bedf64275115a76bb798e732
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Luby-Rackoff                                   *
 *************************************************/
-class LubyRackoff : public BlockCipher
+class BOTAN_DLL LubyRackoff : public BlockCipher
    {
    public:
       void clear() throw();
============================================================
--- include/mars.h	469d88ccc99e609f5d50532d54aaee767de9bd6e
+++ include/mars.h	230be6c52db65a2080e9c604590de770bdfb3018
@@ -10,7 +10,7 @@ namespace Botan {

 namespace Botan {

-class MARS : public BlockCipher
+class BOTAN_DLL MARS : public BlockCipher
    {
    public:
       void clear() throw() { EK.clear(); }
============================================================
--- include/md2.h	12453da653d5346f90ffbff6e0cd34a2846758bc
+++ include/md2.h	246b0f8a492bd5ec344ff01373d50061d5d6d3ea
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * MD2                                            *
 *************************************************/
-class MD2 : public HashFunction
+class BOTAN_DLL MD2 : public HashFunction
    {
    public:
       void clear() throw();
============================================================
--- include/md4.h	909ca8f155ca017ef83074de3dccd7c9db0aad9a
+++ include/md4.h	347e2be66179bd81404b9abc065157aa56dbf174
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * MD4                                            *
 *************************************************/
-class MD4 : public MDx_HashFunction
+class BOTAN_DLL MD4 : public MDx_HashFunction
    {
    public:
       void clear() throw();
============================================================
--- include/md5.h	c973e1bdacfd87fbecebf40bb14df7fecf18550f
+++ include/md5.h	125ffbdbf8c145f70f0f1f9ed6341d83d5be1a68
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * MD5                                            *
 *************************************************/
-class MD5 : public MDx_HashFunction
+class BOTAN_DLL MD5 : public MDx_HashFunction
    {
    public:
       void clear() throw();
============================================================
--- include/mdx_hash.h	1795bfa7e387450ac265a0c08e45c26f37d1e8db
+++ include/mdx_hash.h	0deccb5b5224b5f7c3bfba95651511f09f1c8b60
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * MDx Hash Function Base Class                   *
 *************************************************/
-class MDx_HashFunction : public HashFunction
+class BOTAN_DLL MDx_HashFunction : public HashFunction
    {
    public:
       MDx_HashFunction(u32bit, u32bit, bool, bool, u32bit = 8);
============================================================
--- include/mem_pool.h	9774f7b2377e171ed9514eece50d9e06ea0e294c
+++ include/mem_pool.h	b05125f505c3f2602092699f033c4698f71f4935
@@ -17,7 +17,7 @@ namespace Botan {
 /*************************************************
 * Pooling Allocator                              *
 *************************************************/
-class Pooling_Allocator : public Allocator
+class BOTAN_DLL Pooling_Allocator : public Allocator
    {
    public:
       void* allocate(u32bit);
@@ -34,7 +34,7 @@ class Pooling_Allocator : public Allocat
       virtual void* alloc_block(u32bit) = 0;
       virtual void dealloc_block(void*, u32bit) = 0;

-      class Memory_Block
+      class BOTAN_DLL Memory_Block
          {
          public:
             Memory_Block(void*);
============================================================
--- include/mgf1.h	739fd112a61fb2dee76686df803894ab66d89e23
+++ include/mgf1.h	7359b8d5d3e3ff0daf8f2d23b40581ce64e7ff72
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * MGF1                                           *
 *************************************************/
-class MGF1 : public MGF
+class BOTAN_DLL MGF1 : public MGF
    {
    public:
       void mask(const byte[], u32bit, byte[], u32bit) const;
============================================================
--- include/misty1.h	d5e3816ba1620937942ebab5f8b6fc5f3d6d2e47
+++ include/misty1.h	f67e5eced26a586d05e7735928d382caeba25ed1
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * MISTY1                                         *
 *************************************************/
-class MISTY1 : public BlockCipher
+class BOTAN_DLL MISTY1 : public BlockCipher
    {
    public:
       void clear() throw() { EK.clear(); DK.clear(); }
@@ -25,7 +25,8 @@ class MISTY1 : public BlockCipher
       void dec(const byte[], byte[]) const;
       void key(const byte[], u32bit);

-      static const byte EK_ORDER[100], DK_ORDER[100];
+      static const byte EK_ORDER[100];
+      static const byte DK_ORDER[100];
       SecureBuffer<u16bit, 100> EK, DK;
    };

============================================================
--- include/mode_pad.h	f45ed8bd18c780b9add92026f95f48e7964e3659
+++ include/mode_pad.h	3026a91c78ca5ed4b184ac7db2aa50be37108111
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Block Cipher Mode Padding Method               *
 *************************************************/
-class BlockCipherModePaddingMethod
+class BOTAN_DLL BlockCipherModePaddingMethod
    {
    public:
       virtual void pad(byte[], u32bit, u32bit) const = 0;
@@ -28,7 +28,7 @@ class BlockCipherModePaddingMethod
 /*************************************************
 * PKCS#7 Padding                                 *
 *************************************************/
-class PKCS7_Padding : public BlockCipherModePaddingMethod
+class BOTAN_DLL PKCS7_Padding : public BlockCipherModePaddingMethod
    {
    public:
       void pad(byte[], u32bit, u32bit) const;
@@ -40,7 +40,7 @@ class PKCS7_Padding : public BlockCipher
 /*************************************************
 * ANSI X9.23 Padding                             *
 *************************************************/
-class ANSI_X923_Padding : public BlockCipherModePaddingMethod
+class BOTAN_DLL ANSI_X923_Padding : public BlockCipherModePaddingMethod
    {
    public:
       void pad(byte[], u32bit, u32bit) const;
@@ -52,7 +52,7 @@ class ANSI_X923_Padding : public BlockCi
 /*************************************************
 * One And Zeros Padding                          *
 *************************************************/
-class OneAndZeros_Padding : public BlockCipherModePaddingMethod
+class BOTAN_DLL OneAndZeros_Padding : public BlockCipherModePaddingMethod
    {
    public:
       void pad(byte[], u32bit, u32bit) const;
@@ -64,7 +64,7 @@ class OneAndZeros_Padding : public Block
 /*************************************************
 * Null Padding                                   *
 *************************************************/
-class Null_Padding : public BlockCipherModePaddingMethod
+class BOTAN_DLL Null_Padding : public BlockCipherModePaddingMethod
    {
    public:
       void pad(byte[], u32bit, u32bit) const { return; }
============================================================
--- include/modebase.h	b7d42f6b00ab46a455075841defa314965c3deee
+++ include/modebase.h	056f174f9f5503b2de49bfa152c1597f809aba5a
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Block Cipher Mode                              *
 *************************************************/
-class BlockCipherMode : public Keyed_Filter
+class BOTAN_DLL BlockCipherMode : public Keyed_Filter
    {
    public:
       std::string name() const;
============================================================
--- include/modules.h	3df00e474fd54aa6d8d6a7e061a11d6e8ec91e2a
+++ include/modules.h	8243eb4fd9554ef933c197e08ad9a623671708f4
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Module Builder Interface                       *
 *************************************************/
-class Modules
+class BOTAN_DLL Modules
    {
    public:
       virtual class Mutex_Factory* mutex_factory() const = 0;
@@ -34,7 +34,7 @@ class Modules
 /*************************************************
 * Built In Modules                               *
 *************************************************/
-class Builtin_Modules : public Modules
+class BOTAN_DLL Builtin_Modules : public Modules
    {
    public:
       class Mutex_Factory* mutex_factory() const;
============================================================
--- include/mutex.h	f2e5f4862473ea61f881881680763ba8e285312b
+++ include/mutex.h	3fa990bcefeb4ee32990a95a9e8ac0d2a10abb86
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * Mutex Base Class                               *
 *************************************************/
-class Mutex
+class BOTAN_DLL Mutex
    {
    public:
       virtual void lock() = 0;
@@ -24,7 +24,7 @@ class Mutex
 /*************************************************
 * Mutex Factory                                  *
 *************************************************/
-class Mutex_Factory
+class BOTAN_DLL Mutex_Factory
    {
    public:
       virtual Mutex* make() = 0;
@@ -34,7 +34,7 @@ class Mutex_Factory
 /*************************************************
 * Default Mutex Factory                          *
 *************************************************/
-class Default_Mutex_Factory : public Mutex_Factory
+class BOTAN_DLL Default_Mutex_Factory : public Mutex_Factory
    {
    public:
       Mutex* make();
@@ -43,7 +43,7 @@ class Default_Mutex_Factory : public Mut
 /*************************************************
 * Mutex Holding Class                            *
 *************************************************/
-class Mutex_Holder
+class BOTAN_DLL Mutex_Holder
    {
    public:
       Mutex_Holder(Mutex*);
============================================================
--- include/nr.h	0a8b524f2188039570234d9702312081c78d97ef
+++ include/nr.h	e9523c6c77eb71f2fc01199b2237cb527dd0e53c
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Nyberg-Rueppel Public Key                      *
 *************************************************/
-class NR_PublicKey : public PK_Verifying_with_MR_Key,
+class BOTAN_DLL NR_PublicKey : public PK_Verifying_with_MR_Key,
                      public virtual DL_Scheme_PublicKey
    {
    public:
@@ -38,7 +38,7 @@ class NR_PublicKey : public PK_Verifying
 /*************************************************
 * Nyberg-Rueppel Private Key                     *
 *************************************************/
-class NR_PrivateKey : public NR_PublicKey,
+class BOTAN_DLL NR_PrivateKey : public NR_PublicKey,
                       public PK_Signing_Key,
                       public virtual DL_Scheme_PrivateKey
    {
============================================================
--- include/numthry.h	2c9588397a71ce950009190f87efb76966715d67
+++ include/numthry.h	15ce975e8d3dd7f3b0499a67c4a66ced254fa5bd
@@ -15,49 +15,51 @@ namespace Botan {
 /*************************************************
 * Fused Arithmetic Operations                    *
 *************************************************/
-BigInt mul_add(const BigInt&, const BigInt&, const BigInt&);
-BigInt sub_mul(const BigInt&, const BigInt&, const BigInt&);
+BigInt BOTAN_DLL mul_add(const BigInt&, const BigInt&, const BigInt&);
+BigInt BOTAN_DLL sub_mul(const BigInt&, const BigInt&, const BigInt&);

 /*************************************************
 * Number Theory Functions                        *
 *************************************************/
 inline BigInt abs(const BigInt& n) { return n.abs(); }

-void divide(const BigInt&, const BigInt&, BigInt&, BigInt&);
+void BOTAN_DLL divide(const BigInt&, const BigInt&, BigInt&, BigInt&);

-BigInt gcd(const BigInt&, const BigInt&);
-BigInt lcm(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL gcd(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL lcm(const BigInt&, const BigInt&);

-BigInt square(const BigInt&);
-BigInt inverse_mod(const BigInt&, const BigInt&);
-s32bit jacobi(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL square(const BigInt&);
+BigInt BOTAN_DLL inverse_mod(const BigInt&, const BigInt&);
+s32bit BOTAN_DLL jacobi(const BigInt&, const BigInt&);

-BigInt power_mod(const BigInt&, const BigInt&, const BigInt&);
+BigInt BOTAN_DLL power_mod(const BigInt&, const BigInt&, const BigInt&);

 /*************************************************
 * Utility Functions                              *
 *************************************************/
-u32bit low_zero_bits(const BigInt&);
+u32bit BOTAN_DLL low_zero_bits(const BigInt&);

 /*************************************************
 * Primality Testing                              *
 *************************************************/
-bool check_prime(const BigInt&);
-bool is_prime(const BigInt&);
-bool verify_prime(const BigInt&);
+bool BOTAN_DLL check_prime(const BigInt&);
+bool BOTAN_DLL is_prime(const BigInt&);
+bool BOTAN_DLL verify_prime(const BigInt&);

-s32bit simple_primality_tests(const BigInt&);
-bool passes_mr_tests(const BigInt&, u32bit = 1);
-bool run_primality_tests(const BigInt&, u32bit = 1);
+s32bit BOTAN_DLL simple_primality_tests(const BigInt&);
+bool BOTAN_DLL passes_mr_tests(const BigInt&, u32bit = 1);
+bool BOTAN_DLL run_primality_tests(const BigInt&, u32bit = 1);

 /*************************************************
 * Random Number Generation                       *
 *************************************************/
-BigInt random_integer(u32bit);
-BigInt random_integer(const BigInt&, const BigInt&);
-BigInt random_prime(u32bit, const BigInt& = 1, u32bit = 1, u32bit = 2);
-BigInt random_safe_prime(u32bit);
+BigInt BOTAN_DLL random_integer(u32bit);
+BigInt BOTAN_DLL random_integer(const BigInt&, const BigInt&);
+BigInt BOTAN_DLL random_prime(u32bit, const BigInt& = 1,
+                              u32bit = 1, u32bit = 2);

+BigInt BOTAN_DLL random_safe_prime(u32bit);
+
 /*************************************************
 * Prime Numbers                                  *
 *************************************************/
@@ -70,7 +72,7 @@ extern const u64bit PRIME_PRODUCTS[];
 /*************************************************
 * Miller-Rabin Primality Tester                  *
 *************************************************/
-class MillerRabin_Test
+class BOTAN_DLL MillerRabin_Test
    {
    public:
       bool passes_test(const BigInt&);
============================================================
--- include/ofb.h	7c91fb7eb35104d80e8da125cc6f1b4b3bc82471
+++ include/ofb.h	bc5a889f33acd616c2ba1b28bed0b069eee277cd
@@ -13,7 +13,7 @@ namespace Botan {
 /*************************************************
 * OFB Mode                                       *
 *************************************************/
-class OFB : public BlockCipherMode
+class BOTAN_DLL OFB : public BlockCipherMode
    {
    public:
       OFB(const std::string&);
============================================================
--- include/oids.h	a65a9ade8866b65236b4db2a3f6a109b6789db8b
+++ include/oids.h	ad753b3ee7bd56616a54a36511d17b84320d7e53
@@ -15,19 +15,19 @@ namespace OIDS {
 /*************************************************
 * Register an OID to string mapping              *
 *************************************************/
-void add_oid(const OID&, const std::string&);
+BOTAN_DLL void add_oid(const OID&, const std::string&);

 /*************************************************
 * See if an OID exists in the internal table     *
 *************************************************/
-bool have_oid(const std::string&);
+BOTAN_DLL bool have_oid(const std::string&);

 /*************************************************
 * Perform OID<->string mappings                  *
 *************************************************/
-std::string lookup(const OID&);
-OID lookup(const std::string&);
-bool name_of(const OID&, const std::string&);
+BOTAN_DLL std::string lookup(const OID&);
+BOTAN_DLL OID lookup(const std::string&);
+BOTAN_DLL bool name_of(const OID&, const std::string&);

 }

============================================================
--- include/openpgp.h	f367f621d92d5d9ba2eac2ada5ffb5c3cd235d18
+++ include/openpgp.h	6d06d258db32629ddeca5facae94581dbda65314
@@ -17,13 +17,13 @@ namespace OpenPGP {
 /*************************************************
 * OpenPGP Base64 encoding/decoding               *
 *************************************************/
-std::string encode(const byte[], u32bit, const std::string&,
-                   const std::map<std::string, std::string>&);
-SecureVector<byte> decode(DataSource&, std::string&,
-                          std::map<std::string, std::string>&);
+BOTAN_DLL std::string encode(const byte[], u32bit, const std::string&,
+                                  const std::map<std::string, std::string>&);
+BOTAN_DLL SecureVector<byte> decode(DataSource&, std::string&,
+                                         std::map<std::string, std::string>&);

-std::string encode(const byte[], u32bit, const std::string&);
-SecureVector<byte> decode(DataSource&, std::string&);
+BOTAN_DLL std::string encode(const byte[], u32bit, const std::string&);
+BOTAN_DLL SecureVector<byte> decode(DataSource&, std::string&);

 }

============================================================
--- include/out_buf.h	321d65539815403e698962aad7fb985088e9c17e
+++ include/out_buf.h	c845c5752405c83005bc813f6a3b6406b4a76e10
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Container of output buffers for Pipe           *
 *************************************************/
-class Output_Buffers
+class BOTAN_DLL Output_Buffers
    {
    public:
       u32bit read(byte[], u32bit, Pipe::message_id);
============================================================
--- include/par_hash.h	69e03b769368ea1a41bf500095bb2d448ed332b9
+++ include/par_hash.h	4579c4a4e194721934a52f17cd7dce7e0cdcf874
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * Parallel                                       *
 *************************************************/
-class Parallel : public HashFunction
+class BOTAN_DLL Parallel : public HashFunction
    {
    public:
       void clear() throw();
============================================================
--- include/parsing.h	cb2aa56649d2ce1d1ee8f417bea7f8afd70b826e
+++ include/parsing.h	495ba5383d508f77387155181abc7c82548238d8
@@ -15,22 +15,22 @@ namespace Botan {
 /*************************************************
 * String Parsing Functions                       *
 *************************************************/
-std::vector<std::string> parse_algorithm_name(const std::string&);
-std::vector<std::string> split_on(const std::string&, char);
-std::vector<u32bit> parse_asn1_oid(const std::string&);
-bool x500_name_cmp(const std::string&, const std::string&);
+BOTAN_DLL std::vector<std::string> parse_algorithm_name(const std::string&);
+BOTAN_DLL std::vector<std::string> split_on(const std::string&, char);
+BOTAN_DLL std::vector<u32bit> parse_asn1_oid(const std::string&);
+BOTAN_DLL bool x500_name_cmp(const std::string&, const std::string&);

 /*************************************************
 * String/Integer Conversions                     *
 *************************************************/
-std::string to_string(u64bit, u32bit = 0);
-u32bit to_u32bit(const std::string&);
+BOTAN_DLL std::string to_string(u64bit, u32bit = 0);
+BOTAN_DLL u32bit to_u32bit(const std::string&);

 /*************************************************
 * String/Network Address Conversions             *
 *************************************************/
-u32bit string_to_ipv4(const std::string&);
-std::string ipv4_to_string(u32bit);
+BOTAN_DLL u32bit string_to_ipv4(const std::string&);
+BOTAN_DLL std::string ipv4_to_string(u32bit);

 }

============================================================
--- include/pbe.h	e2bce5b3ea8490d42c75c9bd2411b7327905a6f6
+++ include/pbe.h	c857ae798130c367ad3e63f3890adf18833c4b46
@@ -15,7 +15,7 @@ namespace Botan {
 /*************************************************
 * Password Based Encryption                      *
 *************************************************/
-class PBE : public Filter
+class BOTAN_DLL PBE : public Filter
    {
    public:
       virtual void set_key(const std::string&) = 0;
@@ -28,8 +28,8 @@ class PBE : public Filter
 /*************************************************
 * Get a PBE object                               *
 *************************************************/
-PBE* get_pbe(const std::string&);
-PBE* get_pbe(const OID&, DataSource&);
+BOTAN_DLL PBE* get_pbe(const std::string&);
+BOTAN_DLL PBE* get_pbe(const OID&, DataSource&);

 }

============================================================
--- include/pbe_pkcs.h	c14e46545178cf2314d6e50045d58417e9f231be
+++ include/pbe_pkcs.h	248bcd00abf4a4a4b5738c0f96efd110d2ed2ad1
@@ -14,7 +14,7 @@ namespace Botan {
 /*************************************************
 * PKCS#5 v1.5 PBE                                *
 *************************************************/
-class PBE_PKCS5v15 : public PBE
+class BOTAN_DLL PBE_PKCS5v15 : public PBE
    {
    public:
       void write(const byte[], u32bit);
@@ -38,7 +38,7 @@ class PBE_PKCS5v15 : public PBE
 /*************************************************
 * PKCS#5 v2.0 PBE                                *
 *************************************************/
-class PBE_PKCS5v20 : public PBE
+class BOTAN_DLL PBE_PKCS5v20 : public PBE
    {
    public:
       void write(const byte[], u32bit);
============================================================
--- include/pem.h	5acd12644cddbbb42668df078a31361ffdda9505
+++ include/pem.h	efcb8fb44e315de344c0042d4a1dc40a2b3e8f91
@@ -15,12 +15,16 @@ namespace PEM_Code {
 /*************************************************
 * PEM Encoding/Decoding                          *
 *************************************************/
-std::string encode(const byte[], u32bit, const std::string&, u32bit = 64);
-std::string encode(const MemoryRegion<byte>&, const std::string&, u32bit = 64);
+BOTAN_DLL std::string encode(const byte[], u32bit,
+                             const std::string&, u32bit = 64);
+BOTAN_DLL std::string encode(const MemoryRegion<byte>&,
+                             const std::string&, u32bit = 64);

-SecureVector<byte> decode(DataSource&, std::string&);
-SecureVect