diff options
256 files changed, 696 insertions, 671 deletions
diff --git a/src/build-data/buildh.in b/src/build-data/buildh.in index e1337318e..f7e0ad71c 100644 --- a/src/build-data/buildh.in +++ b/src/build-data/buildh.in @@ -36,6 +36,29 @@ #define BOTAN_DLL %{visibility_attribute} #endif +/** +* Used to annotate API exports which are public and supported. +* These APIs will not be broken/removed unless strictly required for +* functionality or security, and only in new major versions. +* @param maj The major version this public API was released in +* @param min The minor version this public API was released in +*/ +#define BOTAN_PUBLIC_API(maj,min) BOTAN_DLL + +/** +* Used to annotate API exports which are public and can be used by +* applications if needed, but which are intentionally not documented, +* and which may change incompatibly in a future major version. +*/ +#define BOTAN_UNSTABLE_API BOTAN_DLL + +/** +* Used to annotate API exports which are exported but only for the +* purposes of testing. They should not be used by applications and +* may be removed or changed without notice. +*/ +#define BOTAN_TEST_API BOTAN_DLL + /* Target identification and feature test macros */ %{target_os_defines} diff --git a/src/lib/asn1/alg_id.h b/src/lib/asn1/alg_id.h index 0a1ed0c66..60cf036f4 100644 --- a/src/lib/asn1/alg_id.h +++ b/src/lib/asn1/alg_id.h @@ -17,7 +17,7 @@ namespace Botan { /** * Algorithm Identifier */ -class BOTAN_DLL AlgorithmIdentifier final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) AlgorithmIdentifier final : public ASN1_Object { public: enum Encoding_Option { USE_NULL_PARAM }; @@ -42,9 +42,9 @@ class BOTAN_DLL AlgorithmIdentifier final : public ASN1_Object /* * Comparison Operations */ -bool BOTAN_DLL operator==(const AlgorithmIdentifier&, +bool BOTAN_PUBLIC_API(2,0) operator==(const AlgorithmIdentifier&, const AlgorithmIdentifier&); -bool BOTAN_DLL operator!=(const AlgorithmIdentifier&, +bool BOTAN_PUBLIC_API(2,0) operator!=(const AlgorithmIdentifier&, const AlgorithmIdentifier&); } diff --git a/src/lib/asn1/asn1_alt_name.h b/src/lib/asn1/asn1_alt_name.h index 5ea7cfb14..65baba0e2 100644 --- a/src/lib/asn1/asn1_alt_name.h +++ b/src/lib/asn1/asn1_alt_name.h @@ -19,7 +19,7 @@ namespace Botan { /** * Alternative Name */ -class BOTAN_DLL AlternativeName final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) AlternativeName final : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; diff --git a/src/lib/asn1/asn1_attribute.h b/src/lib/asn1/asn1_attribute.h index 24d4a4bf1..c545c4c0c 100644 --- a/src/lib/asn1/asn1_attribute.h +++ b/src/lib/asn1/asn1_attribute.h @@ -17,7 +17,7 @@ namespace Botan { /** * Attribute */ -class BOTAN_DLL Attribute final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) Attribute final : public ASN1_Object { public: void encode_into(class DER_Encoder& to) const override; diff --git a/src/lib/asn1/asn1_obj.h b/src/lib/asn1/asn1_obj.h index 536f75ced..2d349c984 100644 --- a/src/lib/asn1/asn1_obj.h +++ b/src/lib/asn1/asn1_obj.h @@ -58,7 +58,7 @@ enum ASN1_Tag { /** * Basic ASN.1 Object Interface */ -class BOTAN_DLL ASN1_Object +class BOTAN_PUBLIC_API(2,0) ASN1_Object { public: /** @@ -82,7 +82,7 @@ class BOTAN_DLL ASN1_Object /** * BER Encoded Object */ -class BOTAN_DLL BER_Object +class BOTAN_PUBLIC_API(2,0) BER_Object { public: void assert_is_a(ASN1_Tag, ASN1_Tag); @@ -115,7 +115,7 @@ bool maybe_BER(DataSource& src); /** * General BER Decoding Error Exception */ -struct BOTAN_DLL BER_Decoding_Error : public Decoding_Error +struct BOTAN_PUBLIC_API(2,0) BER_Decoding_Error : public Decoding_Error { explicit BER_Decoding_Error(const std::string&); }; @@ -123,7 +123,7 @@ struct BOTAN_DLL BER_Decoding_Error : public Decoding_Error /** * Exception For Incorrect BER Taggings */ -struct BOTAN_DLL BER_Bad_Tag : public BER_Decoding_Error +struct BOTAN_PUBLIC_API(2,0) BER_Bad_Tag : public BER_Decoding_Error { BER_Bad_Tag(const std::string& msg, ASN1_Tag tag); BER_Bad_Tag(const std::string& msg, ASN1_Tag tag1, ASN1_Tag tag2); diff --git a/src/lib/asn1/asn1_oid.h b/src/lib/asn1/asn1_oid.h index 0275b58a9..4cf6e8a93 100644 --- a/src/lib/asn1/asn1_oid.h +++ b/src/lib/asn1/asn1_oid.h @@ -17,7 +17,7 @@ namespace Botan { /** * This class represents ASN.1 object identifiers. */ -class BOTAN_DLL OID final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) OID final : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; @@ -73,7 +73,7 @@ class BOTAN_DLL OID final : public ASN1_Object * @param oid the OID to add the new component to * @param new_comp the new component to add */ -OID BOTAN_DLL operator+(const OID& oid, uint32_t new_comp); +OID BOTAN_PUBLIC_API(2,0) operator+(const OID& oid, uint32_t new_comp); /** * Compare two OIDs. @@ -81,7 +81,7 @@ OID BOTAN_DLL operator+(const OID& oid, uint32_t new_comp); * @param b the second OID * @return true if a is not equal to b */ -bool BOTAN_DLL operator!=(const OID& a, const OID& b); +bool BOTAN_PUBLIC_API(2,0) operator!=(const OID& a, const OID& b); /** * Compare two OIDs. @@ -89,7 +89,7 @@ bool BOTAN_DLL operator!=(const OID& a, const OID& b); * @param b the second OID * @return true if a is lexicographically smaller than b */ -bool BOTAN_DLL operator<(const OID& a, const OID& b); +bool BOTAN_PUBLIC_API(2,0) operator<(const OID& a, const OID& b); } diff --git a/src/lib/asn1/asn1_str.h b/src/lib/asn1/asn1_str.h index 1d75ec519..42db68f4a 100644 --- a/src/lib/asn1/asn1_str.h +++ b/src/lib/asn1/asn1_str.h @@ -15,7 +15,7 @@ namespace Botan { /** * Simple String */ -class BOTAN_DLL ASN1_String final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) ASN1_String final : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; diff --git a/src/lib/asn1/asn1_time.h b/src/lib/asn1/asn1_time.h index 99047e475..4e47e5079 100644 --- a/src/lib/asn1/asn1_time.h +++ b/src/lib/asn1/asn1_time.h @@ -16,7 +16,7 @@ namespace Botan { /** * X.509 Time */ -class BOTAN_DLL X509_Time final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) X509_Time final : public ASN1_Object { public: /// DER encode a X509_Time @@ -65,12 +65,12 @@ class BOTAN_DLL X509_Time final : public ASN1_Object /* * Comparison Operations */ -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 BOTAN_DLL operator<(const X509_Time&, const X509_Time&); -bool BOTAN_DLL operator>(const X509_Time&, const X509_Time&); +bool BOTAN_PUBLIC_API(2,0) operator==(const X509_Time&, const X509_Time&); +bool BOTAN_PUBLIC_API(2,0) operator!=(const X509_Time&, const X509_Time&); +bool BOTAN_PUBLIC_API(2,0) operator<=(const X509_Time&, const X509_Time&); +bool BOTAN_PUBLIC_API(2,0) operator>=(const X509_Time&, const X509_Time&); +bool BOTAN_PUBLIC_API(2,0) operator<(const X509_Time&, const X509_Time&); +bool BOTAN_PUBLIC_API(2,0) operator>(const X509_Time&, const X509_Time&); } diff --git a/src/lib/asn1/ber_dec.h b/src/lib/asn1/ber_dec.h index 6320ab9fc..77eb6a1a8 100644 --- a/src/lib/asn1/ber_dec.h +++ b/src/lib/asn1/ber_dec.h @@ -16,7 +16,7 @@ namespace Botan { /** * BER Decoding Object */ -class BOTAN_DLL BER_Decoder +class BOTAN_PUBLIC_API(2,0) BER_Decoder { public: BER_Object get_next_object(); diff --git a/src/lib/asn1/der_enc.h b/src/lib/asn1/der_enc.h index 22a8741c6..fcfe63154 100644 --- a/src/lib/asn1/der_enc.h +++ b/src/lib/asn1/der_enc.h @@ -19,7 +19,7 @@ class ASN1_Object; /** * General DER Encoding Object */ -class BOTAN_DLL DER_Encoder +class BOTAN_PUBLIC_API(2,0) DER_Encoder { public: secure_vector<uint8_t> get_contents(); diff --git a/src/lib/asn1/oids.h b/src/lib/asn1/oids.h index 16b87dfc3..7e1dc7c8f 100644 --- a/src/lib/asn1/oids.h +++ b/src/lib/asn1/oids.h @@ -19,7 +19,7 @@ namespace OIDS { * @param oid the OID to look up * @return name associated with this OID */ -BOTAN_DLL std::string lookup(const OID& oid); +BOTAN_PUBLIC_API(2,0) std::string lookup(const OID& oid); /** * Find the OID to a name. The lookup will be performed in the @@ -27,7 +27,7 @@ BOTAN_DLL std::string lookup(const OID& oid); * @param name the name to resolve * @return OID associated with the specified name */ -BOTAN_DLL OID lookup(const std::string& name); +BOTAN_PUBLIC_API(2,0) OID lookup(const std::string& name); /** * See if an OID exists in the internal table. diff --git a/src/lib/asn1/x509_dn.h b/src/lib/asn1/x509_dn.h index 8add8d64c..164c2b64c 100644 --- a/src/lib/asn1/x509_dn.h +++ b/src/lib/asn1/x509_dn.h @@ -19,7 +19,7 @@ namespace Botan { /** * Distinguished Name */ -class BOTAN_DLL X509_DN final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) X509_DN final : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; @@ -47,12 +47,12 @@ class BOTAN_DLL X509_DN final : public ASN1_Object std::vector<uint8_t> m_dn_bits; }; -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&); +bool BOTAN_PUBLIC_API(2,0) operator==(const X509_DN&, const X509_DN&); +bool BOTAN_PUBLIC_API(2,0) operator!=(const X509_DN&, const X509_DN&); +bool BOTAN_PUBLIC_API(2,0) operator<(const X509_DN&, const X509_DN&); -BOTAN_DLL std::ostream& operator<<(std::ostream& out, const X509_DN& dn); -BOTAN_DLL std::istream& operator>>(std::istream& in, X509_DN& dn); +BOTAN_PUBLIC_API(2,0) std::ostream& operator<<(std::ostream& out, const X509_DN& dn); +BOTAN_PUBLIC_API(2,0) std::istream& operator>>(std::istream& in, X509_DN& dn); } diff --git a/src/lib/base/buf_comp.h b/src/lib/base/buf_comp.h index ca5ecd4ff..a5f12d836 100644 --- a/src/lib/base/buf_comp.h +++ b/src/lib/base/buf_comp.h @@ -18,7 +18,7 @@ namespace Botan { * This class represents any kind of computation which uses an internal * state, such as hash functions or MACs */ -class BOTAN_DLL Buffered_Computation +class BOTAN_PUBLIC_API(2,0) Buffered_Computation { public: /** diff --git a/src/lib/base/init.h b/src/lib/base/init.h index 30798b4d5..e0ac8af89 100644 --- a/src/lib/base/init.h +++ b/src/lib/base/init.h @@ -19,7 +19,7 @@ namespace Botan { * case, and this class is no longer needed and kept only for backwards * compatibility. */ -class BOTAN_DLL BOTAN_DEPRECATED("LibraryInitializer is no longer required") LibraryInitializer +class BOTAN_PUBLIC_API(2,0) BOTAN_DEPRECATED("LibraryInitializer is no longer required") LibraryInitializer { public: explicit LibraryInitializer(const std::string& /*ignored*/ = "") { } diff --git a/src/lib/base/key_spec.h b/src/lib/base/key_spec.h index a1ac9215f..ad66e81fe 100644 --- a/src/lib/base/key_spec.h +++ b/src/lib/base/key_spec.h @@ -15,7 +15,7 @@ namespace Botan { /** * Represents the length requirements on an algorithm key */ -class BOTAN_DLL Key_Length_Specification +class BOTAN_PUBLIC_API(2,0) Key_Length_Specification { public: /** diff --git a/src/lib/base/scan_name.h b/src/lib/base/scan_name.h index dd0860356..394d59760 100644 --- a/src/lib/base/scan_name.h +++ b/src/lib/base/scan_name.h @@ -19,7 +19,7 @@ namespace Botan { A class encapsulating a SCAN name (similar to JCE conventions) http://www.users.zetnet.co.uk/hopwood/crypto/scan/ */ -class BOTAN_DLL SCAN_Name +class BOTAN_PUBLIC_API(2,0) SCAN_Name { public: /** diff --git a/src/lib/base/sym_algo.h b/src/lib/base/sym_algo.h index b573beaef..45cb5a55e 100644 --- a/src/lib/base/sym_algo.h +++ b/src/lib/base/sym_algo.h @@ -18,7 +18,7 @@ namespace Botan { /** * This class represents a symmetric algorithm object. */ -class BOTAN_DLL SymmetricAlgorithm +class BOTAN_PUBLIC_API(2,0) SymmetricAlgorithm { public: virtual ~SymmetricAlgorithm() {} diff --git a/src/lib/base/symkey.h b/src/lib/base/symkey.h index dc523f82e..3bbd35306 100644 --- a/src/lib/base/symkey.h +++ b/src/lib/base/symkey.h @@ -16,7 +16,7 @@ namespace Botan { /** * Octet String */ -class BOTAN_DLL OctetString +class BOTAN_PUBLIC_API(2,0) OctetString { public: /** @@ -99,7 +99,7 @@ class BOTAN_DLL OctetString * @param y an octet string * @return if x is equal to y */ -BOTAN_DLL bool operator==(const OctetString& x, +BOTAN_PUBLIC_API(2,0) bool operator==(const OctetString& x, const OctetString& y); /** @@ -108,7 +108,7 @@ BOTAN_DLL bool operator==(const OctetString& x, * @param y an octet string * @return if x is not equal to y */ -BOTAN_DLL bool operator!=(const OctetString& x, +BOTAN_PUBLIC_API(2,0) bool operator!=(const OctetString& x, const OctetString& y); /** @@ -117,7 +117,7 @@ BOTAN_DLL bool operator!=(const OctetString& x, * @param y an octet string * @return x concatenated with y */ -BOTAN_DLL OctetString operator+(const OctetString& x, +BOTAN_PUBLIC_API(2,0) OctetString operator+(const OctetString& x, const OctetString& y); /** @@ -126,7 +126,7 @@ BOTAN_DLL OctetString operator+(const OctetString& x, * @param y an octet string * @return x XORed with y */ -BOTAN_DLL OctetString operator^(const OctetString& x, +BOTAN_PUBLIC_API(2,0) OctetString operator^(const OctetString& x, const OctetString& y); diff --git a/src/lib/block/aes/aes.h b/src/lib/block/aes/aes.h index 6adac514e..c3f7dbdd9 100644 --- a/src/lib/block/aes/aes.h +++ b/src/lib/block/aes/aes.h @@ -15,7 +15,7 @@ namespace Botan { /** * AES-128 */ -class BOTAN_DLL AES_128 final : public Block_Cipher_Fixed_Params<16, 16> +class BOTAN_PUBLIC_API(2,0) AES_128 final : public Block_Cipher_Fixed_Params<16, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; @@ -55,7 +55,7 @@ class BOTAN_DLL AES_128 final : public Block_Cipher_Fixed_Params<16, 16> /** * AES-192 */ -class BOTAN_DLL AES_192 final : public Block_Cipher_Fixed_Params<16, 24> +class BOTAN_PUBLIC_API(2,0) AES_192 final : public Block_Cipher_Fixed_Params<16, 24> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; @@ -95,7 +95,7 @@ class BOTAN_DLL AES_192 final : public Block_Cipher_Fixed_Params<16, 24> /** * AES-256 */ -class BOTAN_DLL AES_256 final : public Block_Cipher_Fixed_Params<16, 32> +class BOTAN_PUBLIC_API(2,0) AES_256 final : public Block_Cipher_Fixed_Params<16, 32> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/block_cipher.h b/src/lib/block/block_cipher.h index 77a46d33b..627691f01 100644 --- a/src/lib/block/block_cipher.h +++ b/src/lib/block/block_cipher.h @@ -16,7 +16,7 @@ namespace Botan { /** * This class represents a block cipher object. */ -class BOTAN_DLL BlockCipher : public SymmetricAlgorithm +class BOTAN_PUBLIC_API(2,0) BlockCipher : public SymmetricAlgorithm { public: diff --git a/src/lib/block/blowfish/blowfish.h b/src/lib/block/blowfish/blowfish.h index 690b9c400..24b57ed36 100644 --- a/src/lib/block/blowfish/blowfish.h +++ b/src/lib/block/blowfish/blowfish.h @@ -15,7 +15,7 @@ namespace Botan { /** * Blowfish */ -class BOTAN_DLL Blowfish final : public Block_Cipher_Fixed_Params<8, 1, 56> +class BOTAN_PUBLIC_API(2,0) Blowfish final : public Block_Cipher_Fixed_Params<8, 1, 56> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/camellia/camellia.h b/src/lib/block/camellia/camellia.h index 736315f3a..822f8aa1f 100644 --- a/src/lib/block/camellia/camellia.h +++ b/src/lib/block/camellia/camellia.h @@ -15,7 +15,7 @@ namespace Botan { /** * Camellia-128 */ -class BOTAN_DLL Camellia_128 final : public Block_Cipher_Fixed_Params<16, 16> +class BOTAN_PUBLIC_API(2,0) Camellia_128 final : public Block_Cipher_Fixed_Params<16, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; @@ -33,7 +33,7 @@ class BOTAN_DLL Camellia_128 final : public Block_Cipher_Fixed_Params<16, 16> /** * Camellia-192 */ -class BOTAN_DLL Camellia_192 final : public Block_Cipher_Fixed_Params<16, 24> +class BOTAN_PUBLIC_API(2,0) Camellia_192 final : public Block_Cipher_Fixed_Params<16, 24> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; @@ -51,7 +51,7 @@ class BOTAN_DLL Camellia_192 final : public Block_Cipher_Fixed_Params<16, 24> /** * Camellia-256 */ -class BOTAN_DLL Camellia_256 final : public Block_Cipher_Fixed_Params<16, 32> +class BOTAN_PUBLIC_API(2,0) Camellia_256 final : public Block_Cipher_Fixed_Params<16, 32> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/cascade/cascade.h b/src/lib/block/cascade/cascade.h index 1ab81b9b5..c96b61a6e 100644 --- a/src/lib/block/cascade/cascade.h +++ b/src/lib/block/cascade/cascade.h @@ -15,7 +15,7 @@ namespace Botan { /** * Block Cipher Cascade */ -class BOTAN_DLL Cascade_Cipher final : public BlockCipher +class BOTAN_PUBLIC_API(2,0) Cascade_Cipher final : public BlockCipher { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/cast/cast128.h b/src/lib/block/cast/cast128.h index 96e543aed..7840c30cf 100644 --- a/src/lib/block/cast/cast128.h +++ b/src/lib/block/cast/cast128.h @@ -15,7 +15,7 @@ namespace Botan { /** * CAST-128 */ -class BOTAN_DLL CAST_128 final : public Block_Cipher_Fixed_Params<8, 11, 16> +class BOTAN_PUBLIC_API(2,0) CAST_128 final : public Block_Cipher_Fixed_Params<8, 11, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/cast/cast256.h b/src/lib/block/cast/cast256.h index fe35abfba..183dfe845 100644 --- a/src/lib/block/cast/cast256.h +++ b/src/lib/block/cast/cast256.h @@ -15,7 +15,7 @@ namespace Botan { /** * CAST-256 */ -class BOTAN_DLL CAST_256 final : public Block_Cipher_Fixed_Params<16, 4, 32, 4> +class BOTAN_PUBLIC_API(2,0) CAST_256 final : public Block_Cipher_Fixed_Params<16, 4, 32, 4> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/des/des.h b/src/lib/block/des/des.h index f0c32be29..4d17f0bed 100644 --- a/src/lib/block/des/des.h +++ b/src/lib/block/des/des.h @@ -15,7 +15,7 @@ namespace Botan { /** * DES */ -class BOTAN_DLL DES final : public Block_Cipher_Fixed_Params<8, 8> +class BOTAN_PUBLIC_API(2,0) DES final : public Block_Cipher_Fixed_Params<8, 8> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; @@ -33,7 +33,7 @@ class BOTAN_DLL DES final : public Block_Cipher_Fixed_Params<8, 8> /** * Triple DES */ -class BOTAN_DLL TripleDES final : public Block_Cipher_Fixed_Params<8, 16, 24, 8> +class BOTAN_PUBLIC_API(2,0) TripleDES final : public Block_Cipher_Fixed_Params<8, 16, 24, 8> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/des/desx.h b/src/lib/block/des/desx.h index 7bc7d047f..6f525b6ef 100644 --- a/src/lib/block/des/desx.h +++ b/src/lib/block/des/desx.h @@ -15,7 +15,7 @@ namespace Botan { /** * DESX */ -class BOTAN_DLL DESX final : public Block_Cipher_Fixed_Params<8, 24> +class BOTAN_PUBLIC_API(2,0) DESX final : public Block_Cipher_Fixed_Params<8, 24> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/gost_28147/gost_28147.h b/src/lib/block/gost_28147/gost_28147.h index 6ee1ec60e..543723c95 100644 --- a/src/lib/block/gost_28147/gost_28147.h +++ b/src/lib/block/gost_28147/gost_28147.h @@ -18,7 +18,7 @@ namespace Botan { * considered a local configuration issue. Several different sets are * used. */ -class BOTAN_DLL GOST_28147_89_Params +class BOTAN_PUBLIC_API(2,0) GOST_28147_89_Params { public: /** @@ -49,7 +49,7 @@ class BOTAN_DLL GOST_28147_89_Params /** * GOST 28147-89 */ -class BOTAN_DLL GOST_28147_89 final : public Block_Cipher_Fixed_Params<8, 32> +class BOTAN_PUBLIC_API(2,0) GOST_28147_89 final : public Block_Cipher_Fixed_Params<8, 32> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/idea/idea.h b/src/lib/block/idea/idea.h index eaef5deee..b76d18a13 100644 --- a/src/lib/block/idea/idea.h +++ b/src/lib/block/idea/idea.h @@ -15,7 +15,7 @@ namespace Botan { /** * IDEA */ -class BOTAN_DLL IDEA final : public Block_Cipher_Fixed_Params<8, 16> +class BOTAN_PUBLIC_API(2,0) IDEA final : public Block_Cipher_Fixed_Params<8, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/kasumi/kasumi.h b/src/lib/block/kasumi/kasumi.h index 4c6acdadd..7d51285ea 100644 --- a/src/lib/block/kasumi/kasumi.h +++ b/src/lib/block/kasumi/kasumi.h @@ -15,7 +15,7 @@ namespace Botan { /** * KASUMI, the block cipher used in 3G telephony */ -class BOTAN_DLL KASUMI final : public Block_Cipher_Fixed_Params<8, 16> +class BOTAN_PUBLIC_API(2,0) KASUMI final : public Block_Cipher_Fixed_Params<8, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/lion/lion.h b/src/lib/block/lion/lion.h index 5d82370ae..87abfab60 100644 --- a/src/lib/block/lion/lion.h +++ b/src/lib/block/lion/lion.h @@ -22,7 +22,7 @@ namespace Botan { * http://www.cl.cam.ac.uk/~rja14/Papers/bear-lion.pdf */ -class BOTAN_DLL Lion final : public BlockCipher +class BOTAN_PUBLIC_API(2,0) Lion final : public BlockCipher { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/misty1/misty1.h b/src/lib/block/misty1/misty1.h index 865e6c935..c3ab3db5f 100644 --- a/src/lib/block/misty1/misty1.h +++ b/src/lib/block/misty1/misty1.h @@ -15,7 +15,7 @@ namespace Botan { /** * MISTY1 with 8 rounds */ -class BOTAN_DLL MISTY1 final : public Block_Cipher_Fixed_Params<8, 16> +class BOTAN_PUBLIC_API(2,0) MISTY1 final : public Block_Cipher_Fixed_Params<8, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/noekeon/noekeon.h b/src/lib/block/noekeon/noekeon.h index de49d658f..2b823cd39 100644 --- a/src/lib/block/noekeon/noekeon.h +++ b/src/lib/block/noekeon/noekeon.h @@ -15,7 +15,7 @@ namespace Botan { /** * Noekeon */ -class BOTAN_DLL Noekeon final : public Block_Cipher_Fixed_Params<16, 16> +class BOTAN_PUBLIC_API(2,0) Noekeon final : public Block_Cipher_Fixed_Params<16, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/seed/seed.h b/src/lib/block/seed/seed.h index 99a510e70..fa5136de6 100644 --- a/src/lib/block/seed/seed.h +++ b/src/lib/block/seed/seed.h @@ -15,7 +15,7 @@ namespace Botan { /** * SEED, a Korean block cipher */ -class BOTAN_DLL SEED final : public Block_Cipher_Fixed_Params<16, 16> +class BOTAN_PUBLIC_API(2,0) SEED final : public Block_Cipher_Fixed_Params<16, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/serpent/serpent.h b/src/lib/block/serpent/serpent.h index 4ba385fde..edae9b338 100644 --- a/src/lib/block/serpent/serpent.h +++ b/src/lib/block/serpent/serpent.h @@ -16,7 +16,7 @@ namespace Botan { * Serpent is the most conservative of the AES finalists * http://www.cl.cam.ac.uk/~rja14/serpent.html */ -class BOTAN_DLL Serpent final : public Block_Cipher_Fixed_Params<16, 16, 32, 8> +class BOTAN_PUBLIC_API(2,0) Serpent final : public Block_Cipher_Fixed_Params<16, 16, 32, 8> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/threefish/threefish.h b/src/lib/block/threefish/threefish.h index cdd27cb11..1a0cc1bf4 100644 --- a/src/lib/block/threefish/threefish.h +++ b/src/lib/block/threefish/threefish.h @@ -15,7 +15,7 @@ namespace Botan { /** * Threefish-512 */ -class BOTAN_DLL Threefish_512 final : public Block_Cipher_Fixed_Params<64, 64> +class BOTAN_PUBLIC_API(2,0) Threefish_512 final : public Block_Cipher_Fixed_Params<64, 64> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/twofish/twofish.h b/src/lib/block/twofish/twofish.h index 50168ffdf..bdfb81ef5 100644 --- a/src/lib/block/twofish/twofish.h +++ b/src/lib/block/twofish/twofish.h @@ -15,7 +15,7 @@ namespace Botan { /** * Twofish, an AES finalist */ -class BOTAN_DLL Twofish final : public Block_Cipher_Fixed_Params<16, 16, 32, 8> +class BOTAN_PUBLIC_API(2,0) Twofish final : public Block_Cipher_Fixed_Params<16, 16, 32, 8> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/block/xtea/xtea.h b/src/lib/block/xtea/xtea.h index cf9bedc4a..2392f07e8 100644 --- a/src/lib/block/xtea/xtea.h +++ b/src/lib/block/xtea/xtea.h @@ -15,7 +15,7 @@ namespace Botan { /** * XTEA */ -class BOTAN_DLL XTEA : public Block_Cipher_Fixed_Params<8, 16> +class BOTAN_PUBLIC_API(2,0) XTEA : public Block_Cipher_Fixed_Params<8, 16> { public: void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override; diff --git a/src/lib/codec/base64/base64.h b/src/lib/codec/base64/base64.h index 70d806ee8..aefed4ba5 100644 --- a/src/lib/codec/base64/base64.h +++ b/src/lib/codec/base64/base64.h @@ -26,7 +26,7 @@ namespace Botan { padding chars will be applied if needed * @return number of bytes written to output */ -size_t BOTAN_DLL base64_encode(char output[], +size_t BOTAN_PUBLIC_API(2,0) base64_encode(char output[], const uint8_t input[], size_t input_length, size_t& input_consumed, @@ -38,7 +38,7 @@ size_t BOTAN_DLL base64_encode(char output[], * @param input_length length of input in bytes * @return base64adecimal representation of input */ -std::string BOTAN_DLL base64_encode(const uint8_t input[], +std::string BOTAN_PUBLIC_API(2,0) base64_encode(const uint8_t input[], size_t input_length); /** @@ -67,7 +67,7 @@ std::string base64_encode(const std::vector<uint8_t, Alloc>& input) exception if whitespace is encountered * @return number of bytes written to output */ -size_t BOTAN_DLL base64_decode(uint8_t output[], +size_t BOTAN_PUBLIC_API(2,0) base64_decode(uint8_t output[], const char input[], size_t input_length, size_t& input_consumed, @@ -83,7 +83,7 @@ size_t BOTAN_DLL base64_decode(uint8_t output[], exception if whitespace is encountered * @return number of bytes written to output */ -size_t BOTAN_DLL base64_decode(uint8_t output[], +size_t BOTAN_PUBLIC_API(2,0) base64_decode(uint8_t output[], const char input[], size_t input_length, bool ignore_ws = true); @@ -96,7 +96,7 @@ size_t BOTAN_DLL base64_decode(uint8_t output[], exception if whitespace is encountered * @return number of bytes written to output */ -size_t BOTAN_DLL base64_decode(uint8_t output[], +size_t BOTAN_PUBLIC_API(2,0) base64_decode(uint8_t output[], const std::string& input, bool ignore_ws = true); @@ -108,7 +108,7 @@ size_t BOTAN_DLL base64_decode(uint8_t output[], exception if whitespace is encountered * @return decoded base64 output */ -secure_vector<uint8_t> BOTAN_DLL base64_decode(const char input[], +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) base64_decode(const char input[], size_t input_length, bool ignore_ws = true); @@ -119,7 +119,7 @@ secure_vector<uint8_t> BOTAN_DLL base64_decode(const char input[], exception if whitespace is encountered * @return decoded base64 output */ -secure_vector<uint8_t> BOTAN_DLL base64_decode(const std::string& input, +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) base64_decode(const std::string& input, bool ignore_ws = true); /** diff --git a/src/lib/codec/hex/hex.h b/src/lib/codec/hex/hex.h index 2927640e2..d22f1e084 100644 --- a/src/lib/codec/hex/hex.h +++ b/src/lib/codec/hex/hex.h @@ -20,7 +20,7 @@ namespace Botan { * @param input_length length of input in bytes * @param uppercase should output be upper or lower case? */ -void BOTAN_DLL hex_encode(char output[], +void BOTAN_PUBLIC_API(2,0) hex_encode(char output[], const uint8_t input[], size_t input_length, bool uppercase = true); @@ -32,7 +32,7 @@ void BOTAN_DLL hex_encode(char output[], * @param uppercase should output be upper or lower case? * @return hexadecimal representation of input */ -std::string BOTAN_DLL hex_encode(const uint8_t input[], +std::string BOTAN_PUBLIC_API(2,0) hex_encode(const uint8_t input[], size_t input_length, bool uppercase = true); @@ -62,7 +62,7 @@ std::string hex_encode(const std::vector<uint8_t, Alloc>& input, exception if whitespace is encountered * @return number of bytes written to output */ -size_t BOTAN_DLL hex_decode(uint8_t output[], +size_t BOTAN_PUBLIC_API(2,0) hex_decode(uint8_t output[], const char input[], size_t input_length, size_t& input_consumed, @@ -77,7 +77,7 @@ size_t BOTAN_DLL hex_decode(uint8_t output[], exception if whitespace is encountered * @return number of bytes written to output */ -size_t BOTAN_DLL hex_decode(uint8_t output[], +size_t BOTAN_PUBLIC_API(2,0) hex_decode(uint8_t output[], const char input[], size_t input_length, bool ignore_ws = true); @@ -90,7 +90,7 @@ size_t BOTAN_DLL hex_decode(uint8_t output[], exception if whitespace is encountered * @return number of bytes written to output */ -size_t BOTAN_DLL hex_decode(uint8_t output[], +size_t BOTAN_PUBLIC_API(2,0) hex_decode(uint8_t output[], const std::string& input, bool ignore_ws = true); @@ -102,7 +102,7 @@ size_t BOTAN_DLL hex_decode(uint8_t output[], exception if whitespace is encountered * @return decoded hex output */ -std::vector<uint8_t> BOTAN_DLL +std::vector<uint8_t> BOTAN_PUBLIC_API(2,0) hex_decode(const char input[], size_t input_length, bool ignore_ws = true); @@ -114,7 +114,7 @@ hex_decode(const char input[], exception if whitespace is encountered * @return decoded hex output */ -std::vector<uint8_t> BOTAN_DLL +std::vector<uint8_t> BOTAN_PUBLIC_API(2,0) hex_decode(const std::string& input, bool ignore_ws = true); @@ -127,7 +127,7 @@ hex_decode(const std::string& input, exception if whitespace is encountered * @return decoded hex output */ -secure_vector<uint8_t> BOTAN_DLL +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) hex_decode_locked(const char input[], size_t input_length, bool ignore_ws = true); @@ -139,7 +139,7 @@ hex_decode_locked(const char input[], exception if whitespace is encountered * @return decoded hex output */ -secure_vector<uint8_t> BOTAN_DLL +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) hex_decode_locked(const std::string& input, bool ignore_ws = true); diff --git a/src/lib/compression/bzip2/bzip2.h b/src/lib/compression/bzip2/bzip2.h index 18216f7eb..5ab06a98d 100644 --- a/src/lib/compression/bzip2/bzip2.h +++ b/src/lib/compression/bzip2/bzip2.h @@ -16,7 +16,7 @@ namespace Botan { /** * Bzip2 Compression */ -class BOTAN_DLL Bzip2_Compression final : public Stream_Compression +class BOTAN_PUBLIC_API(2,0) Bzip2_Compression final : public Stream_Compression { public: std::string name() const override { return "Bzip2_Compression"; } @@ -27,7 +27,7 @@ class BOTAN_DLL Bzip2_Compression final : public Stream_Compression /** * Bzip2 Deccompression */ -class BOTAN_DLL Bzip2_Decompression final : public Stream_Decompression +class BOTAN_PUBLIC_API(2,0) Bzip2_Decompression final : public Stream_Decompression { public: std::string name() const override { return "Bzip2_Decompression"; } diff --git a/src/lib/compression/compression.h b/src/lib/compression/compression.h index ad5ed45c5..8757d9118 100644 --- a/src/lib/compression/compression.h +++ b/src/lib/compression/compression.h @@ -16,7 +16,7 @@ namespace Botan { /* * Interface for a compression algorithm. */ -class BOTAN_DLL Compression_Algorithm +class BOTAN_PUBLIC_API(2,0) Compression_Algorithm { public: /** @@ -62,7 +62,7 @@ class BOTAN_DLL Compression_Algorithm /* * Interface for a decompression algorithm. */ -class BOTAN_DLL Decompression_Algorithm +class BOTAN_PUBLIC_API(2,0) Decompression_Algorithm { public: /** @@ -100,8 +100,8 @@ class BOTAN_DLL Decompression_Algorithm virtual ~Decompression_Algorithm() {} }; -BOTAN_DLL Compression_Algorithm* make_compressor(const std::string& type); -BOTAN_DLL Decompression_Algorithm* make_decompressor(const std::string& type); +BOTAN_PUBLIC_API(2,0) Compression_Algorithm* make_compressor(const std::string& type); +BOTAN_PUBLIC_API(2,0) Decompression_Algorithm* make_decompressor(const std::string& type); /** * Adapts a zlib style API diff --git a/src/lib/compression/lzma/lzma.h b/src/lib/compression/lzma/lzma.h index 63722b064..8def571dd 100644 --- a/src/lib/compression/lzma/lzma.h +++ b/src/lib/compression/lzma/lzma.h @@ -17,7 +17,7 @@ namespace Botan { /** * LZMA Compression */ -class BOTAN_DLL LZMA_Compression final : public Stream_Compression +class BOTAN_PUBLIC_API(2,0) LZMA_Compression final : public Stream_Compression { public: std::string name() const override { return "LZMA_Compression"; } @@ -29,7 +29,7 @@ class BOTAN_DLL LZMA_Compression final : public Stream_Compression /** * LZMA Deccompression */ -class BOTAN_DLL LZMA_Decompression final : public Stream_Decompression +class BOTAN_PUBLIC_API(2,0) LZMA_Decompression final : public Stream_Decompression { public: std::string name() const override { return "LZMA_Decompression"; } diff --git a/src/lib/compression/zlib/zlib.h b/src/lib/compression/zlib/zlib.h index a2cae34f4..65614d6a9 100644 --- a/src/lib/compression/zlib/zlib.h +++ b/src/lib/compression/zlib/zlib.h @@ -16,7 +16,7 @@ namespace Botan { /** * Zlib Compression */ -class BOTAN_DLL Zlib_Compression final : public Stream_Compression +class BOTAN_PUBLIC_API(2,0) Zlib_Compression final : public Stream_Compression { public: std::string name() const override { return "Zlib_Compression"; } @@ -27,7 +27,7 @@ class BOTAN_DLL Zlib_Compression final : public Stream_Compression /** * Zlib Decompression */ -class BOTAN_DLL Zlib_Decompression final : public Stream_Decompression +class BOTAN_PUBLIC_API(2,0) Zlib_Decompression final : public Stream_Decompression { public: std::string name() const override { return "Zlib_Decompression"; } @@ -38,7 +38,7 @@ class BOTAN_DLL Zlib_Decompression final : public Stream_Decompression /** * Deflate Compression */ -class BOTAN_DLL Deflate_Compression final : public Stream_Compression +class BOTAN_PUBLIC_API(2,0) Deflate_Compression final : public Stream_Compression { public: std::string name() const override { return "Deflate_Compression"; } @@ -49,7 +49,7 @@ class BOTAN_DLL Deflate_Compression final : public Stream_Compression /** * Deflate Decompression */ -class BOTAN_DLL Deflate_Decompression final : public Stream_Decompression +class BOTAN_PUBLIC_API(2,0) Deflate_Decompression final : public Stream_Decompression { public: std::string name() const override { return "Deflate_Decompression"; } @@ -60,7 +60,7 @@ class BOTAN_DLL Deflate_Decompression final : public Stream_Decompression /** * Gzip Compression */ -class BOTAN_DLL Gzip_Compression final : public Stream_Compression +class BOTAN_PUBLIC_API(2,0) Gzip_Compression final : public Stream_Compression { public: Gzip_Compression(uint8_t os_code = 255) : m_os_code(os_code) {} @@ -74,7 +74,7 @@ class BOTAN_DLL Gzip_Compression final : public Stream_Compression /** * Gzip Decompression */ -class BOTAN_DLL Gzip_Decompression final : public Stream_Decompression +class BOTAN_PUBLIC_API(2,0) Gzip_Decompression final : public Stream_Decompression { public: std::string name() const override { return "Gzip_Decompression"; } diff --git a/src/lib/entropy/entropy_src.h b/src/lib/entropy/entropy_src.h index fe177657c..6f8a468b1 100644 --- a/src/lib/entropy/entropy_src.h +++ b/src/lib/entropy/entropy_src.h @@ -22,7 +22,7 @@ class RandomNumberGenerator; /** * Abstract interface to a source of entropy */ -class BOTAN_DLL Entropy_Source +class BOTAN_PUBLIC_API(2,0) Entropy_Source { public: /** @@ -48,7 +48,7 @@ class BOTAN_DLL Entropy_Source virtual ~Entropy_Source() {} }; -class BOTAN_DLL Entropy_Sources final +class BOTAN_PUBLIC_API(2,0) Entropy_Sources final { public: static Entropy_Sources& global_sources(); diff --git a/src/lib/filters/basefilt.h b/src/lib/filters/basefilt.h index 47437688e..d81022c07 100644 --- a/src/lib/filters/basefilt.h +++ b/src/lib/filters/basefilt.h @@ -20,7 +20,7 @@ namespace Botan { /** * BitBucket is a filter which simply discards all inputs */ -struct BOTAN_DLL BitBucket final : public Filter +struct BOTAN_PUBLIC_API(2,0) BitBucket final : public Filter { void write(const uint8_t[], size_t) override {} @@ -33,7 +33,7 @@ struct BOTAN_DLL BitBucket final : public Filter * through all the Filters contained in the Chain. */ -class BOTAN_DLL Chain : public Fanout_Filter +class BOTAN_PUBLIC_API(2,0) Chain : public Fanout_Filter { public: void write(const uint8_t input[], size_t length) override { send(input, length); } @@ -60,7 +60,7 @@ class BOTAN_DLL Chain : public Fanout_Filter * flow of data. It causes an input message to result in n messages at * the end of the filter, where n is the number of forks. */ -class BOTAN_DLL Fork : public Fanout_Filter +class BOTAN_PUBLIC_API(2,0) Fork : public Fanout_Filter { public: void write(const uint8_t input[], size_t length) override { send(input, length); } @@ -88,7 +88,7 @@ class BOTAN_DLL Fork : public Fanout_Filter * threads, the class itself is NOT thread-safe. This is meant as a drop- * in replacement for Fork where performance gains are possible. */ -class BOTAN_DLL Threaded_Fork : public Fork +class BOTAN_PUBLIC_API(2,0) Threaded_Fork : public Fork { public: std::string name() const override; diff --git a/src/lib/filters/buf_filt.h b/src/lib/filters/buf_filt.h index d08dd9dec..2c68c6f69 100644 --- a/src/lib/filters/buf_filt.h +++ b/src/lib/filters/buf_filt.h @@ -16,7 +16,7 @@ namespace Botan { * Filter mixin that breaks input into blocks, useful for * cipher modes */ -class BOTAN_DLL Buffered_Filter +class BOTAN_PUBLIC_API(2,0) Buffered_Filter { public: /** diff --git a/src/lib/filters/cipher_filter.h b/src/lib/filters/cipher_filter.h index eae70d9c0..3ec56d5cc 100644 --- a/src/lib/filters/cipher_filter.h +++ b/src/lib/filters/cipher_filter.h @@ -17,7 +17,7 @@ namespace Botan { /** * Filter interface for cipher modes */ -class BOTAN_DLL Cipher_Mode_Filter : public Keyed_Filter, +class BOTAN_PUBLIC_API(2,0) Cipher_Mode_Filter : public Keyed_Filter, private Buffered_Filter { public: diff --git a/src/lib/filters/codec_filt/b64_filt.h b/src/lib/filters/codec_filt/b64_filt.h index a643acb32..0d9584ea1 100644 --- a/src/lib/filters/codec_filt/b64_filt.h +++ b/src/lib/filters/codec_filt/b64_filt.h @@ -15,7 +15,7 @@ namespace Botan { /** * This class represents a Base64 encoder. */ -class BOTAN_DLL Base64_Encoder final : public Filter +class BOTAN_PUBLIC_API(2,0) Base64_Encoder final : public Filter { public: std::string name() const override { return "Base64_Encoder"; } @@ -54,7 +54,7 @@ class BOTAN_DLL Base64_Encoder final : public Filter /** * This object represents a Base64 decoder. */ -class BOTAN_DLL Base64_Decoder final : public Filter +class BOTAN_PUBLIC_API(2,0) Base64_Decoder final : public Filter { public: std::string name() const override { return "Base64_Decoder"; } diff --git a/src/lib/filters/codec_filt/hex_filt.h b/src/lib/filters/codec_filt/hex_filt.h index f1288b0b9..69b0a255d 100644 --- a/src/lib/filters/codec_filt/hex_filt.h +++ b/src/lib/filters/codec_filt/hex_filt.h @@ -16,7 +16,7 @@ namespace Botan { * Converts arbitrary binary data to hex strings, optionally with * newlines inserted */ -class BOTAN_DLL Hex_Encoder final : public Filter +class BOTAN_PUBLIC_API(2,0) Hex_Encoder final : public Filter { public: /** @@ -56,7 +56,7 @@ class BOTAN_DLL Hex_Encoder final : public Filter /** * Converts hex strings to bytes */ -class BOTAN_DLL Hex_Decoder final : public Filter +class BOTAN_PUBLIC_API(2,0) Hex_Decoder final : public Filter { public: std::string name() const override { return "Hex_Decoder"; } diff --git a/src/lib/filters/comp_filter.h b/src/lib/filters/comp_filter.h index 64887e161..6a487b094 100644 --- a/src/lib/filters/comp_filter.h +++ b/src/lib/filters/comp_filter.h @@ -20,7 +20,7 @@ class Decompression_Algorithm; /** * Filter interface for compression */ -class BOTAN_DLL Compression_Filter : public Filter +class BOTAN_PUBLIC_API(2,0) Compression_Filter : public Filter { public: void start_msg() override; @@ -45,7 +45,7 @@ class BOTAN_DLL Compression_Filter : public Filter /** * Filter interface for decompression */ -class BOTAN_DLL Decompression_Filter : public Filter +class BOTAN_PUBLIC_API(2,0) Decompression_Filter : public Filter { public: void start_msg() override; diff --git a/src/lib/filters/data_snk.h b/src/lib/filters/data_snk.h index b3e5e06cf..1223dbd27 100644 --- a/src/lib/filters/data_snk.h +++ b/src/lib/filters/data_snk.h @@ -18,7 +18,7 @@ namespace Botan { /** * This class represents abstract data sink objects. */ -class BOTAN_DLL DataSink : public Filter +class BOTAN_PUBLIC_API(2,0) DataSink : public Filter { public: bool attachable() override { return false; } @@ -32,7 +32,7 @@ class BOTAN_DLL DataSink : public Filter /** * This class represents a data sink which writes its output to a stream. */ -class BOTAN_DLL DataSink_Stream : public DataSink +class BOTAN_PUBLIC_API(2,0) DataSink_Stream : public DataSink { public: /** diff --git a/src/lib/filters/fd_unix/fd_unix.h b/src/lib/filters/fd_unix/fd_unix.h index 78f6948de..380a209f6 100644 --- a/src/lib/filters/fd_unix/fd_unix.h +++ b/src/lib/filters/fd_unix/fd_unix.h @@ -18,7 +18,7 @@ namespace Botan { * @param out file descriptor for an open output stream * @param pipe the pipe */ -int BOTAN_DLL operator<<(int out, Pipe& pipe); +int BOTAN_PUBLIC_API(2,0) operator<<(int out, Pipe& pipe); /** * File descriptor input operator; dumps the remaining bytes of input @@ -26,7 +26,7 @@ int BOTAN_DLL operator<<(int out, Pipe& pipe); * @param in file descriptor for an open input stream * @param pipe the pipe */ -int BOTAN_DLL operator>>(int in, Pipe& pipe); +int BOTAN_PUBLIC_API(2,0) operator>>(int in, Pipe& pipe); } diff --git a/src/lib/filters/filter.h b/src/lib/filters/filter.h index 6b93fd03b..be77b0df1 100644 --- a/src/lib/filters/filter.h +++ b/src/lib/filters/filter.h @@ -18,7 +18,7 @@ namespace Botan { /** * This class represents general abstract filter objects. */ -class BOTAN_DLL Filter +class BOTAN_PUBLIC_API(2,0) Filter { public: /** @@ -149,7 +149,7 @@ class BOTAN_DLL Filter /** * This is the abstract Fanout_Filter base class. **/ -class BOTAN_DLL Fanout_Filter : public Filter +class BOTAN_PUBLIC_API(2,0) Fanout_Filter : public Filter { protected: /** diff --git a/src/lib/filters/filters.h b/src/lib/filters/filters.h index b823d7751..9574e59f5 100644 --- a/src/lib/filters/filters.h +++ b/src/lib/filters/filters.h @@ -28,7 +28,7 @@ namespace Botan { /** * Stream Cipher Filter */ -class BOTAN_DLL StreamCipher_Filter : public Keyed_Filter +class BOTAN_PUBLIC_API(2,0) StreamCipher_Filter : public Keyed_Filter { public: @@ -94,7 +94,7 @@ class BOTAN_DLL StreamCipher_Filter : public Keyed_Filter /** * Hash Filter. */ -class BOTAN_DLL Hash_Filter : public Filter +class BOTAN_PUBLIC_API(2,0) Hash_Filter : public Filter { public: void write(const uint8_t input[], size_t len) override { m_hash->update(input, len); } @@ -131,7 +131,7 @@ class BOTAN_DLL Hash_Filter : public Filter /** * MessageAuthenticationCode Filter. */ -class BOTAN_DLL MAC_Filter : public Keyed_Filter +class BOTAN_PUBLIC_API(2,0) MAC_Filter : public Keyed_Filter { public: void write(const uint8_t input[], size_t len) override { m_mac->update(input, len); } diff --git a/src/lib/filters/key_filt.h b/src/lib/filters/key_filt.h index ae1d4c5f0..932bf43eb 100644 --- a/src/lib/filters/key_filt.h +++ b/src/lib/filters/key_filt.h @@ -18,7 +18,7 @@ namespace Botan { * This class represents keyed filters, i.e. filters that have to be * fed with a key in order to function. */ -class BOTAN_DLL Keyed_Filter : public Filter +class BOTAN_PUBLIC_API(2,0) Keyed_Filter : public Filter { public: /** @@ -74,7 +74,7 @@ class BOTAN_DLL Keyed_Filter : public Filter * or decrypting filter * @return pointer to newly allocated encryption or decryption filter */ -BOTAN_DLL Keyed_Filter* get_cipher(const std::string& algo_spec, +BOTAN_PUBLIC_API(2,0) Keyed_Filter* get_cipher(const std::string& algo_spec, const SymmetricKey& key, const InitializationVector& iv, Cipher_Dir direction); @@ -88,7 +88,7 @@ BOTAN_DLL Keyed_Filter* get_cipher(const std::string& algo_spec, * or decrypting filter * @return pointer to the encryption or decryption filter */ -BOTAN_DLL Keyed_Filter* get_cipher(const std::string& algo_spec, +BOTAN_PUBLIC_API(2,0) Keyed_Filter* get_cipher(const std::string& algo_spec, const SymmetricKey& key, Cipher_Dir direction); @@ -101,7 +101,7 @@ BOTAN_DLL Keyed_Filter* get_cipher(const std::string& algo_spec, * decrypting filter * @return pointer to the encryption or decryption filter */ -BOTAN_DLL Keyed_Filter* get_cipher(const std::string& algo_spec, +BOTAN_PUBLIC_API(2,0) Keyed_Filter* get_cipher(const std::string& algo_spec, Cipher_Dir direction); } diff --git a/src/lib/filters/pipe.h b/src/lib/filters/pipe.h index 1b839809d..9dc7152b0 100644 --- a/src/lib/filters/pipe.h +++ b/src/lib/filters/pipe.h @@ -24,7 +24,7 @@ namespace Botan { * collected for retrieval. If you're familiar with the Unix shell * environment, this design will sound quite familiar. */ -class BOTAN_DLL Pipe final : public DataSource +class BOTAN_PUBLIC_API(2,0) Pipe final : public DataSource { public: /** @@ -36,7 +36,7 @@ class BOTAN_DLL Pipe final : public DataSource * Exception if you use an invalid message as an argument to * read, remaining, etc */ - struct BOTAN_DLL Invalid_Message_Number : public Invalid_Argument + struct BOTAN_PUBLIC_API(2,0) Invalid_Message_Number : public Invalid_Argument { /** * @param where the error occurred @@ -324,7 +324,7 @@ class BOTAN_DLL Pipe final : public DataSource * @param out an output stream * @param pipe the pipe */ -BOTAN_DLL std::ostream& operator<<(std::ostream& out, Pipe& pipe); +BOTAN_PUBLIC_API(2,0) std::ostream& operator<<(std::ostream& out, Pipe& pipe); /** * Stream input operator; dumps the remaining bytes of input @@ -332,7 +332,7 @@ BOTAN_DLL std::ostream& operator<<(std::ostream& out, Pipe& pipe); * @param in the input stream * @param pipe the pipe */ -BOTAN_DLL std::istream& operator>>(std::istream& in, Pipe& pipe); +BOTAN_PUBLIC_API(2,0) std::istream& operator>>(std::istream& in, Pipe& pipe); } diff --git a/src/lib/filters/secqueue.h b/src/lib/filters/secqueue.h index b4b977411..bb18f1f8d 100644 --- a/src/lib/filters/secqueue.h +++ b/src/lib/filters/secqueue.h @@ -17,7 +17,7 @@ namespace Botan { /** * A queue that knows how to zeroize itself */ -class BOTAN_DLL SecureQueue : public Fanout_Filter, public DataSource +class BOTAN_PUBLIC_API(2,0) SecureQueue : public Fanout_Filter, public DataSource { public: std::string name() const override { return "Queue"; } diff --git a/src/lib/hash/blake2/blake2b.h b/src/lib/hash/blake2/blake2b.h index c7ceac01e..c177cc620 100644 --- a/src/lib/hash/blake2/blake2b.h +++ b/src/lib/hash/blake2/blake2b.h @@ -23,7 +23,7 @@ enum blake2b_constant { /** * BLAKE2B */ -class BOTAN_DLL Blake2b final : public HashFunction +class BOTAN_PUBLIC_API(2,0) Blake2b final : public HashFunction { public: /** diff --git a/src/lib/hash/checksum/adler32/adler32.h b/src/lib/hash/checksum/adler32/adler32.h index 98ba4f91a..93a68267a 100644 --- a/src/lib/hash/checksum/adler32/adler32.h +++ b/src/lib/hash/checksum/adler32/adler32.h @@ -15,7 +15,7 @@ namespace Botan { /** * The Adler32 checksum, used in zlib */ -class BOTAN_DLL Adler32 final : public HashFunction +class BOTAN_PUBLIC_API(2,0) Adler32 final : public HashFunction { public: std::string name() const override { return "Adler32"; } diff --git a/src/lib/hash/checksum/crc24/crc24.h b/src/lib/hash/checksum/crc24/crc24.h index 203611b8f..91b947e00 100644 --- a/src/lib/hash/checksum/crc24/crc24.h +++ b/src/lib/hash/checksum/crc24/crc24.h @@ -15,7 +15,7 @@ namespace Botan { /** * 24-bit cyclic redundancy check */ -class BOTAN_DLL CRC24 final : public HashFunction +class BOTAN_PUBLIC_API(2,0) CRC24 final : public HashFunction { public: std::string name() const override { return "CRC24"; } diff --git a/src/lib/hash/checksum/crc32/crc32.h b/src/lib/hash/checksum/crc32/crc32.h index e1e266de3..6da2a06d4 100644 --- a/src/lib/hash/checksum/crc32/crc32.h +++ b/src/lib/hash/checksum/crc32/crc32.h @@ -15,7 +15,7 @@ namespace Botan { /** * 32-bit cyclic redundancy check */ -class BOTAN_DLL CRC32 final : public HashFunction +class BOTAN_PUBLIC_API(2,0) CRC32 final : public HashFunction { public: std::string name() const override { return "CRC32"; } diff --git a/src/lib/hash/comb4p/comb4p.h b/src/lib/hash/comb4p/comb4p.h index 9579db0ab..1cc9ff566 100644 --- a/src/lib/hash/comb4p/comb4p.h +++ b/src/lib/hash/comb4p/comb4p.h @@ -16,7 +16,7 @@ namespace Botan { * Combines two hash functions using a Feistel scheme. Described in * "On the Security of Hash Function Combiners", Anja Lehmann */ -class BOTAN_DLL Comb4P final : public HashFunction +class BOTAN_PUBLIC_API(2,0) Comb4P final : public HashFunction { public: /** diff --git a/src/lib/hash/gost_3411/gost_3411.h b/src/lib/hash/gost_3411/gost_3411.h index 51f010afb..cc38f1a87 100644 --- a/src/lib/hash/gost_3411/gost_3411.h +++ b/src/lib/hash/gost_3411/gost_3411.h @@ -16,7 +16,7 @@ namespace Botan { /** * GOST 34.11 */ -class BOTAN_DLL GOST_34_11 final : public HashFunction +class BOTAN_PUBLIC_API(2,0) GOST_34_11 final : public HashFunction { public: std::string name() const override { return "GOST-R-34.11-94" ; } diff --git a/src/lib/hash/hash.h b/src/lib/hash/hash.h index db049989a..557e60476 100644 --- a/src/lib/hash/hash.h +++ b/src/lib/hash/hash.h @@ -16,7 +16,7 @@ namespace Botan { /** * This class represents hash function (message digest) objects */ -class BOTAN_DLL HashFunction : public Buffered_Computation +class BOTAN_PUBLIC_API(2,0) HashFunction : public Buffered_Computation { public: /** diff --git a/src/lib/hash/keccak/keccak.h b/src/lib/hash/keccak/keccak.h index 36e1ad9fe..72143c8e5 100644 --- a/src/lib/hash/keccak/keccak.h +++ b/src/lib/hash/keccak/keccak.h @@ -17,7 +17,7 @@ namespace Botan { /** * Keccak[1600], a SHA-3 candidate */ -class BOTAN_DLL Keccak_1600 final : public HashFunction +class BOTAN_PUBLIC_API(2,0) Keccak_1600 final : public HashFunction { public: diff --git a/src/lib/hash/md4/md4.h b/src/lib/hash/md4/md4.h index c84cb0058..278bd16f7 100644 --- a/src/lib/hash/md4/md4.h +++ b/src/lib/hash/md4/md4.h @@ -15,7 +15,7 @@ namespace Botan { /** * MD4 */ -class BOTAN_DLL MD4 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) MD4 final : public MDx_HashFunction { public: std::string name() const override { return "MD4"; } diff --git a/src/lib/hash/md5/md5.h b/src/lib/hash/md5/md5.h index ee8d70e3f..3f4d52536 100644 --- a/src/lib/hash/md5/md5.h +++ b/src/lib/hash/md5/md5.h @@ -15,7 +15,7 @@ namespace Botan { /** * MD5 */ -class BOTAN_DLL MD5 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) MD5 final : public MDx_HashFunction { public: std::string name() const override { return "MD5"; } diff --git a/src/lib/hash/mdx_hash/mdx_hash.h b/src/lib/hash/mdx_hash/mdx_hash.h index 649cf387d..dd3faadd0 100644 --- a/src/lib/hash/mdx_hash/mdx_hash.h +++ b/src/lib/hash/mdx_hash/mdx_hash.h @@ -15,7 +15,7 @@ namespace Botan { /** * MDx Hash Function Base Class */ -class BOTAN_DLL MDx_HashFunction : public HashFunction +class BOTAN_PUBLIC_API(2,0) MDx_HashFunction : public HashFunction { public: /** diff --git a/src/lib/hash/par_hash/par_hash.h b/src/lib/hash/par_hash/par_hash.h index 85bf49208..c3cbdae49 100644 --- a/src/lib/hash/par_hash/par_hash.h +++ b/src/lib/hash/par_hash/par_hash.h @@ -16,7 +16,7 @@ namespace Botan { /** * Parallel Hashes */ -class BOTAN_DLL Parallel final : public HashFunction +class BOTAN_PUBLIC_API(2,0) Parallel final : public HashFunction { public: void clear() override; diff --git a/src/lib/hash/rmd160/rmd160.h b/src/lib/hash/rmd160/rmd160.h index f2b57ef33..3e0dbb9d7 100644 --- a/src/lib/hash/rmd160/rmd160.h +++ b/src/lib/hash/rmd160/rmd160.h @@ -15,7 +15,7 @@ namespace Botan { /** * RIPEMD-160 */ -class BOTAN_DLL RIPEMD_160 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) RIPEMD_160 final : public MDx_HashFunction { public: std::string name() const override { return "RIPEMD-160"; } diff --git a/src/lib/hash/sha1/sha160.h b/src/lib/hash/sha1/sha160.h index fd3c77d46..326ea6329 100644 --- a/src/lib/hash/sha1/sha160.h +++ b/src/lib/hash/sha1/sha160.h @@ -15,7 +15,7 @@ namespace Botan { /** * NIST's SHA-160 */ -class BOTAN_DLL SHA_160 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_160 final : public MDx_HashFunction { public: std::string name() const override { return "SHA-160"; } diff --git a/src/lib/hash/sha2_32/sha2_32.h b/src/lib/hash/sha2_32/sha2_32.h index a6619f0fc..89e21f0a4 100644 --- a/src/lib/hash/sha2_32/sha2_32.h +++ b/src/lib/hash/sha2_32/sha2_32.h @@ -16,7 +16,7 @@ namespace Botan { /** * SHA-224 */ -class BOTAN_DLL SHA_224 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_224 final : public MDx_HashFunction { public: std::string name() const override { return "SHA-224"; } @@ -38,7 +38,7 @@ class BOTAN_DLL SHA_224 final : public MDx_HashFunction /** * SHA-256 */ -class BOTAN_DLL SHA_256 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_256 final : public MDx_HashFunction { public: std::string name() const override { return "SHA-256"; } diff --git a/src/lib/hash/sha2_64/sha2_64.h b/src/lib/hash/sha2_64/sha2_64.h index b027c4d27..5d9496871 100644 --- a/src/lib/hash/sha2_64/sha2_64.h +++ b/src/lib/hash/sha2_64/sha2_64.h @@ -15,7 +15,7 @@ namespace Botan { /** * SHA-384 */ -class BOTAN_DLL SHA_384 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_384 final : public MDx_HashFunction { public: std::string name() const override { return "SHA-384"; } @@ -37,7 +37,7 @@ class BOTAN_DLL SHA_384 final : public MDx_HashFunction /** * SHA-512 */ -class BOTAN_DLL SHA_512 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_512 final : public MDx_HashFunction { public: std::string name() const override { return "SHA-512"; } @@ -59,7 +59,7 @@ class BOTAN_DLL SHA_512 final : public MDx_HashFunction /** * SHA-512/256 */ -class BOTAN_DLL SHA_512_256 final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_512_256 final : public MDx_HashFunction { public: std::string name() const override { return "SHA-512-256"; } diff --git a/src/lib/hash/sha3/sha3.h b/src/lib/hash/sha3/sha3.h index fec25b806..5c2c280be 100644 --- a/src/lib/hash/sha3/sha3.h +++ b/src/lib/hash/sha3/sha3.h @@ -17,7 +17,7 @@ namespace Botan { /** * SHA-3 */ -class BOTAN_DLL SHA_3 : public HashFunction +class BOTAN_PUBLIC_API(2,0) SHA_3 : public HashFunction { public: @@ -77,7 +77,7 @@ class BOTAN_DLL SHA_3 : public HashFunction /** * SHA-3-224 */ -class BOTAN_DLL SHA_3_224 final : public SHA_3 +class BOTAN_PUBLIC_API(2,0) SHA_3_224 final : public SHA_3 { public: SHA_3_224() : SHA_3(224) {} @@ -86,7 +86,7 @@ class BOTAN_DLL SHA_3_224 final : public SHA_3 /** * SHA-3-256 */ -class BOTAN_DLL SHA_3_256 final : public SHA_3 +class BOTAN_PUBLIC_API(2,0) SHA_3_256 final : public SHA_3 { public: SHA_3_256() : SHA_3(256) {} @@ -95,7 +95,7 @@ class BOTAN_DLL SHA_3_256 final : public SHA_3 /** * SHA-3-384 */ -class BOTAN_DLL SHA_3_384 final : public SHA_3 +class BOTAN_PUBLIC_API(2,0) SHA_3_384 final : public SHA_3 { public: SHA_3_384() : SHA_3(384) {} @@ -104,7 +104,7 @@ class BOTAN_DLL SHA_3_384 final : public SHA_3 /** * SHA-3-512 */ -class BOTAN_DLL SHA_3_512 final : public SHA_3 +class BOTAN_PUBLIC_API(2,0) SHA_3_512 final : public SHA_3 { public: SHA_3_512() : SHA_3(512) {} diff --git a/src/lib/hash/shake/shake.h b/src/lib/hash/shake/shake.h index 363e8be48..b76d00546 100644 --- a/src/lib/hash/shake/shake.h +++ b/src/lib/hash/shake/shake.h @@ -17,7 +17,7 @@ namespace Botan { /** * SHAKE-128 */ -class BOTAN_DLL SHAKE_128 : public HashFunction +class BOTAN_PUBLIC_API(2,0) SHAKE_128 : public HashFunction { public: @@ -49,7 +49,7 @@ class BOTAN_DLL SHAKE_128 : public HashFunction /** * SHAKE-256 */ -class BOTAN_DLL SHAKE_256 : public HashFunction +class BOTAN_PUBLIC_API(2,0) SHAKE_256 : public HashFunction { public: diff --git a/src/lib/hash/skein/skein_512.h b/src/lib/hash/skein/skein_512.h index ad47e4b1c..f34c4c283 100644 --- a/src/lib/hash/skein/skein_512.h +++ b/src/lib/hash/skein/skein_512.h @@ -18,7 +18,7 @@ namespace Botan { /** * Skein-512, a SHA-3 candidate */ -class BOTAN_DLL Skein_512 final : public HashFunction +class BOTAN_PUBLIC_API(2,0) Skein_512 final : public HashFunction { public: /** diff --git a/src/lib/hash/tiger/tiger.h b/src/lib/hash/tiger/tiger.h index 73907b71f..fc74b821b 100644 --- a/src/lib/hash/tiger/tiger.h +++ b/src/lib/hash/tiger/tiger.h @@ -15,7 +15,7 @@ namespace Botan { /** * Tiger */ -class BOTAN_DLL Tiger final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) Tiger final : public MDx_HashFunction { public: std::string name() const override; diff --git a/src/lib/hash/whirlpool/whrlpool.h b/src/lib/hash/whirlpool/whrlpool.h index ed541e497..2e96f3013 100644 --- a/src/lib/hash/whirlpool/whrlpool.h +++ b/src/lib/hash/whirlpool/whrlpool.h @@ -15,7 +15,7 @@ namespace Botan { /** * Whirlpool */ -class BOTAN_DLL Whirlpool final : public MDx_HashFunction +class BOTAN_PUBLIC_API(2,0) Whirlpool final : public MDx_HashFunction { public: std::string name() const override { return "Whirlpool"; } diff --git a/src/lib/kdf/hkdf/hkdf.h b/src/lib/kdf/hkdf/hkdf.h index 7a07f94e1..3e0f1d77c 100644 --- a/src/lib/kdf/hkdf/hkdf.h +++ b/src/lib/kdf/hkdf/hkdf.h @@ -18,7 +18,7 @@ namespace Botan { /** * HKDF from RFC 5869. */ -class BOTAN_DLL HKDF final : public KDF +class BOTAN_PUBLIC_API(2,0) HKDF final : public KDF { public: /** @@ -42,7 +42,7 @@ class BOTAN_DLL HKDF final : public KDF /** * HKDF Extraction Step from RFC 5869. */ -class BOTAN_DLL HKDF_Extract final : public KDF +class BOTAN_PUBLIC_API(2,0) HKDF_Extract final : public KDF { public: /** @@ -66,7 +66,7 @@ class BOTAN_DLL HKDF_Extract final : public KDF /** * HKDF Expansion Step from RFC 5869. */ -class BOTAN_DLL HKDF_Expand final : public KDF +class BOTAN_PUBLIC_API(2,0) HKDF_Expand final : public KDF { public: /** diff --git a/src/lib/kdf/kdf.h b/src/lib/kdf/kdf.h index 3be026222..cc8ebf252 100644 --- a/src/lib/kdf/kdf.h +++ b/src/lib/kdf/kdf.h @@ -17,7 +17,7 @@ namespace Botan { /** * Key Derivation Function */ -class BOTAN_DLL KDF +class BOTAN_PUBLIC_API(2,0) KDF { public: virtual ~KDF() = default; @@ -189,7 +189,7 @@ class BOTAN_DLL KDF * @param algo_spec the name of the KDF to create * @return pointer to newly allocated object of that type */ -BOTAN_DLL KDF* get_kdf(const std::string& algo_spec); +BOTAN_PUBLIC_API(2,0) KDF* get_kdf(const std::string& algo_spec); } diff --git a/src/lib/kdf/kdf1/kdf1.h b/src/lib/kdf/kdf1/kdf1.h index 2dc9dbb33..7f895fed2 100644 --- a/src/lib/kdf/kdf1/kdf1.h +++ b/src/lib/kdf/kdf1/kdf1.h @@ -16,7 +16,7 @@ namespace Botan { /** * KDF1, from IEEE 1363 */ -class BOTAN_DLL KDF1 final : public KDF +class BOTAN_PUBLIC_API(2,0) KDF1 final : public KDF { public: std::string name() const override { return "KDF1(" + m_hash->name() + ")"; } diff --git a/src/lib/kdf/kdf1_iso18033/kdf1_iso18033.h b/src/lib/kdf/kdf1_iso18033/kdf1_iso18033.h index d77399aa4..ce9f487ee 100644 --- a/src/lib/kdf/kdf1_iso18033/kdf1_iso18033.h +++ b/src/lib/kdf/kdf1_iso18033/kdf1_iso18033.h @@ -16,7 +16,7 @@ namespace Botan { /** * KDF1, from ISO 18033-2 */ -class BOTAN_DLL KDF1_18033 : public KDF +class BOTAN_PUBLIC_API(2,0) KDF1_18033 : public KDF { public: std::string name() const override { return "KDF1-18033(" + m_hash->name() + ")"; } diff --git a/src/lib/kdf/kdf2/kdf2.h b/src/lib/kdf/kdf2/kdf2.h index 5683aeb8a..3f1f74ea6 100644 --- a/src/lib/kdf/kdf2/kdf2.h +++ b/src/lib/kdf/kdf2/kdf2.h @@ -16,7 +16,7 @@ namespace Botan { /** * KDF2, from IEEE 1363 */ -class BOTAN_DLL KDF2 final : public KDF +class BOTAN_PUBLIC_API(2,0) KDF2 final : public KDF { public: std::string name() const override { return "KDF2(" + m_hash->name() + ")"; } diff --git a/src/lib/kdf/prf_tls/prf_tls.h b/src/lib/kdf/prf_tls/prf_tls.h index 3f1585913..2414c305f 100644 --- a/src/lib/kdf/prf_tls/prf_tls.h +++ b/src/lib/kdf/prf_tls/prf_tls.h @@ -16,7 +16,7 @@ namespace Botan { /** * PRF used in TLS 1.0/1.1 */ -class BOTAN_DLL TLS_PRF final : public KDF +class BOTAN_PUBLIC_API(2,0) TLS_PRF final : public KDF { public: std::string name() const override { return "TLS-PRF"; } @@ -37,7 +37,7 @@ class BOTAN_DLL TLS_PRF final : public KDF /** * PRF used in TLS 1.2 */ -class BOTAN_DLL TLS_12_PRF final : public KDF +class BOTAN_PUBLIC_API(2,0) TLS_12_PRF final : public KDF { public: std::string name() const override { return "TLS-12-PRF(" + m_mac->name() + ")"; } diff --git a/src/lib/kdf/prf_x942/prf_x942.h b/src/lib/kdf/prf_x942/prf_x942.h index fbc931637..01b90060b 100644 --- a/src/lib/kdf/prf_x942/prf_x942.h +++ b/src/lib/kdf/prf_x942/prf_x942.h @@ -15,7 +15,7 @@ namespace Botan { /** * PRF from ANSI X9.42 */ -class BOTAN_DLL X942_PRF final : public KDF +class BOTAN_PUBLIC_API(2,0) X942_PRF final : public KDF { public: std::string name() const override { return "X9.42-PRF(" + m_key_wrap_oid + ")"; } diff --git a/src/lib/kdf/sp800_108/sp800_108.h b/src/lib/kdf/sp800_108/sp800_108.h index 848b9e2a2..1cf13721f 100644 --- a/src/lib/kdf/sp800_108/sp800_108.h +++ b/src/lib/kdf/sp800_108/sp800_108.h @@ -16,7 +16,7 @@ namespace Botan { /** * NIST SP 800-108 KDF in Counter Mode (5.1) */ -class BOTAN_DLL SP800_108_Counter : public KDF +class BOTAN_PUBLIC_API(2,0) SP800_108_Counter : public KDF { public: std::string name() const override { return "SP800-108-Counter(" + m_prf->name() + ")"; } @@ -56,7 +56,7 @@ class BOTAN_DLL SP800_108_Counter : public KDF /** * NIST SP 800-108 KDF in Feedback Mode (5.2) */ -class BOTAN_DLL SP800_108_Feedback : public KDF +class BOTAN_PUBLIC_API(2,0) SP800_108_Feedback : public KDF { public: std::string name() const override { return "SP800-108-Feedback(" + m_prf->name() + ")"; } @@ -93,7 +93,7 @@ class BOTAN_DLL SP800_108_Feedback : public KDF /** * NIST SP 800-108 KDF in Double Pipeline Mode (5.3) */ -class BOTAN_DLL SP800_108_Pipeline : public KDF +class BOTAN_PUBLIC_API(2,0) SP800_108_Pipeline : public KDF { public: std::string name() const override { return "SP800-108-Pipeline(" + m_prf->name() + ")"; } diff --git a/src/lib/kdf/sp800_56c/sp800_56c.h b/src/lib/kdf/sp800_56c/sp800_56c.h index aa3087974..a04593f8f 100644 --- a/src/lib/kdf/sp800_56c/sp800_56c.h +++ b/src/lib/kdf/sp800_56c/sp800_56c.h @@ -16,7 +16,7 @@ namespace Botan { /** * NIST SP 800-56C KDF */ -class BOTAN_DLL SP800_56C : public KDF +class BOTAN_PUBLIC_API(2,0) SP800_56C : public KDF { public: std::string name() const override { return "SP800-56C(" + m_prf->name() + ")"; } diff --git a/src/lib/mac/cbc_mac/cbc_mac.h b/src/lib/mac/cbc_mac/cbc_mac.h index 9ac870cb4..efecc0472 100644 --- a/src/lib/mac/cbc_mac/cbc_mac.h +++ b/src/lib/mac/cbc_mac/cbc_mac.h @@ -16,7 +16,7 @@ namespace Botan { /** * CBC-MAC */ -class BOTAN_DLL CBC_MAC final : public MessageAuthenticationCode +class BOTAN_PUBLIC_API(2,0) CBC_MAC final : public MessageAuthenticationCode { public: std::string name() const override; diff --git a/src/lib/mac/cmac/cmac.h b/src/lib/mac/cmac/cmac.h index 7127f82f2..f3265d7ae 100644 --- a/src/lib/mac/cmac/cmac.h +++ b/src/lib/mac/cmac/cmac.h @@ -16,7 +16,7 @@ namespace Botan { /** * CMAC, also known as OMAC1 */ -class BOTAN_DLL CMAC final : public MessageAuthenticationCode +class BOTAN_PUBLIC_API(2,0) CMAC final : public MessageAuthenticationCode { public: std::string name() const override; diff --git a/src/lib/mac/gmac/gmac.h b/src/lib/mac/gmac/gmac.h index 7735d3d32..fef347cbf 100644 --- a/src/lib/mac/gmac/gmac.h +++ b/src/lib/mac/gmac/gmac.h @@ -18,7 +18,7 @@ namespace Botan { /** * GMAC */ -class BOTAN_DLL GMAC : public MessageAuthenticationCode, +class BOTAN_PUBLIC_API(2,0) GMAC : public MessageAuthenticationCode, public GHASH { diff --git a/src/lib/mac/hmac/hmac.h b/src/lib/mac/hmac/hmac.h index 6627475d1..dac56a8d2 100644 --- a/src/lib/mac/hmac/hmac.h +++ b/src/lib/mac/hmac/hmac.h @@ -16,7 +16,7 @@ namespace Botan { /** * HMAC */ -class BOTAN_DLL HMAC final : public MessageAuthenticationCode +class BOTAN_PUBLIC_API(2,0) HMAC final : public MessageAuthenticationCode { public: void clear() override; diff --git a/src/lib/mac/mac.h b/src/lib/mac/mac.h index c4d880658..4c6ab602d 100644 --- a/src/lib/mac/mac.h +++ b/src/lib/mac/mac.h @@ -17,7 +17,7 @@ namespace Botan { /** * This class represents Message Authentication Code (MAC) objects. */ -class BOTAN_DLL MessageAuthenticationCode : public Buffered_Computation, +class BOTAN_PUBLIC_API(2,0) MessageAuthenticationCode : public Buffered_Computation, public SymmetricAlgorithm { public: diff --git a/src/lib/mac/poly1305/poly1305.h b/src/lib/mac/poly1305/poly1305.h index 25ee70761..55ec77241 100644 --- a/src/lib/mac/poly1305/poly1305.h +++ b/src/lib/mac/poly1305/poly1305.h @@ -17,7 +17,7 @@ namespace Botan { * DJB's Poly1305 * Important note: each key can only be used once */ -class BOTAN_DLL Poly1305 final : public MessageAuthenticationCode +class BOTAN_PUBLIC_API(2,0) Poly1305 final : public MessageAuthenticationCode { public: std::string name() const override { return "Poly1305"; } diff --git a/src/lib/mac/siphash/siphash.h b/src/lib/mac/siphash/siphash.h index ebae6a91d..3405ef4e8 100644 --- a/src/lib/mac/siphash/siphash.h +++ b/src/lib/mac/siphash/siphash.h @@ -12,7 +12,7 @@ namespace Botan { -class BOTAN_DLL SipHash final : public MessageAuthenticationCode +class BOTAN_PUBLIC_API(2,0) SipHash final : public MessageAuthenticationCode { public: SipHash(size_t c = 2, size_t d = 4) : m_C(c), m_D(d) {} diff --git a/src/lib/mac/x919_mac/x919_mac.h b/src/lib/mac/x919_mac/x919_mac.h index 8e300cb34..e922590ac 100644 --- a/src/lib/mac/x919_mac/x919_mac.h +++ b/src/lib/mac/x919_mac/x919_mac.h @@ -16,7 +16,7 @@ namespace Botan { /** * DES/3DES-based MAC from ANSI X9.19 */ -class BOTAN_DLL ANSI_X919_MAC final : public MessageAuthenticationCode +class BOTAN_PUBLIC_API(2,0) ANSI_X919_MAC final : public MessageAuthenticationCode { public: void clear() override; diff --git a/src/lib/math/bigint/bigint.h b/src/lib/math/bigint/bigint.h index 4bb0161fc..f1d2d277a 100644 --- a/src/lib/math/bigint/bigint.h +++ b/src/lib/math/bigint/bigint.h @@ -20,7 +20,7 @@ namespace Botan { /** * Arbitrary precision integer */ -class BOTAN_DLL BigInt +class BOTAN_PUBLIC_API(2,0) BigInt { public: /** @@ -36,7 +36,7 @@ class BOTAN_DLL BigInt /** * DivideByZero Exception */ - struct BOTAN_DLL DivideByZero : public Exception + struct BOTAN_PUBLIC_API(2,0) DivideByZero : public Exception { DivideByZero() : Exception("BigInt divide by zero") {} }; /** @@ -583,14 +583,14 @@ class BOTAN_DLL BigInt /* * Arithmetic Operators */ -BigInt BOTAN_DLL operator+(const BigInt& x, const BigInt& y); -BigInt BOTAN_DLL operator-(const BigInt& x, const BigInt& y); -BigInt BOTAN_DLL operator*(const BigInt& x, const BigInt& y); -BigInt BOTAN_DLL operator/(const BigInt& x, const BigInt& d); -BigInt BOTAN_DLL operator%(const BigInt& x, const BigInt& m); -word BOTAN_DLL operator%(const BigInt& x, word m); -BigInt BOTAN_DLL operator<<(const BigInt& x, size_t n); -BigInt BOTAN_DLL operator>>(const BigInt& x, size_t n); +BigInt BOTAN_PUBLIC_API(2,0) operator+(const BigInt& x, const BigInt& y); +BigInt BOTAN_PUBLIC_API(2,0) operator-(const BigInt& x, const BigInt& y); +BigInt BOTAN_PUBLIC_API(2,0) operator*(const BigInt& x, const BigInt& y); +BigInt BOTAN_PUBLIC_API(2,0) operator/(const BigInt& x, const BigInt& d); +BigInt BOTAN_PUBLIC_API(2,0) operator%(const BigInt& x, const BigInt& m); +word BOTAN_PUBLIC_API(2,0) operator%(const BigInt& x, word m); +BigInt BOTAN_PUBLIC_API(2,0) operator<<(const BigInt& x, size_t n); +BigInt BOTAN_PUBLIC_API(2,0) operator>>(const BigInt& x, size_t n); /* * Comparison Operators @@ -611,8 +611,8 @@ inline bool operator>(const BigInt& a, const BigInt& b) /* * I/O Operators */ -BOTAN_DLL std::ostream& operator<<(std::ostream&, const BigInt&); -BOTAN_DLL std::istream& operator>>(std::istream&, BigInt&); +BOTAN_PUBLIC_API(2,0) std::ostream& operator<<(std::ostream&, const BigInt&); +BOTAN_PUBLIC_API(2,0) std::istream& operator>>(std::istream&, BigInt&); } diff --git a/src/lib/math/bigint/divide.h b/src/lib/math/bigint/divide.h index a160e64dc..9616d4859 100644 --- a/src/lib/math/bigint/divide.h +++ b/src/lib/math/bigint/divide.h @@ -19,7 +19,7 @@ namespace Botan { * @param q will be set to x / y * @param r will be set to x % y */ -void BOTAN_DLL divide(const BigInt& x, +void BOTAN_PUBLIC_API(2,0) divide(const BigInt& x, const BigInt& y, BigInt& q, BigInt& r); diff --git a/src/lib/math/ec_gfp/curve_gfp.h b/src/lib/math/ec_gfp/curve_gfp.h index f1b4b144a..12c29dec7 100644 --- a/src/lib/math/ec_gfp/curve_gfp.h +++ b/src/lib/math/ec_gfp/curve_gfp.h @@ -50,7 +50,7 @@ class CurveGFp_Repr /** * This class represents an elliptic curve over GF(p) */ -class BOTAN_DLL CurveGFp +class BOTAN_PUBLIC_API(2,0) CurveGFp { public: diff --git a/src/lib/math/ec_gfp/curve_nistp.h b/src/lib/math/ec_gfp/curve_nistp.h index e7af69964..795ca00aa 100644 --- a/src/lib/math/ec_gfp/curve_nistp.h +++ b/src/lib/math/ec_gfp/curve_nistp.h @@ -20,24 +20,24 @@ namespace Botan { * ws is a workspace function which is used as a temporary, * and will be resized as needed. */ -BOTAN_DLL const BigInt& prime_p521(); -BOTAN_DLL void redc_p521(BigInt& x, secure_vector<word>& ws); +BOTAN_PUBLIC_API(2,0) const BigInt& prime_p521(); +BOTAN_PUBLIC_API(2,0) void redc_p521(BigInt& x, secure_vector<word>& ws); #if (BOTAN_MP_WORD_BITS == 32) || (BOTAN_MP_WORD_BITS == 64) #define BOTAN_HAS_NIST_PRIME_REDUCERS_W32 -BOTAN_DLL const BigInt& prime_p384(); -BOTAN_DLL void redc_p384(BigInt& x, secure_vector<word>& ws); +BOTAN_PUBLIC_API(2,0) const BigInt& prime_p384(); +BOTAN_PUBLIC_API(2,0) void redc_p384(BigInt& x, secure_vector<word>& ws); -BOTAN_DLL const BigInt& prime_p256(); -BOTAN_DLL void redc_p256(BigInt& x, secure_vector<word>& ws); +BOTAN_PUBLIC_API(2,0) const BigInt& prime_p256(); +BOTAN_PUBLIC_API(2,0) void redc_p256(BigInt& x, secure_vector<word>& ws); -BOTAN_DLL const BigInt& prime_p224(); -BOTAN_DLL void redc_p224(BigInt& x, secure_vector<word>& ws); +BOTAN_PUBLIC_API(2,0) const BigInt& prime_p224(); +BOTAN_PUBLIC_API(2,0) void redc_p224(BigInt& x, secure_vector<word>& ws); -BOTAN_DLL const BigInt& prime_p192(); -BOTAN_DLL void redc_p192(BigInt& x, secure_vector<word>& ws); +BOTAN_PUBLIC_API(2,0) const BigInt& prime_p192(); +BOTAN_PUBLIC_API(2,0) void redc_p192(BigInt& x, secure_vector<word>& ws); #endif diff --git a/src/lib/math/ec_gfp/point_gfp.h b/src/lib/math/ec_gfp/point_gfp.h index 46ee5449a..bd66ca682 100644 --- a/src/lib/math/ec_gfp/point_gfp.h +++ b/src/lib/math/ec_gfp/point_gfp.h @@ -19,7 +19,7 @@ namespace Botan { * Exception thrown if you try to convert a zero point to an affine * coordinate */ -struct BOTAN_DLL Illegal_Transformation : public Exception +struct BOTAN_PUBLIC_API(2,0) Illegal_Transformation : public Exception { explicit Illegal_Transformation(const std::string& err = "Requested transformation is not possible") : @@ -29,7 +29,7 @@ struct BOTAN_DLL Illegal_Transformation : public Exception /** * Exception thrown if some form of illegal point is decoded */ -struct BOTAN_DLL Illegal_Point : public Exception +struct BOTAN_PUBLIC_API(2,0) Illegal_Point : public Exception { explicit Illegal_Point(const std::string& err = "Malformed ECP point detected") : Exception(err) {} @@ -38,7 +38,7 @@ struct BOTAN_DLL Illegal_Point : public Exception /** * This class represents one point on a curve of GF(p) */ -class BOTAN_DLL PointGFp +class BOTAN_PUBLIC_API(2,0) PointGFp { public: enum Compression_Type { @@ -127,7 +127,7 @@ class BOTAN_DLL PointGFp * @param point the point value * @return scalar*point on the curve */ - friend BOTAN_DLL PointGFp operator*(const BigInt& scalar, const PointGFp& point); + friend BOTAN_PUBLIC_API(2,0) PointGFp operator*(const BigInt& scalar, const PointGFp& point); /** * Multiexponentiation @@ -137,7 +137,7 @@ class BOTAN_DLL PointGFp * @param z2 a scalar * @result (p1 * z1 + p2 * z2) */ - friend BOTAN_DLL PointGFp multi_exponentiate( + friend BOTAN_PUBLIC_API(2,0) PointGFp multi_exponentiate( const PointGFp& p1, const BigInt& z1, const PointGFp& p2, const BigInt& z2); @@ -274,9 +274,9 @@ inline PointGFp operator*(const PointGFp& point, const BigInt& scalar) } // encoding and decoding -secure_vector<uint8_t> BOTAN_DLL EC2OSP(const PointGFp& point, uint8_t format); +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) EC2OSP(const PointGFp& point, uint8_t format); -PointGFp BOTAN_DLL OS2ECP(const uint8_t data[], size_t data_len, +PointGFp BOTAN_PUBLIC_API(2,0) OS2ECP(const uint8_t data[], size_t data_len, const CurveGFp& curve); template<typename Alloc> @@ -286,7 +286,7 @@ PointGFp OS2ECP(const std::vector<uint8_t, Alloc>& data, const CurveGFp& curve) /** */ -class BOTAN_DLL Blinded_Point_Multiply +class BOTAN_PUBLIC_API(2,0) Blinded_Point_Multiply { public: Blinded_Point_Multiply(const PointGFp& base, const BigInt& order, size_t h = 0); diff --git a/src/lib/math/mp/mp_core.h b/src/lib/math/mp/mp_core.h index a22d3b6ad..f76096d23 100644 --- a/src/lib/math/mp/mp_core.h +++ b/src/lib/math/mp/mp_core.h @@ -25,21 +25,21 @@ const size_t MP_WORD_BITS = BOTAN_MP_WORD_BITS; * If cond > 0, swaps x[0:size] with y[0:size] * Runs in constant time */ -BOTAN_DLL +BOTAN_TEST_API void bigint_cnd_swap(word cnd, word x[], word y[], size_t size); /* * If cond > 0 adds x[0:size] to y[0:size] and returns carry * Runs in constant time */ -BOTAN_DLL +BOTAN_TEST_API word bigint_cnd_add(word cnd, word x[], const word y[], size_t size); /* * If cond > 0 subs x[0:size] to y[0:size] and returns borrow * Runs in constant time */ -BOTAN_DLL +BOTAN_TEST_API word bigint_cnd_sub(word cnd, word x[], const word y[], size_t size); /* @@ -47,7 +47,7 @@ word bigint_cnd_sub(word cnd, word x[], const word y[], size_t size); * If cond > 0 sets x to ~x + 1 * Runs in constant time */ -BOTAN_DLL +BOTAN_TEST_API void bigint_cnd_abs(word cnd, word x[], size_t size); /** diff --git a/src/lib/math/numbertheory/numthry.h b/src/lib/math/numbertheory/numthry.h index e788caec1..25110e309 100644 --- a/src/lib/math/numbertheory/numthry.h +++ b/src/lib/math/numbertheory/numthry.h @@ -21,7 +21,7 @@ namespace Botan { * @param c an integer * @return (a*b)+c */ -BigInt BOTAN_DLL mul_add(const BigInt& a, +BigInt BOTAN_PUBLIC_API(2,0) mul_add(const BigInt& a, const BigInt& b, const BigInt& c); @@ -32,7 +32,7 @@ BigInt BOTAN_DLL mul_add(const BigInt& a, * @param c an integer * @return (a-b)*c */ -BigInt BOTAN_DLL sub_mul(const BigInt& a, +BigInt BOTAN_PUBLIC_API(2,0) sub_mul(const BigInt& a, const BigInt& b, const BigInt& c); @@ -43,7 +43,7 @@ BigInt BOTAN_DLL sub_mul(const BigInt& a, * @param c an integer * @return (a*b)-c */ -BigInt BOTAN_DLL mul_sub(const BigInt& a, +BigInt BOTAN_PUBLIC_API(2,0) mul_sub(const BigInt& a, const BigInt& b, const BigInt& c); @@ -60,7 +60,7 @@ inline BigInt abs(const BigInt& n) { return n.abs(); } * @param y a positive integer * @return gcd(x,y) */ -BigInt BOTAN_DLL gcd(const BigInt& x, const BigInt& y); +BigInt BOTAN_PUBLIC_API(2,0) gcd(const BigInt& x, const BigInt& y); /** * Least common multiple @@ -68,13 +68,13 @@ BigInt BOTAN_DLL gcd(const BigInt& x, const BigInt& y); * @param y a positive integer * @return z, smallest integer such that z % x == 0 and z % y == 0 */ -BigInt BOTAN_DLL lcm(const BigInt& x, const BigInt& y); +BigInt BOTAN_PUBLIC_API(2,0) lcm(const BigInt& x, const BigInt& y); /** * @param x an integer * @return (x*x) */ -BigInt BOTAN_DLL square(const BigInt& x); +BigInt BOTAN_PUBLIC_API(2,0) square(const BigInt& x); /** * Modular inversion @@ -83,28 +83,28 @@ BigInt BOTAN_DLL square(const BigInt& x); * @return y st (x*y) % modulus == 1 or 0 if no such value * Not const time */ -BigInt BOTAN_DLL inverse_mod(const BigInt& x, +BigInt BOTAN_PUBLIC_API(2,0) inverse_mod(const BigInt& x, const BigInt& modulus); /** * Const time modular inversion * Requires the modulus be odd */ -BigInt BOTAN_DLL ct_inverse_mod_odd_modulus(const BigInt& n, const BigInt& mod); +BigInt BOTAN_PUBLIC_API(2,0) ct_inverse_mod_odd_modulus(const BigInt& n, const BigInt& mod); /** * Return a^-1 * 2^k mod b * Returns k, between n and 2n * Not const time */ -size_t BOTAN_DLL almost_montgomery_inverse(BigInt& result, +size_t BOTAN_PUBLIC_API(2,0) almost_montgomery_inverse(BigInt& result, const BigInt& a, const BigInt& b); /** * Call almost_montgomery_inverse and correct the result to a^-1 mod b */ -BigInt BOTAN_DLL normalized_montgomery_inverse(const BigInt& a, const BigInt& b); +BigInt BOTAN_PUBLIC_API(2,0) normalized_montgomery_inverse(const BigInt& a, const BigInt& b); /** @@ -116,7 +116,7 @@ BigInt BOTAN_DLL normalized_montgomery_inverse(const BigInt& a, const BigInt& b) * @param n is an odd integer > 1 * @return (n / m) */ -int32_t BOTAN_DLL jacobi(const BigInt& a, +int32_t BOTAN_PUBLIC_API(2,0) jacobi(const BigInt& a, const BigInt& n); /** @@ -126,7 +126,7 @@ int32_t BOTAN_DLL jacobi(const BigInt& a, * @param m a positive modulus * @return (b^x) % m */ -BigInt BOTAN_DLL power_mod(const BigInt& b, +BigInt BOTAN_PUBLIC_API(2,0) power_mod(const BigInt& b, const BigInt& x, const BigInt& m); @@ -138,14 +138,14 @@ BigInt BOTAN_DLL power_mod(const BigInt& b, * @param p the prime * @return y such that (y*y)%p == x, or -1 if no such integer */ -BigInt BOTAN_DLL ressol(const BigInt& x, const BigInt& p); +BigInt BOTAN_PUBLIC_API(2,0) ressol(const BigInt& x, const BigInt& p); /* * Compute -input^-1 mod 2^MP_WORD_BITS. Returns zero if input * is even. If input is odd, input and 2^n are relatively prime * and an inverse exists. */ -word BOTAN_DLL monty_inverse(word input); +word BOTAN_PUBLIC_API(2,0) monty_inverse(word input); /** * @param x a positive integer @@ -153,7 +153,7 @@ word BOTAN_DLL monty_inverse(word input); * value of n such that 2^n divides x evenly. Returns zero if * n is less than or equal to zero. */ -size_t BOTAN_DLL low_zero_bits(const BigInt& x); +size_t BOTAN_PUBLIC_API(2,0) low_zero_bits(const BigInt& x); /** * Check for primality @@ -163,7 +163,7 @@ size_t BOTAN_DLL low_zero_bits(const BigInt& x); * @param is_random true if n was randomly chosen by us * @return true if all primality tests passed, otherwise false */ -bool BOTAN_DLL is_prime(const BigInt& n, +bool BOTAN_PUBLIC_API(2,0) is_prime(const BigInt& n, RandomNumberGenerator& rng, size_t prob = 56, bool is_random = false); @@ -188,7 +188,7 @@ inline bool verify_prime(const BigInt& n, RandomNumberGenerator& rng) * @param equiv_mod the modulus equiv should be checked against * @return random prime with the specified criteria */ -BigInt BOTAN_DLL random_prime(RandomNumberGenerator& rng, +BigInt BOTAN_PUBLIC_API(2,0) random_prime(RandomNumberGenerator& rng, size_t bits, const BigInt& coprime = 1, size_t equiv = 1, size_t equiv_mod = 2); @@ -198,7 +198,7 @@ BigInt BOTAN_DLL random_prime(RandomNumberGenerator& rng, * @param bits is how long the resulting prime should be * @return prime randomly chosen from safe primes of length bits */ -BigInt BOTAN_DLL random_safe_prime(RandomNumberGenerator& rng, +BigInt BOTAN_PUBLIC_API(2,0) random_safe_prime(RandomNumberGenerator& rng, size_t bits); /** @@ -210,7 +210,7 @@ BigInt BOTAN_DLL random_safe_prime(RandomNumberGenerator& rng, * @param qbits how long q will be in bits * @return random seed used to generate this parameter set */ -std::vector<uint8_t> BOTAN_DLL +std::vector<uint8_t> BOTAN_PUBLIC_API(2,0) generate_dsa_primes(RandomNumberGenerator& rng, BigInt& p_out, BigInt& q_out, size_t pbits, size_t qbits); @@ -227,7 +227,7 @@ generate_dsa_primes(RandomNumberGenerator& rng, * @return true if seed generated a valid DSA parameter set, otherwise false. p_out and q_out are only valid if true was returned. */ -bool BOTAN_DLL +bool BOTAN_PUBLIC_API(2,0) generate_dsa_primes(RandomNumberGenerator& rng, BigInt& p_out, BigInt& q_out, size_t pbits, size_t qbits, @@ -242,7 +242,7 @@ const size_t PRIME_TABLE_SIZE = 6541; /** * A const array of all primes less than 65535 */ -extern const uint16_t BOTAN_DLL PRIMES[]; +extern const uint16_t BOTAN_PUBLIC_API(2,0) PRIMES[]; } diff --git a/src/lib/math/numbertheory/pow_mod.h b/src/lib/math/numbertheory/pow_mod.h index 50695c2bc..64439acbd 100644 --- a/src/lib/math/numbertheory/pow_mod.h +++ b/src/lib/math/numbertheory/pow_mod.h @@ -15,7 +15,7 @@ namespace Botan { /** * Modular Exponentiator Interface */ -class BOTAN_DLL Modular_Exponentiator +class BOTAN_PUBLIC_API(2,0) Modular_Exponentiator { public: virtual void set_base(const BigInt&) = 0; @@ -32,7 +32,7 @@ class BOTAN_DLL Modular_Exponentiator /** * Modular Exponentiator Proxy */ -class BOTAN_DLL Power_Mod +class BOTAN_PUBLIC_API(2,0) Power_Mod { public: @@ -101,7 +101,7 @@ class BOTAN_DLL Power_Mod /** * Fixed Exponent Modular Exponentiator Proxy */ -class BOTAN_DLL Fixed_Exponent_Power_Mod : public Power_Mod +class BOTAN_PUBLIC_API(2,0) Fixed_Exponent_Power_Mod : public Power_Mod { public: BigInt operator()(const BigInt& b) const @@ -117,7 +117,7 @@ class BOTAN_DLL Fixed_Exponent_Power_Mod : public Power_Mod /** * Fixed Base Modular Exponentiator Proxy */ -class BOTAN_DLL Fixed_Base_Power_Mod : public Power_Mod +class BOTAN_PUBLIC_API(2,0) Fixed_Base_Power_Mod : public Power_Mod { public: BigInt operator()(const BigInt& e) const diff --git a/src/lib/math/numbertheory/reducer.h b/src/lib/math/numbertheory/reducer.h index 4de1e3d04..e2782a3f7 100644 --- a/src/lib/math/numbertheory/reducer.h +++ b/src/lib/math/numbertheory/reducer.h @@ -15,7 +15,7 @@ namespace Botan { /** * Modular Reducer (using Barrett's technique) */ -class BOTAN_DLL Modular_Reducer +class BOTAN_PUBLIC_API(2,0) Modular_Reducer { public: const BigInt& get_modulus() const { return m_modulus; } diff --git a/src/lib/misc/aont/package.h b/src/lib/misc/aont/package.h index 8b2ed1b1f..f48a757bf 100644 --- a/src/lib/misc/aont/package.h +++ b/src/lib/misc/aont/package.h @@ -23,10 +23,11 @@ namespace Botan { * input_len + cipher->BLOCK_SIZE bytes long) */ BOTAN_DEPRECATED("Possibly broken, avoid") -void BOTAN_DLL aont_package(RandomNumberGenerator& rng, - BlockCipher* cipher, - const uint8_t input[], size_t input_len, - uint8_t output[]); +void BOTAN_PUBLIC_API(2,0) +aont_package(RandomNumberGenerator& rng, + BlockCipher* cipher, + const uint8_t input[], size_t input_len, + uint8_t output[]); /** * Rivest's Package Tranform (Inversion) @@ -37,9 +38,10 @@ void BOTAN_DLL aont_package(RandomNumberGenerator& rng, * input_len - cipher->BLOCK_SIZE bytes long) */ BOTAN_DEPRECATED("Possibly broken, avoid") -void BOTAN_DLL aont_unpackage(BlockCipher* cipher, - const uint8_t input[], size_t input_len, - uint8_t output[]); +void BOTAN_PUBLIC_API(2,0) +aont_unpackage(BlockCipher* cipher, + const uint8_t input[], size_t input_len, + uint8_t output[]); } diff --git a/src/lib/misc/cryptobox/cryptobox.h b/src/lib/misc/cryptobox/cryptobox.h index 8a524c93c..da58cbf21 100644 --- a/src/lib/misc/cryptobox/cryptobox.h +++ b/src/lib/misc/cryptobox/cryptobox.h @@ -26,7 +26,7 @@ namespace CryptoBox { * @param passphrase the passphrase used to encrypt the message * @param rng a ref to a random number generator, such as AutoSeeded_RNG */ -BOTAN_DLL std::string encrypt(const uint8_t input[], size_t input_len, +BOTAN_PUBLIC_API(2,0) std::string encrypt(const uint8_t input[], size_t input_len, const std::string& passphrase, RandomNumberGenerator& rng); @@ -37,7 +37,7 @@ BOTAN_DLL std::string encrypt(const uint8_t input[], size_t input_len, * @param input_len the length of input in bytes * @param passphrase the passphrase used to encrypt the message */ -BOTAN_DLL std::string decrypt(const uint8_t input[], size_t input_len, +BOTAN_PUBLIC_API(2,0) std::string decrypt(const uint8_t input[], size_t input_len, const std::string& passphrase); /** @@ -45,7 +45,7 @@ BOTAN_DLL std::string decrypt(const uint8_t input[], size_t input_len, * @param input the input data * @param passphrase the passphrase used to encrypt the message */ -BOTAN_DLL std::string decrypt(const std::string& input, +BOTAN_PUBLIC_API(2,0) std::string decrypt(const std::string& input, const std::string& passphrase); } diff --git a/src/lib/misc/fpe_fe1/fpe_fe1.h b/src/lib/misc/fpe_fe1/fpe_fe1.h index fe86f0718..8d8ff6ae5 100644 --- a/src/lib/misc/fpe_fe1/fpe_fe1.h +++ b/src/lib/misc/fpe_fe1/fpe_fe1.h @@ -26,7 +26,7 @@ namespace FPE { * @param key a random key * @param tweak will modify the ciphertext (think of as an IV) */ -BigInt BOTAN_DLL fe1_encrypt(const BigInt& n, const BigInt& X, +BigInt BOTAN_PUBLIC_API(2,0) fe1_encrypt(const BigInt& n, const BigInt& X, const SymmetricKey& key, const std::vector<uint8_t>& tweak); @@ -37,7 +37,7 @@ BigInt BOTAN_DLL fe1_encrypt(const BigInt& n, const BigInt& X, * @param key is the key used for encryption * @param tweak the same tweak used for encryption */ -BigInt BOTAN_DLL fe1_decrypt(const BigInt& n, const BigInt& X, +BigInt BOTAN_PUBLIC_API(2,0) fe1_decrypt(const BigInt& n, const BigInt& X, const SymmetricKey& key, const std::vector<uint8_t>& tweak); diff --git a/src/lib/misc/rfc3394/rfc3394.h b/src/lib/misc/rfc3394/rfc3394.h index 5690c4713..4b212810e 100644 --- a/src/lib/misc/rfc3394/rfc3394.h +++ b/src/lib/misc/rfc3394/rfc3394.h @@ -20,7 +20,7 @@ namespace Botan { * @param kek the key encryption key * @return key encrypted under kek */ -secure_vector<uint8_t> BOTAN_DLL rfc3394_keywrap(const secure_vector<uint8_t>& key, +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) rfc3394_keywrap(const secure_vector<uint8_t>& key, const SymmetricKey& kek); /** @@ -31,7 +31,7 @@ secure_vector<uint8_t> BOTAN_DLL rfc3394_keywrap(const secure_vector<uint8_t>& k * @param kek the key encryption key * @return key decrypted under kek */ -secure_vector<uint8_t> BOTAN_DLL rfc3394_keyunwrap(const secure_vector<uint8_t>& key, +secure_vector<uint8_t> BOTAN_PUBLIC_API(2,0) rfc3394_keyunwrap(const secure_vector<uint8_t>& key, const SymmetricKey& kek); } diff --git a/src/lib/misc/srp6/srp6.h b/src/lib/misc/srp6/srp6.h index af9f427d0..24c2693aa 100644 --- a/src/lib/misc/srp6/srp6.h +++ b/src/lib/misc/srp6/srp6.h @@ -29,7 +29,7 @@ namespace Botan { * @return (A,K) the client public key and the shared secret key */ std::pair<BigInt,SymmetricKey> -BOTAN_DLL srp6_client_agree(const std::string& username, +BOTAN_PUBLIC_API(2,0) srp6_client_agree(const std::string& username, const std::string& password, const std::string& group_id, const std::string& hash_id, @@ -45,7 +45,7 @@ BOTAN_DLL srp6_client_agree(const std::string& username, * @param group_id specifies the shared SRP group * @param hash_id specifies a secure hash function */ -BigInt BOTAN_DLL generate_srp6_verifier(const std::string& identifier, +BigInt BOTAN_PUBLIC_API(2,0) generate_srp6_verifier(const std::string& identifier, const std::string& password, const std::vector<uint8_t>& salt, const std::string& group_id, @@ -58,12 +58,12 @@ BigInt BOTAN_DLL generate_srp6_verifier(const std::string& identifier, * @param g the group generator * @return group identifier */ -std::string BOTAN_DLL srp6_group_identifier(const BigInt& N, const BigInt& g); +std::string BOTAN_PUBLIC_API(2,0) srp6_group_identifier(const BigInt& N, const BigInt& g); /** * Represents a SRP-6a server session */ -class BOTAN_DLL SRP6_Server_Session +class BOTAN_PUBLIC_API(2,0) SRP6_Server_Session { public: /** diff --git a/src/lib/misc/tss/tss.h b/src/lib/misc/tss/tss.h index ac96a6e0c..354b43514 100644 --- a/src/lib/misc/tss/tss.h +++ b/src/lib/misc/tss/tss.h @@ -18,7 +18,7 @@ namespace Botan { /** * A split secret, using the format from draft-mcgrew-tss-03 */ -class BOTAN_DLL RTSS_Share +class BOTAN_PUBLIC_API(2,0) RTSS_Share { public: /** diff --git a/src/lib/modes/aead/aead.h b/src/lib/modes/aead/aead.h index a0b11541b..95a595542 100644 --- a/src/lib/modes/aead/aead.h +++ b/src/lib/modes/aead/aead.h @@ -19,7 +19,7 @@ namespace Botan { * which is not included in the ciphertext (for instance a sequence * number). */ -class BOTAN_DLL AEAD_Mode : public Cipher_Mode +class BOTAN_PUBLIC_API(2,0) AEAD_Mode : public Cipher_Mode { public: bool authenticated() const override { return true; } @@ -82,7 +82,7 @@ class BOTAN_DLL AEAD_Mode : public Cipher_Mode * @param name AEAD name * @param direction ENCRYPTION or DECRYPTION */ -BOTAN_DLL AEAD_Mode* get_aead(const std::string& name, Cipher_Dir direction); +BOTAN_PUBLIC_API(2,0) AEAD_Mode* get_aead(const std::string& name, Cipher_Dir direction); } diff --git a/src/lib/modes/aead/ccm/ccm.h b/src/lib/modes/aead/ccm/ccm.h index 93dd0d7e1..636df6fa7 100644 --- a/src/lib/modes/aead/ccm/ccm.h +++ b/src/lib/modes/aead/ccm/ccm.h @@ -20,7 +20,7 @@ namespace Botan { * Base class for CCM encryption and decryption * @see RFC 3610 */ -class BOTAN_DLL CCM_Mode : public AEAD_Mode +class BOTAN_PUBLIC_API(2,0) CCM_Mode : public AEAD_Mode { public: size_t process(uint8_t buf[], size_t sz) override; @@ -75,7 +75,7 @@ class BOTAN_DLL CCM_Mode : public AEAD_Mode /** * CCM Encryption */ -class BOTAN_DLL CCM_Encryption final : public CCM_Mode +class BOTAN_PUBLIC_API(2,0) CCM_Encryption final : public CCM_Mode { public: /** @@ -99,7 +99,7 @@ class BOTAN_DLL CCM_Encryption final : public CCM_Mode /** * CCM Decryption */ -class BOTAN_DLL CCM_Decryption final : public CCM_Mode +class BOTAN_PUBLIC_API(2,0) CCM_Decryption final : public CCM_Mode { public: /** diff --git a/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.h b/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.h index 4245e5e01..bbe21fdba 100644 --- a/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.h +++ b/src/lib/modes/aead/chacha20poly1305/chacha20poly1305.h @@ -21,7 +21,7 @@ namespace Botan { * If a nonce of 64 bits is used the older version described in * draft-agl-tls-chacha20poly1305-04 is used instead. */ -class BOTAN_DLL ChaCha20Poly1305_Mode : public AEAD_Mode +class BOTAN_PUBLIC_API(2,0) ChaCha20Poly1305_Mode : public AEAD_Mode { public: void set_associated_data(const uint8_t ad[], size_t ad_len) override; @@ -62,7 +62,7 @@ class BOTAN_DLL ChaCha20Poly1305_Mode : public AEAD_Mode /** * ChaCha20Poly1305 Encryption */ -class BOTAN_DLL ChaCha20Poly1305_Encryption final : public ChaCha20Poly1305_Mode +class BOTAN_PUBLIC_API(2,0) ChaCha20Poly1305_Encryption final : public ChaCha20Poly1305_Mode { public: size_t output_length(size_t input_length) const override @@ -78,7 +78,7 @@ class BOTAN_DLL ChaCha20Poly1305_Encryption final : public ChaCha20Poly1305_Mode /** * ChaCha20Poly1305 Decryption */ -class BOTAN_DLL ChaCha20Poly1305_Decryption final : public ChaCha20Poly1305_Mode +class BOTAN_PUBLIC_API(2,0) ChaCha20Poly1305_Decryption final : public ChaCha20Poly1305_Mode { public: size_t output_length(size_t input_length) const override diff --git a/src/lib/modes/aead/eax/eax.h b/src/lib/modes/aead/eax/eax.h index fc991ab1f..67679dcc2 100644 --- a/src/lib/modes/aead/eax/eax.h +++ b/src/lib/modes/aead/eax/eax.h @@ -19,7 +19,7 @@ namespace Botan { /** * EAX base class */ -class BOTAN_DLL EAX_Mode : public AEAD_Mode +class BOTAN_PUBLIC_API(2,0) EAX_Mode : public AEAD_Mode { public: void set_associated_data(const uint8_t ad[], size_t ad_len) override; @@ -66,7 +66,7 @@ class BOTAN_DLL EAX_Mode : public AEAD_Mode /** * EAX Encryption */ -class BOTAN_DLL EAX_Encryption final : public EAX_Mode +class BOTAN_PUBLIC_API(2,0) EAX_Encryption final : public EAX_Mode { public: /** @@ -89,7 +89,7 @@ class BOTAN_DLL EAX_Encryption final : public EAX_Mode /** * EAX Decryption */ -class BOTAN_DLL EAX_Decryption final : public EAX_Mode +class BOTAN_PUBLIC_API(2,0) EAX_Decryption final : public EAX_Mode { public: /** diff --git a/src/lib/modes/aead/gcm/gcm.h b/src/lib/modes/aead/gcm/gcm.h index e2e3a2c9d..0326533ff 100644 --- a/src/lib/modes/aead/gcm/gcm.h +++ b/src/lib/modes/aead/gcm/gcm.h @@ -20,7 +20,7 @@ class GHASH; /** * GCM Mode */ -class BOTAN_DLL GCM_Mode : public AEAD_Mode +class BOTAN_PUBLIC_API(2,0) GCM_Mode : public AEAD_Mode { public: void set_associated_data(const uint8_t ad[], size_t ad_len) override; @@ -60,7 +60,7 @@ class BOTAN_DLL GCM_Mode : public AEAD_Mode /** * GCM Encryption */ -class BOTAN_DLL GCM_Encryption final : public GCM_Mode +class BOTAN_PUBLIC_API(2,0) GCM_Encryption final : public GCM_Mode { public: /** @@ -83,7 +83,7 @@ class BOTAN_DLL GCM_Encryption final : public GCM_Mode /** * GCM Decryption */ -class BOTAN_DLL GCM_Decryption final : public GCM_Mode +class BOTAN_PUBLIC_API(2,0) GCM_Decryption final : public GCM_Mode { public: /** @@ -110,7 +110,7 @@ class BOTAN_DLL GCM_Decryption final : public GCM_Mode * GCM's GHASH * Maybe a Transform? */ -class BOTAN_DLL GHASH : public SymmetricAlgorithm +class BOTAN_PUBLIC_API(2,0) GHASH : public SymmetricAlgorithm { public: void set_associated_data(const uint8_t ad[], size_t ad_len); diff --git a/src/lib/modes/aead/ocb/ocb.h b/src/lib/modes/aead/ocb/ocb.h index 69f5fde60..4c06527ba 100644 --- a/src/lib/modes/aead/ocb/ocb.h +++ b/src/lib/modes/aead/ocb/ocb.h @@ -28,7 +28,7 @@ class L_computer; * @see Free Licenses http://www.cs.ucdavis.edu/~rogaway/ocb/license.htm * @see OCB home page http://www.cs.ucdavis.edu/~rogaway/ocb */ -class BOTAN_DLL OCB_Mode : public AEAD_Mode +class BOTAN_PUBLIC_API(2,0) OCB_Mode : public AEAD_Mode { public: void set_associated_data(const uint8_t ad[], size_t ad_len) override; @@ -76,7 +76,7 @@ class BOTAN_DLL OCB_Mode : public AEAD_Mode secure_vector<uint8_t> m_stretch; }; -class BOTAN_DLL OCB_Encryption final : public OCB_Mode +class BOTAN_PUBLIC_API(2,0) OCB_Encryption final : public OCB_Mode { public: /** @@ -98,7 +98,7 @@ class BOTAN_DLL OCB_Encryption final : public OCB_Mode void encrypt(uint8_t input[], size_t blocks); }; -class BOTAN_DLL OCB_Decryption final : public OCB_Mode +class BOTAN_PUBLIC_API(2,0) OCB_Decryption final : public OCB_Mode { public: /** diff --git a/src/lib/modes/aead/siv/siv.h b/src/lib/modes/aead/siv/siv.h index ea6ad8234..3266c6644 100644 --- a/src/lib/modes/aead/siv/siv.h +++ b/src/lib/modes/aead/siv/siv.h @@ -19,7 +19,7 @@ namespace Botan { /** * Base class for SIV encryption and decryption (@see RFC 5297) */ -class BOTAN_DLL SIV_Mode : public AEAD_Mode +class BOTAN_PUBLIC_API(2,0) SIV_Mode : public AEAD_Mode { public: size_t process(uint8_t buf[], size_t size) override; @@ -76,7 +76,7 @@ class BOTAN_DLL SIV_Mode : public AEAD_Mode /** * SIV Encryption */ -class BOTAN_DLL SIV_Encryption final : public SIV_Mode +class BOTAN_PUBLIC_API(2,0) SIV_Encryption final : public SIV_Mode { public: /** @@ -95,7 +95,7 @@ class BOTAN_DLL SIV_Encryption final : public SIV_Mode /** * SIV Decryption */ -class BOTAN_DLL SIV_Decryption final : public SIV_Mode +class BOTAN_PUBLIC_API(2,0) SIV_Decryption final : public SIV_Mode { public: /** diff --git a/src/lib/modes/cbc/cbc.h b/src/lib/modes/cbc/cbc.h index 54b574981..f088b817b 100644 --- a/src/lib/modes/cbc/cbc.h +++ b/src/lib/modes/cbc/cbc.h @@ -18,7 +18,7 @@ namespace Botan { /** * CBC Mode */ -class BOTAN_DLL CBC_Mode : public Cipher_Mode +class BOTAN_PUBLIC_API(2,0) CBC_Mode : public Cipher_Mode { public: std::string name() const override; @@ -65,7 +65,7 @@ class BOTAN_DLL CBC_Mode : public Cipher_Mode /** * CBC Encryption */ -class BOTAN_DLL CBC_Encryption : public CBC_Mode +class BOTAN_PUBLIC_API(2,0) CBC_Encryption : public CBC_Mode { public: /** @@ -87,7 +87,7 @@ class BOTAN_DLL CBC_Encryption : public CBC_Mode /** * CBC Encryption with ciphertext stealing (CBC-CS3 variant) */ -class BOTAN_DLL CTS_Encryption final : public CBC_Encryption +class BOTAN_PUBLIC_API(2,0) CTS_Encryption final : public CBC_Encryption { public: /** @@ -107,7 +107,7 @@ class BOTAN_DLL CTS_Encryption final : public CBC_Encryption /** * CBC Decryption */ -class BOTAN_DLL CBC_Decryption : public CBC_Mode +class BOTAN_PUBLIC_API(2,0) CBC_Decryption : public CBC_Mode { public: /** @@ -134,7 +134,7 @@ class BOTAN_DLL CBC_Decryption : public CBC_Mode /** * CBC Decryption with ciphertext stealing (CBC-CS3 variant) */ -class BOTAN_DLL CTS_Decryption final : public CBC_Decryption +class BOTAN_PUBLIC_API(2,0) CTS_Decryption final : public CBC_Decryption { public: /** diff --git a/src/lib/modes/cfb/cfb.h b/src/lib/modes/cfb/cfb.h index ce85d2c2e..14e4e3d0e 100644 --- a/src/lib/modes/cfb/cfb.h +++ b/src/lib/modes/cfb/cfb.h @@ -17,7 +17,7 @@ namespace Botan { /** * CFB Mode */ -class BOTAN_DLL CFB_Mode : public Cipher_Mode +class BOTAN_PUBLIC_API(2,0) CFB_Mode : public Cipher_Mode { public: std::string name() const override; @@ -58,7 +58,7 @@ class BOTAN_DLL CFB_Mode : public Cipher_Mode /** * CFB Encryption */ -class BOTAN_DLL CFB_Encryption final : public CFB_Mode +class BOTAN_PUBLIC_API(2,0) CFB_Encryption final : public CFB_Mode { public: /** @@ -78,7 +78,7 @@ class BOTAN_DLL CFB_Encryption final : public CFB_Mode /** * CFB Decryption */ -class BOTAN_DLL CFB_Decryption final : public CFB_Mode +class BOTAN_PUBLIC_API(2,0) CFB_Decryption final : public CFB_Mode { public: /** diff --git a/src/lib/modes/mode_pad/mode_pad.h b/src/lib/modes/mode_pad/mode_pad.h index c221882cc..7b54db985 100644 --- a/src/lib/modes/mode_pad/mode_pad.h +++ b/src/lib/modes/mode_pad/mode_pad.h @@ -23,7 +23,7 @@ namespace Botan { * a padding mode for CBC, which happens to consume the last * two block (and requires use of the block cipher). */ -class BOTAN_DLL BlockCipherModePaddingMethod +class BOTAN_PUBLIC_API(2,0) BlockCipherModePaddingMethod { public: /** @@ -65,7 +65,7 @@ class BOTAN_DLL BlockCipherModePaddingMethod /** * PKCS#7 Padding */ -class BOTAN_DLL PKCS7_Padding final : public BlockCipherModePaddingMethod +class BOTAN_PUBLIC_API(2,0) PKCS7_Padding final : public BlockCipherModePaddingMethod { public: void add_padding(secure_vector<uint8_t>& buffer, @@ -82,7 +82,7 @@ class BOTAN_DLL PKCS7_Padding final : public BlockCipherModePaddingMethod /** * ANSI X9.23 Padding */ -class BOTAN_DLL ANSI_X923_Padding final : public BlockCipherModePaddingMethod +class BOTAN_PUBLIC_API(2,0) ANSI_X923_Padding final : public BlockCipherModePaddingMethod { public: void add_padding(secure_vector<uint8_t>& buffer, @@ -99,7 +99,7 @@ class BOTAN_DLL ANSI_X923_Padding final : public BlockCipherModePaddingMethod /** * One And Zeros Padding (ISO/IEC 9797-1, padding method 2) */ -class BOTAN_DLL OneAndZeros_Padding final : public BlockCipherModePaddingMethod +class BOTAN_PUBLIC_API(2,0) OneAndZeros_Padding final : public BlockCipherModePaddingMethod { public: void add_padding(secure_vector<uint8_t>& buffer, @@ -116,7 +116,7 @@ class BOTAN_DLL OneAndZeros_Padding final : public BlockCipherModePaddingMethod /** * ESP Padding (RFC 4304) */ -class BOTAN_DLL ESP_Padding final : public BlockCipherModePaddingMethod +class BOTAN_PUBLIC_API(2,0) ESP_Padding final : public BlockCipherModePaddingMethod { public: void add_padding(secure_vector<uint8_t>& buffer, @@ -133,7 +133,7 @@ class BOTAN_DLL ESP_Padding final : public BlockCipherModePaddingMethod /** * Null Padding */ -class BOTAN_DLL Null_Padding final : public BlockCipherModePaddingMethod +class BOTAN_PUBLIC_API(2,0) Null_Padding final : public BlockCipherModePaddingMethod { public: void add_padding(secure_vector<uint8_t>&, size_t, size_t) const override {} @@ -149,7 +149,7 @@ class BOTAN_DLL Null_Padding final : public BlockCipherModePaddingMethod * Get a block cipher padding mode by name (eg "NoPadding" or "PKCS7") * @param algo_spec block cipher padding mode name */ -BOTAN_DLL BlockCipherModePaddingMethod* get_bc_pad(const std::string& algo_spec); +BOTAN_PUBLIC_API(2,0) BlockCipherModePaddingMethod* get_bc_pad(const std::string& algo_spec); } diff --git a/src/lib/modes/stream_mode.h b/src/lib/modes/stream_mode.h index 27a94a7c7..bee740b3a 100644 --- a/src/lib/modes/stream_mode.h +++ b/src/lib/modes/stream_mode.h @@ -13,7 +13,7 @@ namespace Botan { -class BOTAN_DLL Stream_Cipher_Mode : public Cipher_Mode +class BOTAN_PUBLIC_API(2,0) Stream_Cipher_Mode : public Cipher_Mode { public: /** diff --git a/src/lib/modes/xts/xts.h b/src/lib/modes/xts/xts.h index 69715c8b9..2c19d7172 100644 --- a/src/lib/modes/xts/xts.h +++ b/src/lib/modes/xts/xts.h @@ -17,7 +17,7 @@ namespace Botan { /** * IEEE P1619 XTS Mode */ -class BOTAN_DLL XTS_Mode : public Cipher_Mode +class BOTAN_PUBLIC_API(2,0) XTS_Mode : public Cipher_Mode { public: std::string name() const override; @@ -56,7 +56,7 @@ class BOTAN_DLL XTS_Mode : public Cipher_Mode /** * IEEE P1619 XTS Encryption */ -class BOTAN_DLL XTS_Encryption final : public XTS_Mode +class BOTAN_PUBLIC_API(2,0) XTS_Encryption final : public XTS_Mode { public: /** @@ -74,7 +74,7 @@ class BOTAN_DLL XTS_Encryption final : public XTS_Mode /** * IEEE P1619 XTS Decryption */ -class BOTAN_DLL XTS_Decryption final : public XTS_Mode +class BOTAN_PUBLIC_API(2,0) XTS_Decryption final : public XTS_Mode { public: /** diff --git a/src/lib/passhash/bcrypt/bcrypt.h b/src/lib/passhash/bcrypt/bcrypt.h index ccf3c04bb..3698b0848 100644 --- a/src/lib/passhash/bcrypt/bcrypt.h +++ b/src/lib/passhash/bcrypt/bcrypt.h @@ -20,7 +20,7 @@ namespace Botan { * * @see http://www.usenix.org/events/usenix99/provos/provos_html/ */ -std::string BOTAN_DLL generate_bcrypt(const std::string& password, +std::string BOTAN_PUBLIC_API(2,0) generate_bcrypt(const std::string& password, RandomNumberGenerator& rng, uint16_t work_factor = 10); @@ -29,7 +29,7 @@ std::string BOTAN_DLL generate_bcrypt(const std::string& password, * @param password the password to check against * @param hash the stored hash to check against */ -bool BOTAN_DLL check_bcrypt(const std::string& password, +bool BOTAN_PUBLIC_API(2,0) check_bcrypt(const std::string& password, const std::string& hash); } diff --git a/src/lib/passhash/passhash9/passhash9.h b/src/lib/passhash/passhash9/passhash9.h index 80cbb939a..a10a6b665 100644 --- a/src/lib/passhash/passhash9/passhash9.h +++ b/src/lib/passhash/passhash9/passhash9.h @@ -25,7 +25,7 @@ namespace Botan { * 4 is HMAC(SHA-512) * all other values are currently undefined */ -std::string BOTAN_DLL generate_passhash9(const std::string& password, +std::string BOTAN_PUBLIC_API(2,0) generate_passhash9(const std::string& password, RandomNumberGenerator& rng, uint16_t work_factor = 10, uint8_t alg_id = 1); @@ -35,7 +35,7 @@ std::string BOTAN_DLL generate_passhash9(const std::string& password, * @param password the password to check against * @param hash the stored hash to check against */ -bool BOTAN_DLL check_passhash9(const std::string& password, +bool BOTAN_PUBLIC_API(2,0) check_passhash9(const std::string& password, const std::string& hash); /** diff --git a/src/lib/pbkdf/pbkdf.h b/src/lib/pbkdf/pbkdf.h index 0f2feb751..43b74bb33 100644 --- a/src/lib/pbkdf/pbkdf.h +++ b/src/lib/pbkdf/pbkdf.h @@ -19,7 +19,7 @@ namespace Botan { * implementations. Converts a password into a key using a salt * and iterated hashing to make brute force attacks harder. */ -class BOTAN_DLL PBKDF +class BOTAN_PUBLIC_API(2,0) PBKDF { public: /** diff --git a/src/lib/pbkdf/pbkdf1/pbkdf1.h b/src/lib/pbkdf/pbkdf1/pbkdf1.h index ca6542822..7d2a79007 100644 --- a/src/lib/pbkdf/pbkdf1/pbkdf1.h +++ b/src/lib/pbkdf/pbkdf1/pbkdf1.h @@ -18,7 +18,7 @@ namespace Botan { * Can only generate a key up to the size of the hash output. * Unless needed for backwards compatibility, use PKCS5_PBKDF2 */ -class BOTAN_DLL PKCS5_PBKDF1 final : public PBKDF +class BOTAN_PUBLIC_API(2,0) PKCS5_PBKDF1 final : public PBKDF { public: /** diff --git a/src/lib/pbkdf/pbkdf2/pbkdf2.h b/src/lib/pbkdf/pbkdf2/pbkdf2.h index 248daae67..c6c8cb27d 100644 --- a/src/lib/pbkdf/pbkdf2/pbkdf2.h +++ b/src/lib/pbkdf/pbkdf2/pbkdf2.h @@ -14,7 +14,7 @@ namespace Botan { -BOTAN_DLL size_t pbkdf2(MessageAuthenticationCode& prf, +BOTAN_PUBLIC_API(2,0) size_t pbkdf2(MessageAuthenticationCode& prf, uint8_t out[], size_t out_len, const std::string& passphrase, @@ -25,7 +25,7 @@ BOTAN_DLL size_t pbkdf2(MessageAuthenticationCode& prf, /** * PKCS #5 PBKDF2 */ -class BOTAN_DLL PKCS5_PBKDF2 final : public PBKDF +class BOTAN_PUBLIC_API(2,0) PKCS5_PBKDF2 final : public PBKDF { public: std::string name() const override diff --git a/src/lib/pk_pad/eme.h b/src/lib/pk_pad/eme.h index e9b4386ab..d4722e793 100644 --- a/src/lib/pk_pad/eme.h +++ b/src/lib/pk_pad/eme.h @@ -16,7 +16,7 @@ namespace Botan { /** * Encoding Method for Encryption */ -class BOTAN_DLL EME +class BOTAN_PUBLIC_API(2,0) EME { public: virtual ~EME() = default; @@ -83,7 +83,7 @@ class BOTAN_DLL EME * @param algo_spec the name of the EME to create * @return pointer to newly allocated object of that type */ -BOTAN_DLL EME* get_eme(const std::string& algo_spec); +BOTAN_PUBLIC_API(2,0) EME* get_eme(const std::string& algo_spec); } diff --git a/src/lib/pk_pad/eme_oaep/oaep.h b/src/lib/pk_pad/eme_oaep/oaep.h index 9cd213eab..f675d5286 100644 --- a/src/lib/pk_pad/eme_oaep/oaep.h +++ b/src/lib/pk_pad/eme_oaep/oaep.h @@ -16,7 +16,7 @@ namespace Botan { /** * OAEP (called EME1 in IEEE 1363 and in earlier versions of the library) */ -class BOTAN_DLL OAEP final : public EME +class BOTAN_PUBLIC_API(2,0) OAEP final : public EME { public: size_t maximum_input_size(size_t) const override; diff --git a/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h b/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h index 9e06403ac..a08160ab7 100644 --- a/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h +++ b/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h @@ -15,7 +15,7 @@ namespace Botan { /** * EME from PKCS #1 v1.5 */ -class BOTAN_DLL EME_PKCS1v15 final : public EME +class BOTAN_PUBLIC_API(2,0) EME_PKCS1v15 final : public EME { public: size_t maximum_input_size(size_t) const override; diff --git a/src/lib/pk_pad/eme_raw/eme_raw.h b/src/lib/pk_pad/eme_raw/eme_raw.h index 50b9b6703..b3b3be425 100644 --- a/src/lib/pk_pad/eme_raw/eme_raw.h +++ b/src/lib/pk_pad/eme_raw/eme_raw.h @@ -11,7 +11,7 @@ namespace Botan { -class BOTAN_DLL EME_Raw final : public EME +class BOTAN_PUBLIC_API(2,0) EME_Raw final : public EME { public: size_t maximum_input_size(size_t i) const override; diff --git a/src/lib/pk_pad/emsa.h b/src/lib/pk_pad/emsa.h index 437f84d89..6ee509480 100644 --- a/src/lib/pk_pad/emsa.h +++ b/src/lib/pk_pad/emsa.h @@ -18,7 +18,7 @@ namespace Botan { * * Any way of encoding/padding signatures */ -class BOTAN_DLL EMSA +class BOTAN_PUBLIC_API(2,0) EMSA { public: /** @@ -69,7 +69,7 @@ class BOTAN_DLL EMSA * @param algo_spec the name of the EMSA to create * @return pointer to newly allocated object of that type */ -BOTAN_DLL EMSA* get_emsa(const std::string& algo_spec); +BOTAN_PUBLIC_API(2,0) EMSA* get_emsa(const std::string& algo_spec); /** * Returns the hash function used in the given EMSA scheme @@ -78,7 +78,7 @@ BOTAN_DLL EMSA* get_emsa(const std::string& algo_spec); * @param algo_spec the name of the EMSA * @return hash function used in the given EMSA scheme */ -BOTAN_DLL std::string hash_for_emsa(const std::string& algo_spec); +BOTAN_PUBLIC_API(2,0) std::string hash_for_emsa(const std::string& algo_spec); } diff --git a/src/lib/pk_pad/emsa1/emsa1.h b/src/lib/pk_pad/emsa1/emsa1.h index 6d7b2bca8..ec9394a1d 100644 --- a/src/lib/pk_pad/emsa1/emsa1.h +++ b/src/lib/pk_pad/emsa1/emsa1.h @@ -17,7 +17,7 @@ namespace Botan { * EMSA1 from IEEE 1363 * Essentially, sign the hash directly */ -class BOTAN_DLL EMSA1 : public EMSA +class BOTAN_PUBLIC_API(2,0) EMSA1 : public EMSA { public: /** diff --git a/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h b/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h index ddfabeae3..304e27815 100644 --- a/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h +++ b/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h @@ -18,7 +18,7 @@ namespace Botan { * aka PKCS #1 block type 1 * aka EMSA3 from IEEE 1363 */ -class BOTAN_DLL EMSA_PKCS1v15 final : public EMSA +class BOTAN_PUBLIC_API(2,0) EMSA_PKCS1v15 final : public EMSA { public: /** @@ -47,7 +47,7 @@ class BOTAN_DLL EMSA_PKCS1v15 final : public EMSA * (which according to QCA docs is "identical to PKCS#11's CKM_RSA_PKCS * mechanism", something I have not confirmed) */ -class BOTAN_DLL EMSA_PKCS1v15_Raw final : public EMSA +class BOTAN_PUBLIC_API(2,0) EMSA_PKCS1v15_Raw final : public EMSA { public: EMSA* clone() override { return new EMSA_PKCS1v15_Raw(); } diff --git a/src/lib/pk_pad/emsa_pssr/pssr.h b/src/lib/pk_pad/emsa_pssr/pssr.h index 0ed47c466..4769ca929 100644 --- a/src/lib/pk_pad/emsa_pssr/pssr.h +++ b/src/lib/pk_pad/emsa_pssr/pssr.h @@ -16,7 +16,7 @@ namespace Botan { /** * PSSR (called EMSA4 in IEEE 1363 and in old versions of the library) */ -class BOTAN_DLL PSSR final : public EMSA +class BOTAN_PUBLIC_API(2,0) PSSR final : public EMSA { public: diff --git a/src/lib/pk_pad/emsa_raw/emsa_raw.h b/src/lib/pk_pad/emsa_raw/emsa_raw.h index 598b9b97c..dd7456fd7 100644 --- a/src/lib/pk_pad/emsa_raw/emsa_raw.h +++ b/src/lib/pk_pad/emsa_raw/emsa_raw.h @@ -16,7 +16,7 @@ namespace Botan { * EMSA-Raw - sign inputs directly * Don't use this unless you know what you are doing. */ -class BOTAN_DLL EMSA_Raw final : public EMSA +class BOTAN_PUBLIC_API(2,0) EMSA_Raw final : public EMSA { public: EMSA* clone() override { return new EMSA_Raw(); } diff --git a/src/lib/pk_pad/emsa_x931/emsa_x931.h b/src/lib/pk_pad/emsa_x931/emsa_x931.h index ec48d01de..9ea63bc6b 100644 --- a/src/lib/pk_pad/emsa_x931/emsa_x931.h +++ b/src/lib/pk_pad/emsa_x931/emsa_x931.h @@ -18,7 +18,7 @@ namespace Botan { * Useful for Rabin-Williams, also sometimes used with RSA in * odd protocols. */ -class BOTAN_DLL EMSA_X931 final : public EMSA +class BOTAN_PUBLIC_API(2,0) EMSA_X931 final : public EMSA { public: /** diff --git a/src/lib/pk_pad/hash_id/hash_id.h b/src/lib/pk_pad/hash_id/hash_id.h index 4e5492bd0..8cd442ed1 100644 --- a/src/lib/pk_pad/hash_id/hash_id.h +++ b/src/lib/pk_pad/hash_id/hash_id.h @@ -20,14 +20,14 @@ namespace Botan { * @return uint8_t sequence identifying the hash * @throw Invalid_Argument if the hash has no known PKCS #1 hash id */ -BOTAN_DLL std::vector<uint8_t> pkcs_hash_id(const std::string& hash_name); +BOTAN_PUBLIC_API(2,0) std::vector<uint8_t> pkcs_hash_id(const std::string& hash_name); /** * Return the IEEE 1363 hash identifier * @param hash_name the name of the hash function * @return uint8_t code identifying the hash, or 0 if not known */ -BOTAN_DLL uint8_t ieee1363_hash_id(const std::string& hash_name); +BOTAN_PUBLIC_API(2,0) uint8_t ieee1363_hash_id(const std::string& hash_name); } diff --git a/src/lib/pk_pad/iso9796/iso9796.h b/src/lib/pk_pad/iso9796/iso9796.h index 1959ed3f3..358685c80 100644 --- a/src/lib/pk_pad/iso9796/iso9796.h +++ b/src/lib/pk_pad/iso9796/iso9796.h @@ -16,7 +16,7 @@ namespace Botan { /** * ISO-9796-2 - Digital signature scheme 2 (probabilistic) */ -class BOTAN_DLL ISO_9796_DS2 final : public EMSA +class BOTAN_PUBLIC_API(2,0) ISO_9796_DS2 final : public EMSA { public: /** @@ -58,7 +58,7 @@ class BOTAN_DLL ISO_9796_DS2 final : public EMSA /** * ISO-9796-2 - Digital signature scheme 3 (deterministic) */ -class BOTAN_DLL ISO_9796_DS3 final : public EMSA +class BOTAN_PUBLIC_API(2,0) ISO_9796_DS3 final : public EMSA { public: /** diff --git a/src/lib/pk_pad/mgf1/mgf1.h b/src/lib/pk_pad/mgf1/mgf1.h index 27160bd9a..54401cbb8 100644 --- a/src/lib/pk_pad/mgf1/mgf1.h +++ b/src/lib/pk_pad/mgf1/mgf1.h @@ -20,7 +20,7 @@ namespace Botan { * @param out output buffer * @param out_len size of the output buffer in bytes */ -void BOTAN_DLL mgf1_mask(HashFunction& hash, +void BOTAN_PUBLIC_API(2,0) mgf1_mask(HashFunction& hash, const uint8_t in[], size_t in_len, uint8_t out[], size_t out_len); diff --git a/src/lib/prov/pkcs11/p11.h b/src/lib/prov/pkcs11/p11.h index bbfbbd881..84bc1139e 100644 --- a/src/lib/prov/pkcs11/p11.h +++ b/src/lib/prov/pkcs11/p11.h @@ -850,7 +850,7 @@ using RsaPkcsPssParams = CK_RSA_PKCS_PSS_PARAMS; using Ecdh1DeriveParams = CK_ECDH1_DERIVE_PARAMS; using Date = CK_DATE; -BOTAN_DLL extern ReturnValue* ThrowException; +BOTAN_PUBLIC_API(2,0) extern ReturnValue* ThrowException; const Bbool True = CK_TRUE; const Bbool False = CK_FALSE; @@ -869,7 +869,7 @@ class Slot; * @param so_pin PIN of the security officer. Will be set if the token is uninitialized other this has to be the current SO_PIN * @param pin The user PIN that will be set */ -BOTAN_DLL void initialize_token(Slot& slot, const std::string& label, const secure_string& so_pin, +BOTAN_PUBLIC_API(2,0) void initialize_token(Slot& slot, const std::string& label, const secure_string& so_pin, const secure_string& pin); /** @@ -879,7 +879,7 @@ BOTAN_DLL void initialize_token(Slot& slot, const std::string& label, const secu * @param new_pin The new user PIN */ -BOTAN_DLL void change_pin(Slot& slot, const secure_string& old_pin, const secure_string& new_pin); +BOTAN_PUBLIC_API(2,0) void change_pin(Slot& slot, const secure_string& old_pin, const secure_string& new_pin); /** * Change SO_PIN with old SO_PIN to new SO_PIN @@ -887,7 +887,7 @@ BOTAN_DLL void change_pin(Slot& slot, const secure_string& old_pin, const secure * @param old_so_pin The old SO_PIN * @param new_so_pin The new SO_PIN */ -BOTAN_DLL void change_so_pin(Slot& slot, const secure_string& old_so_pin, const secure_string& new_so_pin); +BOTAN_PUBLIC_API(2,0) void change_so_pin(Slot& slot, const secure_string& old_so_pin, const secure_string& new_so_pin); /** * Sets user PIN with SO_PIN @@ -895,10 +895,10 @@ BOTAN_DLL void change_so_pin(Slot& slot, const secure_string& old_so_pin, const * @param so_pin PIN of the security officer * @param pin The user PIN that should be set */ -BOTAN_DLL void set_pin(Slot& slot, const secure_string& so_pin, const secure_string& pin); +BOTAN_PUBLIC_API(2,0) void set_pin(Slot& slot, const secure_string& so_pin, const secure_string& pin); /// Provides access to all PKCS#11 functions -class BOTAN_DLL LowLevel +class BOTAN_PUBLIC_API(2,0) LowLevel { public: /// @param ptr the functon list pointer to use. Can be retrieved via `LowLevel::C_GetFunctionList` diff --git a/src/lib/prov/pkcs11/p11_ecc_key.h b/src/lib/prov/pkcs11/p11_ecc_key.h index 6762d448e..fe45cec8a 100644 --- a/src/lib/prov/pkcs11/p11_ecc_key.h +++ b/src/lib/prov/pkcs11/p11_ecc_key.h @@ -26,7 +26,7 @@ namespace PKCS11 { class Session; /// Properties for generating a PKCS#11 EC public key -class BOTAN_DLL EC_PublicKeyGenerationProperties final : public PublicKeyProperties +class BOTAN_PUBLIC_API(2,0) EC_PublicKeyGenerationProperties final : public PublicKeyProperties { public: /// @param ec_params DER-encoding of an ANSI X9.62 Parameters value @@ -43,7 +43,7 @@ class BOTAN_DLL EC_PublicKeyGenerationProperties final : public PublicKeyPropert }; /// Properties for importing a PKCS#11 EC public key -class BOTAN_DLL EC_PublicKeyImportProperties final : public PublicKeyProperties +class BOTAN_PUBLIC_API(2,0) EC_PublicKeyImportProperties final : public PublicKeyProperties { public: /** @@ -70,7 +70,7 @@ class BOTAN_DLL EC_PublicKeyImportProperties final : public PublicKeyProperties }; /// Represents a PKCS#11 EC public key -class BOTAN_DLL PKCS11_EC_PublicKey : public virtual EC_PublicKey, +class BOTAN_PUBLIC_API(2,0) PKCS11_EC_PublicKey : public virtual EC_PublicKey, public Object { public: @@ -92,7 +92,7 @@ class BOTAN_DLL PKCS11_EC_PublicKey : public virtual EC_PublicKey, }; /// Properties for generating a PKCS#11 EC private key -class BOTAN_DLL EC_PrivateKeyGenerationProperties final : public PrivateKeyProperties +class BOTAN_PUBLIC_API(2,0) EC_PrivateKeyGenerationProperties final : public PrivateKeyProperties { public: EC_PrivateKeyGenerationProperties() @@ -101,7 +101,7 @@ class BOTAN_DLL EC_PrivateKeyGenerationProperties final : public PrivateKeyPrope }; /// Properties for importing a PKCS#11 EC private key -class BOTAN_DLL EC_PrivateKeyImportProperties final : public PrivateKeyProperties +class BOTAN_PUBLIC_API(2,0) EC_PrivateKeyImportProperties final : public PrivateKeyProperties { public: /** @@ -130,7 +130,7 @@ class BOTAN_DLL EC_PrivateKeyImportProperties final : public PrivateKeyPropertie // note: don't inherit from PKCS11_EC_PublicKey: a private key object IS NOT A public key object on a smartcard (-> two different objects) // note: don't inherit from EC_PublicKey: the public key can not be extracted from a PKCS11-EC-PrivateKey (its only attributes are CKA_EC_PARAMS and CKA_VALUE) /// Represents a PKCS#11 EC private key -class BOTAN_DLL PKCS11_EC_PrivateKey : public virtual Private_Key, +class BOTAN_PUBLIC_API(2,0) PKCS11_EC_PrivateKey : public virtual Private_Key, public Object { public: diff --git a/src/lib/prov/pkcs11/p11_ecdh.h b/src/lib/prov/pkcs11/p11_ecdh.h index c8e4017ba..5dee6d27e 100644 --- a/src/lib/prov/pkcs11/p11_ecdh.h +++ b/src/lib/prov/pkcs11/p11_ecdh.h @@ -24,7 +24,7 @@ namespace PKCS11 { class Session; /// Represents a PKCS#11 ECDH public key -class BOTAN_DLL PKCS11_ECDH_PublicKey final : public PKCS11_EC_PublicKey +class BOTAN_PUBLIC_API(2,0) PKCS11_ECDH_PublicKey final : public PKCS11_EC_PublicKey { public: /** @@ -55,7 +55,7 @@ class BOTAN_DLL PKCS11_ECDH_PublicKey final : public PKCS11_EC_PublicKey }; /// Represents a PKCS#11 ECDH private key -class BOTAN_DLL PKCS11_ECDH_PrivateKey final : public virtual PKCS11_EC_PrivateKey, public virtual PK_Key_Agreement_Key +class BOTAN_PUBLIC_API(2,0) PKCS11_ECDH_PrivateKey final : public virtual PKCS11_EC_PrivateKey, public virtual PK_Key_Agreement_Key { public: /** @@ -117,7 +117,7 @@ using PKCS11_ECDH_KeyPair = std::pair<PKCS11_ECDH_PublicKey, PKCS11_ECDH_Private * @param pub_props the properties of the public key * @param priv_props the properties of the private key */ -BOTAN_DLL PKCS11_ECDH_KeyPair generate_ecdh_keypair(Session& session, const EC_PublicKeyGenerationProperties& pub_props, +BOTAN_PUBLIC_API(2,0) PKCS11_ECDH_KeyPair generate_ecdh_keypair(Session& session, const EC_PublicKeyGenerationProperties& pub_props, const EC_PrivateKeyGenerationProperties& priv_props); } diff --git a/src/lib/prov/pkcs11/p11_ecdsa.h b/src/lib/prov/pkcs11/p11_ecdsa.h index c1ac0d557..49dc1e8dd 100644 --- a/src/lib/prov/pkcs11/p11_ecdsa.h +++ b/src/lib/prov/pkcs11/p11_ecdsa.h @@ -22,7 +22,7 @@ namespace PKCS11 { class Session; /// Represents a PKCS#11 ECDSA public key -class BOTAN_DLL PKCS11_ECDSA_PublicKey final : public PKCS11_EC_PublicKey, public virtual ECDSA_PublicKey +class BOTAN_PUBLIC_API(2,0) PKCS11_ECDSA_PublicKey final : public PKCS11_EC_PublicKey, public virtual ECDSA_PublicKey { public: /** @@ -57,7 +57,7 @@ class BOTAN_DLL PKCS11_ECDSA_PublicKey final : public PKCS11_EC_PublicKey, publi }; /// Represents a PKCS#11 ECDSA private key -class BOTAN_DLL PKCS11_ECDSA_PrivateKey final : public PKCS11_EC_PrivateKey +class BOTAN_PUBLIC_API(2,0) PKCS11_ECDSA_PrivateKey final : public PKCS11_EC_PrivateKey { public: /** @@ -116,7 +116,7 @@ using PKCS11_ECDSA_KeyPair = std::pair<PKCS11_ECDSA_PublicKey, PKCS11_ECDSA_Priv * @param pub_props the properties of the public key * @param priv_props the properties of the private key */ -BOTAN_DLL PKCS11_ECDSA_KeyPair generate_ecdsa_keypair(Session& session, +BOTAN_PUBLIC_API(2,0) PKCS11_ECDSA_KeyPair generate_ecdsa_keypair(Session& session, const EC_PublicKeyGenerationProperties& pub_props, const EC_PrivateKeyGenerationProperties& priv_props); } diff --git a/src/lib/prov/pkcs11/p11_module.h b/src/lib/prov/pkcs11/p11_module.h index 990458a4d..f111c06c8 100644 --- a/src/lib/prov/pkcs11/p11_module.h +++ b/src/lib/prov/pkcs11/p11_module.h @@ -22,7 +22,7 @@ namespace PKCS11 { * Loads the PKCS#11 shared library * Calls C_Initialize on load and C_Finalize on destruction */ -class BOTAN_DLL Module final +class BOTAN_PUBLIC_API(2,0) Module final { public: /** diff --git a/src/lib/prov/pkcs11/p11_object.h b/src/lib/prov/pkcs11/p11_object.h index fbf912233..52361d18f 100644 --- a/src/lib/prov/pkcs11/p11_object.h +++ b/src/lib/prov/pkcs11/p11_object.h @@ -25,7 +25,7 @@ namespace PKCS11 { class Module; /// Helper class to build the Attribute / CK_ATTRIBUTE structures -class BOTAN_DLL AttributeContainer +class BOTAN_PUBLIC_API(2,0) AttributeContainer { public: AttributeContainer() = default; @@ -128,7 +128,7 @@ class BOTAN_DLL AttributeContainer }; /// Manages calls to C_FindObjects* functions (C_FindObjectsInit -> C_FindObjects -> C_FindObjectsFinal) -class BOTAN_DLL ObjectFinder final +class BOTAN_PUBLIC_API(2,0) ObjectFinder final { public: /** @@ -173,7 +173,7 @@ class BOTAN_DLL ObjectFinder final }; /// Common attributes of all objects -class BOTAN_DLL ObjectProperties : public AttributeContainer +class BOTAN_PUBLIC_API(2,0) ObjectProperties : public AttributeContainer { public: /// @param object_class the object class of the object @@ -190,7 +190,7 @@ class BOTAN_DLL ObjectProperties : public AttributeContainer }; /// Common attributes of all storage objects -class BOTAN_DLL StorageObjectProperties : public ObjectProperties +class BOTAN_PUBLIC_API(2,0) StorageObjectProperties : public ObjectProperties { public: /// @param object_class the CK_OBJECT_CLASS this storage object belongs to @@ -237,7 +237,7 @@ class BOTAN_DLL StorageObjectProperties : public ObjectProperties }; /// Common attributes of all data objects -class BOTAN_DLL DataObjectProperties : public StorageObjectProperties +class BOTAN_PUBLIC_API(2,0) DataObjectProperties : public StorageObjectProperties { public: DataObjectProperties(); @@ -262,7 +262,7 @@ class BOTAN_DLL DataObjectProperties : public StorageObjectProperties }; /// Common attributes of all certificate objects -class BOTAN_DLL CertificateProperties : public StorageObjectProperties +class BOTAN_PUBLIC_API(2,0) CertificateProperties : public StorageObjectProperties { public: /// @param cert_type type of certificate @@ -318,7 +318,7 @@ class BOTAN_DLL CertificateProperties : public StorageObjectProperties }; /// Common attributes of all key objects -class BOTAN_DLL KeyProperties : public StorageObjectProperties +class BOTAN_PUBLIC_API(2,0) KeyProperties : public StorageObjectProperties { public: /** @@ -371,7 +371,7 @@ class BOTAN_DLL KeyProperties : public StorageObjectProperties }; /// Common attributes of all public key objects -class BOTAN_DLL PublicKeyProperties : public KeyProperties +class BOTAN_PUBLIC_API(2,0) PublicKeyProperties : public KeyProperties { public: /// @param key_type type of key @@ -435,7 +435,7 @@ class BOTAN_DLL PublicKeyProperties : public KeyProperties }; /// Common attributes of all private keys -class BOTAN_DLL PrivateKeyProperties : public KeyProperties +class BOTAN_PUBLIC_API(2,0) PrivateKeyProperties : public KeyProperties { public: /// @param key_type type of key @@ -514,7 +514,7 @@ class BOTAN_DLL PrivateKeyProperties : public KeyProperties }; /// Common attributes of all secret (symmetric) keys -class BOTAN_DLL SecretKeyProperties : public KeyProperties +class BOTAN_PUBLIC_API(2,0) SecretKeyProperties : public KeyProperties { public: /// @param key_type type of key @@ -619,7 +619,7 @@ class BOTAN_DLL SecretKeyProperties : public KeyProperties }; /// Common attributes of domain parameter -class BOTAN_DLL DomainParameterProperties : public StorageObjectProperties +class BOTAN_PUBLIC_API(2,0) DomainParameterProperties : public StorageObjectProperties { public: /// @param key_type type of key the domain parameters can be used to generate @@ -638,7 +638,7 @@ class BOTAN_DLL DomainParameterProperties : public StorageObjectProperties /** * Represents a PKCS#11 object. */ -class BOTAN_DLL Object +class BOTAN_PUBLIC_API(2,0) Object { public: /** diff --git a/src/lib/prov/pkcs11/p11_randomgenerator.h b/src/lib/prov/pkcs11/p11_randomgenerator.h index 6a29f8040..4c9e6de2e 100644 --- a/src/lib/prov/pkcs11/p11_randomgenerator.h +++ b/src/lib/prov/pkcs11/p11_randomgenerator.h @@ -22,7 +22,7 @@ namespace PKCS11 { class Module; /// A random generator that only fetches random from the PKCS#11 RNG -class BOTAN_DLL PKCS11_RNG final : public Hardware_RNG +class BOTAN_PUBLIC_API(2,0) PKCS11_RNG final : public Hardware_RNG { public: /// Initialize the RNG with the PKCS#11 session that provides access to the cryptoki functions diff --git a/src/lib/prov/pkcs11/p11_rsa.h b/src/lib/prov/pkcs11/p11_rsa.h index f3ddd970b..6f29a6156 100644 --- a/src/lib/prov/pkcs11/p11_rsa.h +++ b/src/lib/prov/pkcs11/p11_rsa.h @@ -22,7 +22,7 @@ namespace Botan { namespace PKCS11 { /// Properties for generating a PKCS#11 RSA public key -class BOTAN_DLL RSA_PublicKeyGenerationProperties final : public PublicKeyProperties +class BOTAN_PUBLIC_API(2,0) RSA_PublicKeyGenerationProperties final : public PublicKeyProperties { public: /// @param bits length in bits of modulus n @@ -38,7 +38,7 @@ class BOTAN_DLL RSA_PublicKeyGenerationProperties final : public PublicKeyProper }; /// Properties for importing a PKCS#11 RSA public key -class BOTAN_DLL RSA_PublicKeyImportProperties final : public PublicKeyProperties +class BOTAN_PUBLIC_API(2,0) RSA_PublicKeyImportProperties final : public PublicKeyProperties { public: /// @param modulus modulus n @@ -64,7 +64,7 @@ class BOTAN_DLL RSA_PublicKeyImportProperties final : public PublicKeyProperties }; /// Represents a PKCS#11 RSA public key -class BOTAN_DLL PKCS11_RSA_PublicKey final : public RSA_PublicKey, +class BOTAN_PUBLIC_API(2,0) PKCS11_RSA_PublicKey final : public RSA_PublicKey, public Object { public: @@ -95,7 +95,7 @@ class BOTAN_DLL PKCS11_RSA_PublicKey final : public RSA_PublicKey, }; /// Properties for importing a PKCS#11 RSA private key -class BOTAN_DLL RSA_PrivateKeyImportProperties final : public PrivateKeyProperties +class BOTAN_PUBLIC_API(2,0) RSA_PrivateKeyImportProperties final : public PrivateKeyProperties { public: /** @@ -160,7 +160,7 @@ class BOTAN_DLL RSA_PrivateKeyImportProperties final : public PrivateKeyProperti }; /// Properties for generating a PKCS#11 RSA private key -class BOTAN_DLL RSA_PrivateKeyGenerationProperties final : public PrivateKeyProperties +class BOTAN_PUBLIC_API(2,0) RSA_PrivateKeyGenerationProperties final : public PrivateKeyProperties { public: RSA_PrivateKeyGenerationProperties() @@ -171,7 +171,7 @@ class BOTAN_DLL RSA_PrivateKeyGenerationProperties final : public PrivateKeyProp }; /// Represents a PKCS#11 RSA private key -class BOTAN_DLL PKCS11_RSA_PrivateKey final : public Private_Key, +class BOTAN_PUBLIC_API(2,0) PKCS11_RSA_PrivateKey final : public Private_Key, public RSA_PublicKey, public Object { @@ -221,7 +221,7 @@ using PKCS11_RSA_KeyPair = std::pair<PKCS11_RSA_PublicKey, PKCS11_RSA_PrivateKey * @param pub_props properties of the public key * @param priv_props properties of the private key */ -BOTAN_DLL PKCS11_RSA_KeyPair generate_rsa_keypair(Session& session, const RSA_PublicKeyGenerationProperties& pub_props, +BOTAN_PUBLIC_API(2,0) PKCS11_RSA_KeyPair generate_rsa_keypair(Session& session, const RSA_PublicKeyGenerationProperties& pub_props, const RSA_PrivateKeyGenerationProperties& priv_props); } diff --git a/src/lib/prov/pkcs11/p11_session.h b/src/lib/prov/pkcs11/p11_session.h index 49f223a90..a11008f94 100644 --- a/src/lib/prov/pkcs11/p11_session.h +++ b/src/lib/prov/pkcs11/p11_session.h @@ -19,7 +19,7 @@ namespace PKCS11 { class Module; /// Represents a PKCS#11 session -class BOTAN_DLL Session final +class BOTAN_PUBLIC_API(2,0) Session final { public: /** diff --git a/src/lib/prov/pkcs11/p11_slot.h b/src/lib/prov/pkcs11/p11_slot.h index 92e585ba1..f64122e17 100644 --- a/src/lib/prov/pkcs11/p11_slot.h +++ b/src/lib/prov/pkcs11/p11_slot.h @@ -20,7 +20,7 @@ namespace Botan { namespace PKCS11 { /// Represents a PKCS#11 Slot, i.e., a card reader -class BOTAN_DLL Slot final +class BOTAN_PUBLIC_API(2,0) Slot final { public: /** diff --git a/src/lib/prov/pkcs11/p11_x509.h b/src/lib/prov/pkcs11/p11_x509.h index db83286cc..61808c21d 100644 --- a/src/lib/prov/pkcs11/p11_x509.h +++ b/src/lib/prov/pkcs11/p11_x509.h @@ -24,7 +24,7 @@ namespace PKCS11 { class Session; /// Common attributes of all PKCS#11 X509 certificates -class BOTAN_DLL X509_CertificateProperties final : public CertificateProperties +class BOTAN_PUBLIC_API(2,0) X509_CertificateProperties final : public CertificateProperties { public: /** @@ -87,7 +87,7 @@ class BOTAN_DLL X509_CertificateProperties final : public CertificateProperties }; /// Represents a PKCS#11 X509 certificate -class BOTAN_DLL PKCS11_X509_Certificate final : public Object, public X509_Certificate +class BOTAN_PUBLIC_API(2,0) PKCS11_X509_Certificate final : public Object, public X509_Certificate { public: static const ObjectClass Class = ObjectClass::Certificate; diff --git a/src/lib/prov/tpm/tpm.h b/src/lib/prov/tpm/tpm.h index 178206b8f..e46dc9280 100644 --- a/src/lib/prov/tpm/tpm.h +++ b/src/lib/prov/tpm/tpm.h @@ -36,7 +36,7 @@ class TPM_Error : public Exception * * TODO: handling owner password? */ -class BOTAN_DLL TPM_Context +class BOTAN_PUBLIC_API(2,0) TPM_Context { public: /** @@ -72,7 +72,7 @@ class BOTAN_DLL TPM_Context TSS_HTPM m_tpm; }; -class BOTAN_DLL TPM_RNG : public Hardware_RNG +class BOTAN_PUBLIC_API(2,0) TPM_RNG : public Hardware_RNG { public: TPM_RNG(TPM_Context& ctx) : m_ctx(ctx) {} @@ -103,7 +103,7 @@ enum class TPM_Storage_Type { User, System }; * Also implements the public interface, but does not have usable * TODO: derive from RSA_PublicKey??? */ -class BOTAN_DLL TPM_PrivateKey : public Private_Key +class BOTAN_PUBLIC_API(2,0) TPM_PrivateKey : public Private_Key { public: // TODO: key import? diff --git a/src/lib/pubkey/blinding.h b/src/lib/pubkey/blinding.h index bc05d97e7..805b1a070 100644 --- a/src/lib/pubkey/blinding.h +++ b/src/lib/pubkey/blinding.h @@ -19,7 +19,7 @@ class RandomNumberGenerator; /** * Blinding Function Object. */ -class BOTAN_DLL Blinder +class BOTAN_PUBLIC_API(2,0) Blinder { public: /** diff --git a/src/lib/pubkey/cecpq1/cecpq1.h b/src/lib/pubkey/cecpq1/cecpq1.h index 9fe0b04ae..cad3acade 100644 --- a/src/lib/pubkey/cecpq1/cecpq1.h +++ b/src/lib/pubkey/cecpq1/cecpq1.h @@ -20,16 +20,16 @@ class CECPQ1_key newhope_poly m_newhope; }; -void BOTAN_DLL CECPQ1_offer(uint8_t* offer_message, +void BOTAN_PUBLIC_API(2,0) CECPQ1_offer(uint8_t* offer_message, CECPQ1_key* offer_key_output, RandomNumberGenerator& rng); -void BOTAN_DLL CECPQ1_accept(uint8_t* shared_key, +void BOTAN_PUBLIC_API(2,0) CECPQ1_accept(uint8_t* shared_key, uint8_t* accept_message, const uint8_t* offer_message, RandomNumberGenerator& rng); -void BOTAN_DLL CECPQ1_finish(uint8_t* shared_key, +void BOTAN_PUBLIC_API(2,0) CECPQ1_finish(uint8_t* shared_key, const CECPQ1_key& offer_key, const uint8_t* accept_message); diff --git a/src/lib/pubkey/curve25519/curve25519.h b/src/lib/pubkey/curve25519/curve25519.h index da64113d5..b148facf1 100644 --- a/src/lib/pubkey/curve25519/curve25519.h +++ b/src/lib/pubkey/curve25519/curve25519.h @@ -12,7 +12,7 @@ namespace Botan { -class BOTAN_DLL Curve25519_PublicKey : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) Curve25519_PublicKey : public virtual Public_Key { public: std::string algo_name() const override { return "Curve25519"; } @@ -55,7 +55,7 @@ class BOTAN_DLL Curve25519_PublicKey : public virtual Public_Key std::vector<uint8_t> m_public; }; -class BOTAN_DLL Curve25519_PrivateKey : public Curve25519_PublicKey, +class BOTAN_PUBLIC_API(2,0) Curve25519_PrivateKey : public Curve25519_PublicKey, public virtual Private_Key, public virtual PK_Key_Agreement_Key { @@ -103,7 +103,7 @@ class BOTAN_DLL Curve25519_PrivateKey : public Curve25519_PublicKey, * The types above are just wrappers for curve25519_donna, plus defining * encodings for public and private keys. */ -void BOTAN_DLL curve25519_donna(uint8_t mypublic[32], +void BOTAN_PUBLIC_API(2,0) curve25519_donna(uint8_t mypublic[32], const uint8_t secret[32], const uint8_t basepoint[32]); @@ -112,7 +112,7 @@ void BOTAN_DLL curve25519_donna(uint8_t mypublic[32], * @param mypublic output value * @param secret random scalar */ -void BOTAN_DLL curve25519_basepoint(uint8_t mypublic[32], +void BOTAN_PUBLIC_API(2,0) curve25519_basepoint(uint8_t mypublic[32], const uint8_t secret[32]); } diff --git a/src/lib/pubkey/dh/dh.h b/src/lib/pubkey/dh/dh.h index f3f4b746b..359d68f10 100644 --- a/src/lib/pubkey/dh/dh.h +++ b/src/lib/pubkey/dh/dh.h @@ -15,7 +15,7 @@ namespace Botan { /** * This class represents Diffie-Hellman public keys. */ -class BOTAN_DLL DH_PublicKey : public virtual DL_Scheme_PublicKey +class BOTAN_PUBLIC_API(2,0) DH_PublicKey : public virtual DL_Scheme_PublicKey { public: std::string algo_name() const override { return "DH"; } @@ -46,7 +46,7 @@ class BOTAN_DLL DH_PublicKey : public virtual DL_Scheme_PublicKey /** * This class represents Diffie-Hellman private keys. */ -class BOTAN_DLL DH_PrivateKey : public DH_PublicKey, +class BOTAN_PUBLIC_API(2,0) DH_PrivateKey : public DH_PublicKey, public PK_Key_Agreement_Key, public virtual DL_Scheme_PrivateKey { diff --git a/src/lib/pubkey/dl_algo/dl_algo.h b/src/lib/pubkey/dl_algo/dl_algo.h index 94bf24387..c2ea6e0b9 100644 --- a/src/lib/pubkey/dl_algo/dl_algo.h +++ b/src/lib/pubkey/dl_algo/dl_algo.h @@ -16,7 +16,7 @@ namespace Botan { /** * This class represents discrete logarithm (DL) public keys. */ -class BOTAN_DLL DL_Scheme_PublicKey : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) DL_Scheme_PublicKey : public virtual Public_Key { public: bool check_key(RandomNumberGenerator& rng, bool) const override; @@ -92,7 +92,7 @@ class BOTAN_DLL DL_Scheme_PublicKey : public virtual Public_Key /** * This class represents discrete logarithm (DL) private keys. */ -class BOTAN_DLL DL_Scheme_PrivateKey : public virtual DL_Scheme_PublicKey, +class BOTAN_PUBLIC_API(2,0) DL_Scheme_PrivateKey : public virtual DL_Scheme_PublicKey, public virtual Private_Key { public: diff --git a/src/lib/pubkey/dl_group/dl_group.h b/src/lib/pubkey/dl_group/dl_group.h index 7cbf81c20..a5ec71fd7 100644 --- a/src/lib/pubkey/dl_group/dl_group.h +++ b/src/lib/pubkey/dl_group/dl_group.h @@ -17,7 +17,7 @@ namespace Botan { * This class represents discrete logarithm groups. It holds a prime p, * a prime q = (p-1)/2 and g = x^((p-1)/q) mod p. */ -class BOTAN_DLL DL_Group +class BOTAN_PUBLIC_API(2,0) DL_Group { public: diff --git a/src/lib/pubkey/dlies/dlies.h b/src/lib/pubkey/dlies/dlies.h index 54b8f3f48..8220356c1 100644 --- a/src/lib/pubkey/dlies/dlies.h +++ b/src/lib/pubkey/dlies/dlies.h @@ -20,7 +20,7 @@ namespace Botan { /** * DLIES Encryption */ -class BOTAN_DLL DLIES_Encryptor : public PK_Encryptor +class BOTAN_PUBLIC_API(2,0) DLIES_Encryptor : public PK_Encryptor { public: /** @@ -93,7 +93,7 @@ class BOTAN_DLL DLIES_Encryptor : public PK_Encryptor /** * DLIES Decryption */ -class BOTAN_DLL DLIES_Decryptor : public PK_Decryptor +class BOTAN_PUBLIC_API(2,0) DLIES_Decryptor : public PK_Decryptor { public: /** diff --git a/src/lib/pubkey/dsa/dsa.h b/src/lib/pubkey/dsa/dsa.h index 8fa338748..085439c99 100644 --- a/src/lib/pubkey/dsa/dsa.h +++ b/src/lib/pubkey/dsa/dsa.h @@ -15,7 +15,7 @@ namespace Botan { /** * DSA Public Key */ -class BOTAN_DLL DSA_PublicKey : public virtual DL_Scheme_PublicKey +class BOTAN_PUBLIC_API(2,0) DSA_PublicKey : public virtual DL_Scheme_PublicKey { public: std::string algo_name() const override { return "DSA"; } @@ -52,7 +52,7 @@ class BOTAN_DLL DSA_PublicKey : public virtual DL_Scheme_PublicKey /** * DSA Private Key */ -class BOTAN_DLL DSA_PrivateKey : public DSA_PublicKey, +class BOTAN_PUBLIC_API(2,0) DSA_PrivateKey : public DSA_PublicKey, public virtual DL_Scheme_PrivateKey { public: diff --git a/src/lib/pubkey/ec_group/ec_group.h b/src/lib/pubkey/ec_group/ec_group.h index a2cd4d719..0bedd4f52 100644 --- a/src/lib/pubkey/ec_group/ec_group.h +++ b/src/lib/pubkey/ec_group/ec_group.h @@ -28,7 +28,7 @@ enum EC_Group_Encoding { /** * Class representing an elliptic curve */ -class BOTAN_DLL EC_Group +class BOTAN_PUBLIC_API(2,0) EC_Group { public: diff --git a/src/lib/pubkey/ecc_key/ecc_key.h b/src/lib/pubkey/ecc_key/ecc_key.h index fc60bb17c..11363b613 100644 --- a/src/lib/pubkey/ecc_key/ecc_key.h +++ b/src/lib/pubkey/ecc_key/ecc_key.h @@ -26,7 +26,7 @@ namespace Botan { * cannot be used for verification until its domain parameters are set * by calling the corresponding member function. */ -class BOTAN_DLL EC_PublicKey : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) EC_PublicKey : public virtual Public_Key { public: /** @@ -107,7 +107,7 @@ class BOTAN_DLL EC_PublicKey : public virtual Public_Key /** * This abstract class represents ECC private keys */ -class BOTAN_DLL EC_PrivateKey : public virtual EC_PublicKey, +class BOTAN_PUBLIC_API(2,0) EC_PrivateKey : public virtual EC_PublicKey, public virtual Private_Key { public: diff --git a/src/lib/pubkey/ecdh/ecdh.h b/src/lib/pubkey/ecdh/ecdh.h index baa3f6f94..630917969 100644 --- a/src/lib/pubkey/ecdh/ecdh.h +++ b/src/lib/pubkey/ecdh/ecdh.h @@ -17,7 +17,7 @@ namespace Botan { /** * This class represents ECDH Public Keys. */ -class BOTAN_DLL ECDH_PublicKey : public virtual EC_PublicKey +class BOTAN_PUBLIC_API(2,0) ECDH_PublicKey : public virtual EC_PublicKey { public: /** @@ -63,7 +63,7 @@ class BOTAN_DLL ECDH_PublicKey : public virtual EC_PublicKey /** * This class represents ECDH Private Keys. */ -class BOTAN_DLL ECDH_PrivateKey : public ECDH_PublicKey, +class BOTAN_PUBLIC_API(2,0) ECDH_PrivateKey : public ECDH_PublicKey, public EC_PrivateKey, public PK_Key_Agreement_Key { diff --git a/src/lib/pubkey/ecdsa/ecdsa.h b/src/lib/pubkey/ecdsa/ecdsa.h index 304a27776..2af571c9b 100644 --- a/src/lib/pubkey/ecdsa/ecdsa.h +++ b/src/lib/pubkey/ecdsa/ecdsa.h @@ -17,7 +17,7 @@ namespace Botan { /** * This class represents ECDSA Public Keys. */ -class BOTAN_DLL ECDSA_PublicKey : public virtual EC_PublicKey +class BOTAN_PUBLIC_API(2,0) ECDSA_PublicKey : public virtual EC_PublicKey { public: @@ -60,7 +60,7 @@ class BOTAN_DLL ECDSA_PublicKey : public virtual EC_PublicKey /** * This class represents ECDSA Private Keys */ -class BOTAN_DLL ECDSA_PrivateKey : public ECDSA_PublicKey, +class BOTAN_PUBLIC_API(2,0) ECDSA_PrivateKey : public ECDSA_PublicKey, public EC_PrivateKey { public: diff --git a/src/lib/pubkey/ecgdsa/ecgdsa.h b/src/lib/pubkey/ecgdsa/ecgdsa.h index 06a675531..4a9f62240 100644 --- a/src/lib/pubkey/ecgdsa/ecgdsa.h +++ b/src/lib/pubkey/ecgdsa/ecgdsa.h @@ -15,7 +15,7 @@ namespace Botan { /** * This class represents ECGDSA public keys. */ -class BOTAN_DLL ECGDSA_PublicKey : public virtual EC_PublicKey +class BOTAN_PUBLIC_API(2,0) ECGDSA_PublicKey : public virtual EC_PublicKey { public: @@ -58,7 +58,7 @@ class BOTAN_DLL ECGDSA_PublicKey : public virtual EC_PublicKey /** * This class represents ECGDSA private keys. */ -class BOTAN_DLL ECGDSA_PrivateKey : public ECGDSA_PublicKey, +class BOTAN_PUBLIC_API(2,0) ECGDSA_PrivateKey : public ECGDSA_PublicKey, public EC_PrivateKey { public: diff --git a/src/lib/pubkey/ecies/ecies.h b/src/lib/pubkey/ecies/ecies.h index 958ef1b9e..a5d2538cb 100644 --- a/src/lib/pubkey/ecies/ecies.h +++ b/src/lib/pubkey/ecies/ecies.h @@ -56,7 +56,7 @@ inline ECIES_Flags operator &(ECIES_Flags a, ECIES_Flags b) /** * Parameters for ECIES secret derivation */ -class BOTAN_DLL ECIES_KA_Params +class BOTAN_PUBLIC_API(2,0) ECIES_KA_Params { public: /** @@ -122,7 +122,7 @@ class BOTAN_DLL ECIES_KA_Params }; -class BOTAN_DLL ECIES_System_Params : public ECIES_KA_Params +class BOTAN_PUBLIC_API(2,0) ECIES_System_Params : public ECIES_KA_Params { public: /** @@ -183,7 +183,7 @@ class BOTAN_DLL ECIES_System_Params : public ECIES_KA_Params /** * ECIES secret derivation according to ISO 18033-2 */ -class BOTAN_DLL ECIES_KA_Operation +class BOTAN_PUBLIC_API(2,0) ECIES_KA_Operation { public: /** @@ -215,7 +215,7 @@ class BOTAN_DLL ECIES_KA_Operation /** * ECIES Encryption according to ISO 18033-2 */ -class BOTAN_DLL ECIES_Encryptor : public PK_Encryptor +class BOTAN_PUBLIC_API(2,0) ECIES_Encryptor : public PK_Encryptor { public: /** @@ -272,7 +272,7 @@ class BOTAN_DLL ECIES_Encryptor : public PK_Encryptor /** * ECIES Decryption according to ISO 18033-2 */ -class BOTAN_DLL ECIES_Decryptor : public PK_Decryptor +class BOTAN_PUBLIC_API(2,0) ECIES_Decryptor : public PK_Decryptor { public: /** diff --git a/src/lib/pubkey/eckcdsa/eckcdsa.h b/src/lib/pubkey/eckcdsa/eckcdsa.h index 3959c5f78..0ee8abd21 100644 --- a/src/lib/pubkey/eckcdsa/eckcdsa.h +++ b/src/lib/pubkey/eckcdsa/eckcdsa.h @@ -15,7 +15,7 @@ namespace Botan { /** * This class represents ECKCDSA public keys. */ -class BOTAN_DLL ECKCDSA_PublicKey : public virtual EC_PublicKey +class BOTAN_PUBLIC_API(2,0) ECKCDSA_PublicKey : public virtual EC_PublicKey { public: @@ -58,7 +58,7 @@ class BOTAN_DLL ECKCDSA_PublicKey : public virtual EC_PublicKey /** * This class represents ECKCDSA private keys. */ -class BOTAN_DLL ECKCDSA_PrivateKey : public ECKCDSA_PublicKey, +class BOTAN_PUBLIC_API(2,0) ECKCDSA_PrivateKey : public ECKCDSA_PublicKey, public EC_PrivateKey { public: diff --git a/src/lib/pubkey/elgamal/elgamal.h b/src/lib/pubkey/elgamal/elgamal.h index 33345d56f..1afe89414 100644 --- a/src/lib/pubkey/elgamal/elgamal.h +++ b/src/lib/pubkey/elgamal/elgamal.h @@ -15,7 +15,7 @@ namespace Botan { /** * ElGamal Public Key */ -class BOTAN_DLL ElGamal_PublicKey : public virtual DL_Scheme_PublicKey +class BOTAN_PUBLIC_API(2,0) ElGamal_PublicKey : public virtual DL_Scheme_PublicKey { public: std::string algo_name() const override { return "ElGamal"; } @@ -50,7 +50,7 @@ class BOTAN_DLL ElGamal_PublicKey : public virtual DL_Scheme_PublicKey /** * ElGamal Private Key */ -class BOTAN_DLL ElGamal_PrivateKey : public ElGamal_PublicKey, +class BOTAN_PUBLIC_API(2,0) ElGamal_PrivateKey : public ElGamal_PublicKey, public virtual DL_Scheme_PrivateKey { public: diff --git a/src/lib/pubkey/gost_3410/gost_3410.h b/src/lib/pubkey/gost_3410/gost_3410.h index c6fc148ca..85ac55ed3 100644 --- a/src/lib/pubkey/gost_3410/gost_3410.h +++ b/src/lib/pubkey/gost_3410/gost_3410.h @@ -17,7 +17,7 @@ namespace Botan { /** * GOST-34.10 Public Key */ -class BOTAN_DLL GOST_3410_PublicKey : public virtual EC_PublicKey +class BOTAN_PUBLIC_API(2,0) GOST_3410_PublicKey : public virtual EC_PublicKey { public: @@ -64,7 +64,7 @@ class BOTAN_DLL GOST_3410_PublicKey : public virtual EC_PublicKey /** * GOST-34.10 Private Key */ -class BOTAN_DLL GOST_3410_PrivateKey : public GOST_3410_PublicKey, +class BOTAN_PUBLIC_API(2,0) GOST_3410_PrivateKey : public GOST_3410_PublicKey, public EC_PrivateKey { public: diff --git a/src/lib/pubkey/keypair/keypair.h b/src/lib/pubkey/keypair/keypair.h index 894749583..ed7672340 100644 --- a/src/lib/pubkey/keypair/keypair.h +++ b/src/lib/pubkey/keypair/keypair.h @@ -23,7 +23,7 @@ namespace KeyPair { * @param padding the encryption padding method to use * @return true if consistent otherwise false */ -BOTAN_DLL bool +BOTAN_PUBLIC_API(2,0) bool encryption_consistency_check(RandomNumberGenerator& rng, const Private_Key& private_key, const Public_Key& public_key, @@ -38,7 +38,7 @@ encryption_consistency_check(RandomNumberGenerator& rng, * @param padding the signature padding method to use * @return true if consistent otherwise false */ -BOTAN_DLL bool +BOTAN_PUBLIC_API(2,0) bool signature_consistency_check(RandomNumberGenerator& rng, const Private_Key& private_key, const Public_Key& public_key, diff --git a/src/lib/pubkey/mce/gf2m_small_m.h b/src/lib/pubkey/mce/gf2m_small_m.h index d8c5f5b8f..b15061267 100644 --- a/src/lib/pubkey/mce/gf2m_small_m.h +++ b/src/lib/pubkey/mce/gf2m_small_m.h @@ -22,7 +22,7 @@ typedef uint16_t gf2m; /** * GF(2^m) field for m = [2...16] */ -class BOTAN_DLL GF2m_Field +class BOTAN_PUBLIC_API(2,0) GF2m_Field { public: explicit GF2m_Field(size_t extdeg); diff --git a/src/lib/pubkey/mce/mceliece.h b/src/lib/pubkey/mce/mceliece.h index 946083128..d18888784 100644 --- a/src/lib/pubkey/mce/mceliece.h +++ b/src/lib/pubkey/mce/mceliece.h @@ -18,7 +18,7 @@ namespace Botan { -class BOTAN_DLL McEliece_PublicKey : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) McEliece_PublicKey : public virtual Public_Key { public: explicit McEliece_PublicKey(const std::vector<uint8_t>& key_bits); @@ -67,7 +67,7 @@ class BOTAN_DLL McEliece_PublicKey : public virtual Public_Key uint32_t m_code_length; }; -class BOTAN_DLL McEliece_PrivateKey : public virtual McEliece_PublicKey, +class BOTAN_PUBLIC_API(2,0) McEliece_PrivateKey : public virtual McEliece_PublicKey, public virtual Private_Key { public: @@ -129,7 +129,7 @@ class BOTAN_DLL McEliece_PrivateKey : public virtual McEliece_PublicKey, * Estimate work factor for McEliece * @return estimated security level for these key parameters */ -BOTAN_DLL size_t mceliece_work_factor(size_t code_size, size_t t); +BOTAN_PUBLIC_API(2,0) size_t mceliece_work_factor(size_t code_size, size_t t); } diff --git a/src/lib/pubkey/mceies/mceies.h b/src/lib/pubkey/mceies/mceies.h index 372404cc1..a60f56e9b 100644 --- a/src/lib/pubkey/mceies/mceies.h +++ b/src/lib/pubkey/mceies/mceies.h @@ -22,7 +22,7 @@ class McEliece_PrivateKey; * plaintext and AD using AES-256 in OCB mode. */ secure_vector<uint8_t> -BOTAN_DLL mceies_encrypt(const McEliece_PublicKey& pubkey, +BOTAN_PUBLIC_API(2,0) mceies_encrypt(const McEliece_PublicKey& pubkey, const uint8_t pt[], size_t pt_len, const uint8_t ad[], size_t ad_len, RandomNumberGenerator& rng, @@ -34,7 +34,7 @@ BOTAN_DLL mceies_encrypt(const McEliece_PublicKey& pubkey, * ciphertext and AD using AES-256 in OCB mode. */ secure_vector<uint8_t> -BOTAN_DLL mceies_decrypt(const McEliece_PrivateKey& privkey, +BOTAN_PUBLIC_API(2,0) mceies_decrypt(const McEliece_PrivateKey& privkey, const uint8_t ct[], size_t ct_len, const uint8_t ad[], size_t ad_len, const std::string& aead = "AES-256/OCB"); diff --git a/src/lib/pubkey/pbes2/pbes2.h b/src/lib/pubkey/pbes2/pbes2.h index 951ba3178..0eaa6e2cf 100644 --- a/src/lib/pubkey/pbes2/pbes2.h +++ b/src/lib/pubkey/pbes2/pbes2.h @@ -24,7 +24,7 @@ namespace Botan { * @param rng a random number generator */ std::pair<AlgorithmIdentifier, std::vector<uint8_t>> -BOTAN_DLL pbes2_encrypt(const secure_vector<uint8_t>& key_bits, +BOTAN_PUBLIC_API(2,0) pbes2_encrypt(const secure_vector<uint8_t>& key_bits, const std::string& passphrase, std::chrono::milliseconds msec, const std::string& cipher, @@ -75,7 +75,7 @@ BOTAN_DLL pbes2_encrypt_iter(const secure_vector<uint8_t>& key_bits, * @param params the PBES2 parameters */ secure_vector<uint8_t> -BOTAN_DLL pbes2_decrypt(const secure_vector<uint8_t>& key_bits, +BOTAN_PUBLIC_API(2,0) pbes2_decrypt(const secure_vector<uint8_t>& key_bits, const std::string& passphrase, const std::vector<uint8_t>& params); diff --git a/src/lib/pubkey/pem/pem.h b/src/lib/pubkey/pem/pem.h index 1f9483ea8..c5f66aaf2 100644 --- a/src/lib/pubkey/pem/pem.h +++ b/src/lib/pubkey/pem/pem.h @@ -21,7 +21,7 @@ namespace PEM_Code { * @param label PEM label put after BEGIN and END * @param line_width after this many characters, a new line is inserted */ -BOTAN_DLL std::string encode(const uint8_t data[], +BOTAN_PUBLIC_API(2,0) std::string encode(const uint8_t data[], size_t data_len, const std::string& label, size_t line_width = 64); @@ -57,7 +57,7 @@ inline std::string encode(const secure_vector<uint8_t>& data, * @param pem a datasource containing PEM encoded data * @param label is set to the PEM label found for later inspection */ -BOTAN_DLL secure_vector<uint8_t> decode(DataSource& pem, +BOTAN_PUBLIC_API(2,0) secure_vector<uint8_t> decode(DataSource& pem, std::string& label); /** @@ -65,7 +65,7 @@ BOTAN_DLL secure_vector<uint8_t> decode(DataSource& pem, * @param pem a string containing PEM encoded data * @param label is set to the PEM label found for later inspection */ -BOTAN_DLL secure_vector<uint8_t> decode(const std::string& pem, +BOTAN_PUBLIC_API(2,0) secure_vector<uint8_t> decode(const std::string& pem, std::string& label); /** @@ -73,7 +73,7 @@ BOTAN_DLL secure_vector<uint8_t> decode(const std::string& pem, * @param pem a datasource containing PEM encoded data * @param label is what we expect the label to be */ -BOTAN_DLL secure_vector<uint8_t> decode_check_label( +BOTAN_PUBLIC_API(2,0) secure_vector<uint8_t> decode_check_label( DataSource& pem, const std::string& label); @@ -82,14 +82,14 @@ BOTAN_DLL secure_vector<uint8_t> decode_check_label( * @param pem a string containing PEM encoded data * @param label is what we expect the label to be */ -BOTAN_DLL secure_vector<uint8_t> decode_check_label( +BOTAN_PUBLIC_API(2,0) secure_vector<uint8_t> decode_check_label( const std::string& pem, const std::string& label); /** * Heuristic test for PEM data. */ -BOTAN_DLL bool matches(DataSource& source, +BOTAN_PUBLIC_API(2,0) bool matches(DataSource& source, const std::string& extra = "", size_t search_range = 4096); diff --git a/src/lib/pubkey/pk_algs.h b/src/lib/pubkey/pk_algs.h index 5deded423..b215914c1 100644 --- a/src/lib/pubkey/pk_algs.h +++ b/src/lib/pubkey/pk_algs.h @@ -14,11 +14,11 @@ namespace Botan { -BOTAN_DLL std::unique_ptr<Public_Key> +BOTAN_PUBLIC_API(2,0) std::unique_ptr<Public_Key> load_public_key(const AlgorithmIdentifier& alg_id, const std::vector<uint8_t>& key_bits); -BOTAN_DLL std::unique_ptr<Private_Key> +BOTAN_PUBLIC_API(2,0) std::unique_ptr<Private_Key> load_private_key(const AlgorithmIdentifier& alg_id, const secure_vector<uint8_t>& key_bits); @@ -30,7 +30,7 @@ load_private_key(const AlgorithmIdentifier& alg_id, * For McEliece, algo_params is n,t * If algo_params is left empty, suitable default parameters are chosen. */ -BOTAN_DLL std::unique_ptr<Private_Key> +BOTAN_PUBLIC_API(2,0) std::unique_ptr<Private_Key> create_private_key(const std::string& algo_name, RandomNumberGenerator& rng, const std::string& algo_params = "", diff --git a/src/lib/pubkey/pk_keys.h b/src/lib/pubkey/pk_keys.h index 13e0dc768..dacd68412 100644 --- a/src/lib/pubkey/pk_keys.h +++ b/src/lib/pubkey/pk_keys.h @@ -21,7 +21,7 @@ class RandomNumberGenerator; /** * Public Key Base Class. */ -class BOTAN_DLL Public_Key +class BOTAN_PUBLIC_API(2,0) Public_Key { public: Public_Key() =default; @@ -163,7 +163,7 @@ class BOTAN_DLL Public_Key /** * Private Key Base Class */ -class BOTAN_DLL Private_Key : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) Private_Key : public virtual Public_Key { public: Private_Key() = default; @@ -268,7 +268,7 @@ class BOTAN_DLL Private_Key : public virtual Public_Key /** * PK Secret Value Derivation Key */ -class BOTAN_DLL PK_Key_Agreement_Key : public virtual Private_Key +class BOTAN_PUBLIC_API(2,0) PK_Key_Agreement_Key : public virtual Private_Key { public: /* diff --git a/src/lib/pubkey/pk_ops.h b/src/lib/pubkey/pk_ops.h index d270954f9..40e541ddb 100644 --- a/src/lib/pubkey/pk_ops.h +++ b/src/lib/pubkey/pk_ops.h @@ -33,7 +33,7 @@ namespace PK_Ops { /** * Public key encryption interface */ -class BOTAN_DLL Encryption +class BOTAN_PUBLIC_API(2,0) Encryption { public: virtual secure_vector<uint8_t> encrypt(const uint8_t msg[], @@ -48,7 +48,7 @@ class BOTAN_DLL Encryption /** * Public key decryption interface */ -class BOTAN_DLL Decryption +class BOTAN_PUBLIC_API(2,0) Decryption { public: virtual secure_vector<uint8_t> decrypt(uint8_t& valid_mask, @@ -61,7 +61,7 @@ class BOTAN_DLL Decryption /** * Public key signature verification interface */ -class BOTAN_DLL Verification +class BOTAN_PUBLIC_API(2,0) Verification { public: /* @@ -83,7 +83,7 @@ class BOTAN_DLL Verification /** * Public key signature creation interface */ -class BOTAN_DLL Signature +class BOTAN_PUBLIC_API(2,0) Signature { public: /* @@ -105,7 +105,7 @@ class BOTAN_DLL Signature /** * A generic key agreement operation (eg DH or ECDH) */ -class BOTAN_DLL Key_Agreement +class BOTAN_PUBLIC_API(2,0) Key_Agreement { public: virtual secure_vector<uint8_t> agree(size_t key_len, @@ -118,7 +118,7 @@ class BOTAN_DLL Key_Agreement /** * KEM (key encapsulation) */ -class BOTAN_DLL KEM_Encryption +class BOTAN_PUBLIC_API(2,0) KEM_Encryption { public: virtual void kem_encrypt(secure_vector<uint8_t>& out_encapsulated_key, @@ -131,7 +131,7 @@ class BOTAN_DLL KEM_Encryption virtual ~KEM_Encryption() = default; }; -class BOTAN_DLL KEM_Decryption +class BOTAN_PUBLIC_API(2,0) KEM_Decryption { public: virtual secure_vector<uint8_t> kem_decrypt(const uint8_t encap_key[], diff --git a/src/lib/pubkey/pkcs8.h b/src/lib/pubkey/pkcs8.h index 71f10dd2f..e7799ebe0 100644 --- a/src/lib/pubkey/pkcs8.h +++ b/src/lib/pubkey/pkcs8.h @@ -17,7 +17,7 @@ namespace Botan { /** * PKCS #8 General Exception */ -struct BOTAN_DLL PKCS8_Exception : public Decoding_Error +struct BOTAN_PUBLIC_API(2,0) PKCS8_Exception : public Decoding_Error { explicit PKCS8_Exception(const std::string& error) : Decoding_Error("PKCS #8: " + error) {} @@ -33,14 +33,14 @@ namespace PKCS8 { * @param key the private key to encode * @return BER encoded key */ -BOTAN_DLL secure_vector<uint8_t> BER_encode(const Private_Key& key); +BOTAN_PUBLIC_API(2,0) secure_vector<uint8_t> BER_encode(const Private_Key& key); /** * Get a string containing a PEM encoded private key. * @param key the key to encode * @return encoded key */ -BOTAN_DLL std::string PEM_encode(const Private_Key& key); +BOTAN_PUBLIC_API(2,0) std::string PEM_encode(const Private_Key& key); /** * Encrypt a key using PKCS #8 encryption @@ -53,7 +53,7 @@ BOTAN_DLL std::string PEM_encode(const Private_Key& key); default will be chosen. * @return encrypted key in binary BER form */ -BOTAN_DLL std::vector<uint8_t> +BOTAN_PUBLIC_API(2,0) std::vector<uint8_t> BER_encode(const Private_Key& key, RandomNumberGenerator& rng, const std::string& pass, @@ -72,7 +72,7 @@ BER_encode(const Private_Key& key, default will be chosen. * @return encrypted key in PEM form */ -BOTAN_DLL std::string +BOTAN_PUBLIC_API(2,0) std::string PEM_encode(const Private_Key& key, RandomNumberGenerator& rng, const std::string& pass, @@ -177,7 +177,7 @@ PEM_encode_encrypted_pbkdf_msec(const Private_Key& key, * @param get_passphrase a function that returns passphrases * @return loaded private key object */ -BOTAN_DLL Private_Key* load_key(DataSource& source, +BOTAN_PUBLIC_API(2,0) Private_Key* load_key(DataSource& source, RandomNumberGenerator& rng, std::function<std::string ()> get_passphrase); @@ -187,7 +187,7 @@ BOTAN_DLL Private_Key* load_key(DataSource& source, * @param pass the passphrase to decrypt the key * @return loaded private key object */ -BOTAN_DLL Private_Key* load_key(DataSource& source, +BOTAN_PUBLIC_API(2,0) Private_Key* load_key(DataSource& source, RandomNumberGenerator& rng, const std::string& pass); @@ -196,7 +196,7 @@ BOTAN_DLL Private_Key* load_key(DataSource& source, * @param rng ignored for compatability * @return loaded private key object */ -BOTAN_DLL Private_Key* load_key(DataSource& source, +BOTAN_PUBLIC_API(2,0) Private_Key* load_key(DataSource& source, RandomNumberGenerator& rng); #if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM) @@ -207,7 +207,7 @@ BOTAN_DLL Private_Key* load_key(DataSource& source, * @param get_passphrase a function that returns passphrases * @return loaded private key object */ -BOTAN_DLL Private_Key* load_key(const std::string& filename, +BOTAN_PUBLIC_API(2,0) Private_Key* load_key(const std::string& filename, RandomNumberGenerator& rng, std::function<std::string ()> get_passphrase); @@ -217,7 +217,7 @@ BOTAN_DLL Private_Key* load_key(const std::string& filename, * @param pass the passphrase to decrypt the key * @return loaded private key object */ -BOTAN_DLL Private_Key* load_key(const std::string& filename, +BOTAN_PUBLIC_API(2,0) Private_Key* load_key(const std::string& filename, RandomNumberGenerator& rng, const std::string& pass); @@ -226,7 +226,7 @@ BOTAN_DLL Private_Key* load_key(const std::string& filename, * @param rng ignored for compatability * @return loaded private key object */ -BOTAN_DLL Private_Key* load_key(const std::string& filename, +BOTAN_PUBLIC_API(2,0) Private_Key* load_key(const std::string& filename, RandomNumberGenerator& rng); #endif @@ -236,7 +236,7 @@ BOTAN_DLL Private_Key* load_key(const std::string& filename, * @param rng ignored for compatability * @return new copy of the key */ -BOTAN_DLL Private_Key* copy_key(const Private_Key& key, +BOTAN_PUBLIC_API(2,0) Private_Key* copy_key(const Private_Key& key, RandomNumberGenerator& rng); } diff --git a/src/lib/pubkey/pubkey.h b/src/lib/pubkey/pubkey.h index 93eb07894..e1bf4a421 100644 --- a/src/lib/pubkey/pubkey.h +++ b/src/lib/pubkey/pubkey.h @@ -32,7 +32,7 @@ enum Signature_Format { IEEE_1363, DER_SEQUENCE }; * Public Key Encryptor * This is the primary interface for public key encryption */ -class BOTAN_DLL PK_Encryptor +class BOTAN_PUBLIC_API(2,0) PK_Encryptor { public: @@ -82,7 +82,7 @@ class BOTAN_DLL PK_Encryptor /** * Public Key Decryptor */ -class BOTAN_DLL PK_Decryptor +class BOTAN_PUBLIC_API(2,0) PK_Decryptor { public: /** @@ -158,7 +158,7 @@ class BOTAN_DLL PK_Decryptor * messages. Use multiple calls update() to process large messages and * generate the signature by finally calling signature(). */ -class BOTAN_DLL PK_Signer final +class BOTAN_PUBLIC_API(2,0) PK_Signer final { public: @@ -285,7 +285,7 @@ class BOTAN_DLL PK_Signer final * messages. Use multiple calls update() to process large messages and * verify the signature by finally calling check_signature(). */ -class BOTAN_DLL PK_Verifier final +class BOTAN_PUBLIC_API(2,0) PK_Verifier final { public: /** @@ -397,7 +397,7 @@ class BOTAN_DLL PK_Verifier final /** * Key used for key agreement */ -class BOTAN_DLL PK_Key_Agreement final +class BOTAN_PUBLIC_API(2,0) PK_Key_Agreement final { public: @@ -507,7 +507,7 @@ class BOTAN_DLL PK_Key_Agreement final * Encryption using a standard message recovery algorithm like RSA or * ElGamal, paired with an encoding scheme like OAEP. */ -class BOTAN_DLL PK_Encryptor_EME final : public PK_Encryptor +class BOTAN_PUBLIC_API(2,0) PK_Encryptor_EME final : public PK_Encryptor { public: size_t maximum_input_size() const override; @@ -551,7 +551,7 @@ class BOTAN_DLL PK_Encryptor_EME final : public PK_Encryptor /** * Decryption with an MR algorithm and an EME. */ -class BOTAN_DLL PK_Decryptor_EME final : public PK_Decryptor +class BOTAN_PUBLIC_API(2,0) PK_Decryptor_EME final : public PK_Decryptor { public: /** @@ -594,7 +594,7 @@ class BOTAN_DLL PK_Decryptor_EME final : public PK_Decryptor /** * Public Key Key Encapsulation Mechanism Encryption. */ -class BOTAN_DLL PK_KEM_Encryptor final +class BOTAN_PUBLIC_API(2,0) PK_KEM_Encryptor final { public: /** @@ -688,7 +688,7 @@ class BOTAN_DLL PK_KEM_Encryptor final /** * Public Key Key Encapsulation Mechanism Decryption. */ -class BOTAN_DLL PK_KEM_Decryptor final +class BOTAN_PUBLIC_API(2,0) PK_KEM_Decryptor final { public: /** diff --git a/src/lib/pubkey/rfc6979/rfc6979.h b/src/lib/pubkey/rfc6979/rfc6979.h index 90b4e3697..752386f43 100644 --- a/src/lib/pubkey/rfc6979/rfc6979.h +++ b/src/lib/pubkey/rfc6979/rfc6979.h @@ -16,7 +16,7 @@ namespace Botan { class HMAC_DRBG; -class BOTAN_DLL RFC6979_Nonce_Generator +class BOTAN_PUBLIC_API(2,0) RFC6979_Nonce_Generator { public: /** @@ -43,7 +43,7 @@ class BOTAN_DLL RFC6979_Nonce_Generator * @param h the message hash already reduced mod q * @param hash the hash function used to generate h */ -BigInt BOTAN_DLL generate_rfc6979_nonce(const BigInt& x, +BigInt BOTAN_PUBLIC_API(2,0) generate_rfc6979_nonce(const BigInt& x, const BigInt& q, const BigInt& h, const std::string& hash); diff --git a/src/lib/pubkey/rsa/rsa.h b/src/lib/pubkey/rsa/rsa.h index 89555b51b..419219c3f 100644 --- a/src/lib/pubkey/rsa/rsa.h +++ b/src/lib/pubkey/rsa/rsa.h @@ -16,7 +16,7 @@ namespace Botan { /** * RSA Public Key */ -class BOTAN_DLL RSA_PublicKey : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) RSA_PublicKey : public virtual Public_Key { public: /** @@ -79,7 +79,7 @@ class BOTAN_DLL RSA_PublicKey : public virtual Public_Key /** * RSA Private Key */ -class BOTAN_DLL RSA_PrivateKey : public Private_Key, public RSA_PublicKey +class BOTAN_PUBLIC_API(2,0) RSA_PrivateKey : public Private_Key, public RSA_PublicKey { public: /** diff --git a/src/lib/pubkey/workfactor.h b/src/lib/pubkey/workfactor.h index 1fccc1a1b..d0cdf6730 100644 --- a/src/lib/pubkey/workfactor.h +++ b/src/lib/pubkey/workfactor.h @@ -17,7 +17,7 @@ namespace Botan { * @param prime_group_size size of the group in bits * @return estimated security level for this group */ -BOTAN_DLL size_t dl_work_factor(size_t prime_group_size); +BOTAN_PUBLIC_API(2,0) size_t dl_work_factor(size_t prime_group_size); /** * Return the appropriate exponent size to use for a particular prime @@ -29,21 +29,21 @@ BOTAN_DLL size_t dl_work_factor(size_t prime_group_size); * algorithm can compute the DL in sqrt(x) operations) while minimizing * the exponent size for performance reasons. */ -BOTAN_DLL size_t dl_exponent_size(size_t prime_group_size); +BOTAN_PUBLIC_API(2,0) size_t dl_exponent_size(size_t prime_group_size); /** * Estimate work factor for integer factorization * @param n_bits size of modulus in bits * @return estimated security level for this modulus */ -BOTAN_DLL size_t if_work_factor(size_t n_bits); +BOTAN_PUBLIC_API(2,0) size_t if_work_factor(size_t n_bits); /** * Estimate work factor for EC discrete logarithm * @param prime_group_size size of the group in bits * @return estimated security level for this group */ -BOTAN_DLL size_t ecp_work_factor(size_t prime_group_size); +BOTAN_PUBLIC_API(2,0) size_t ecp_work_factor(size_t prime_group_size); } diff --git a/src/lib/pubkey/x509_key.h b/src/lib/pubkey/x509_key.h index 1844e6568..b3c1cd969 100644 --- a/src/lib/pubkey/x509_key.h +++ b/src/lib/pubkey/x509_key.h @@ -30,21 +30,21 @@ namespace X509 { * @param key the public key to encode * @return BER encoding of this key */ -BOTAN_DLL std::vector<uint8_t> BER_encode(const Public_Key& key); +BOTAN_PUBLIC_API(2,0) std::vector<uint8_t> BER_encode(const Public_Key& key); /** * PEM encode a public key into a string. * @param key the key to encode * @return PEM encoded key */ -BOTAN_DLL std::string PEM_encode(const Public_Key& key); +BOTAN_PUBLIC_API(2,0) std::string PEM_encode(const Public_Key& key); /** * Create a public key from a data source. * @param source the source providing the DER or PEM encoded key * @return new public key object */ -BOTAN_DLL Public_Key* load_key(DataSource& source); +BOTAN_PUBLIC_API(2,0) Public_Key* load_key(DataSource& source); #if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM) /** @@ -52,7 +52,7 @@ BOTAN_DLL Public_Key* load_key(DataSource& source); * @param filename pathname to the file to load * @return new public key object */ -BOTAN_DLL Public_Key* load_key(const std::string& filename); +BOTAN_PUBLIC_API(2,0) Public_Key* load_key(const std::string& filename); #endif /** @@ -60,14 +60,14 @@ BOTAN_DLL Public_Key* load_key(const std::string& filename); * @param enc the memory region containing the DER or PEM encoded key * @return new public key object */ -BOTAN_DLL Public_Key* load_key(const std::vector<uint8_t>& enc); +BOTAN_PUBLIC_API(2,0) Public_Key* load_key(const std::vector<uint8_t>& enc); /** * Copy a key. * @param key the public key to copy * @return new public key object */ -BOTAN_DLL Public_Key* copy_key(const Public_Key& key); +BOTAN_PUBLIC_API(2,0) Public_Key* copy_key(const Public_Key& key); } diff --git a/src/lib/pubkey/xmss/xmss_key_pair.h b/src/lib/pubkey/xmss/xmss_key_pair.h index d6c82af60..3245ea2d2 100644 --- a/src/lib/pubkey/xmss/xmss_key_pair.h +++ b/src/lib/pubkey/xmss/xmss_key_pair.h @@ -20,7 +20,7 @@ namespace Botan { /** * A pair of XMSS public and private key. **/ -class BOTAN_DLL XMSS_Key_Pair +class BOTAN_PUBLIC_API(2,0) XMSS_Key_Pair { public: XMSS_Key_Pair(XMSS_Parameters::xmss_algorithm_t xmss_oid, diff --git a/src/lib/pubkey/xmss/xmss_parameters.h b/src/lib/pubkey/xmss/xmss_parameters.h index 1e8048217..8db49dd02 100644 --- a/src/lib/pubkey/xmss/xmss_parameters.h +++ b/src/lib/pubkey/xmss/xmss_parameters.h @@ -25,7 +25,7 @@ namespace Botan { * https://datatracker.ietf.org/doc/ * draft-irtf-cfrg-xmss-hash-based-signatures/?include_text=1 **/ -class BOTAN_DLL XMSS_Parameters +class BOTAN_PUBLIC_API(2,0) XMSS_Parameters { public: enum xmss_algorithm_t diff --git a/src/lib/pubkey/xmss/xmss_privatekey.h b/src/lib/pubkey/xmss/xmss_privatekey.h index c8db2d7b8..01b64abf7 100644 --- a/src/lib/pubkey/xmss/xmss_privatekey.h +++ b/src/lib/pubkey/xmss/xmss_privatekey.h @@ -37,7 +37,7 @@ namespace Botan { * https://datatracker.ietf.org/doc/ * draft-irtf-cfrg-xmss-hash-based-signatures/?include_text=1 **/ -class BOTAN_DLL XMSS_PrivateKey : public virtual XMSS_PublicKey, +class BOTAN_PUBLIC_API(2,0) XMSS_PrivateKey : public virtual XMSS_PublicKey, public XMSS_Common_Ops, public virtual Private_Key { diff --git a/src/lib/pubkey/xmss/xmss_publickey.h b/src/lib/pubkey/xmss/xmss_publickey.h index 99e5e0a7e..53a470e06 100644 --- a/src/lib/pubkey/xmss/xmss_publickey.h +++ b/src/lib/pubkey/xmss/xmss_publickey.h @@ -39,7 +39,7 @@ class XMSS_Verification_Operation; * https://datatracker.ietf.org/doc/ * draft-irtf-cfrg-xmss-hash-based-signatures/?include_text=1 **/ -class BOTAN_DLL XMSS_PublicKey : public virtual Public_Key +class BOTAN_PUBLIC_API(2,0) XMSS_PublicKey : public virtual Public_Key { public: /** diff --git a/src/lib/pubkey/xmss/xmss_wots_privatekey.h b/src/lib/pubkey/xmss/xmss_wots_privatekey.h index 445105640..8c8dd2df8 100644 --- a/src/lib/pubkey/xmss/xmss_wots_privatekey.h +++ b/src/lib/pubkey/xmss/xmss_wots_privatekey.h @@ -24,7 +24,7 @@ namespace Botan { /** A Winternitz One Time Signature private key for use with Extended Hash-Based * Signatures. **/ -class BOTAN_DLL XMSS_WOTS_PrivateKey : public virtual XMSS_WOTS_PublicKey, +class BOTAN_PUBLIC_API(2,0) XMSS_WOTS_PrivateKey : public virtual XMSS_WOTS_PublicKey, public virtual Private_Key { public: diff --git a/src/lib/pubkey/xmss/xmss_wots_publickey.h b/src/lib/pubkey/xmss/xmss_wots_publickey.h index eb2f9695b..3e29fe88d 100644 --- a/src/lib/pubkey/xmss/xmss_wots_publickey.h +++ b/src/lib/pubkey/xmss/xmss_wots_publickey.h @@ -29,7 +29,7 @@ typedef std::vector<secure_vector<uint8_t>> wots_keysig_t; * A Winternitz One Time Signature public key for use with Extended Hash-Based * Signatures. **/ -class BOTAN_DLL XMSS_WOTS_PublicKey : virtual public Public_Key +class BOTAN_PUBLIC_API(2,0) XMSS_WOTS_PublicKey : virtual public Public_Key { public: class TreeSignature diff --git a/src/lib/rng/auto_rng/auto_rng.h b/src/lib/rng/auto_rng/auto_rng.h index f634b8ff2..e458f23d9 100644 --- a/src/lib/rng/auto_rng/auto_rng.h +++ b/src/lib/rng/auto_rng/auto_rng.h @@ -17,7 +17,7 @@ class Stateful_RNG; /** * A userspace PRNG */ -class BOTAN_DLL AutoSeeded_RNG final : public RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) AutoSeeded_RNG final : public RandomNumberGenerator { public: void randomize(uint8_t out[], size_t len) override; diff --git a/src/lib/rng/hmac_drbg/hmac_drbg.h b/src/lib/rng/hmac_drbg/hmac_drbg.h index 4d3faa082..8b6799fee 100644 --- a/src/lib/rng/hmac_drbg/hmac_drbg.h +++ b/src/lib/rng/hmac_drbg/hmac_drbg.h @@ -18,7 +18,7 @@ class Entropy_Sources; /** * HMAC_DRBG from NIST SP800-90A */ -class BOTAN_DLL HMAC_DRBG final : public Stateful_RNG +class BOTAN_PUBLIC_API(2,0) HMAC_DRBG final : public Stateful_RNG { public: /** diff --git a/src/lib/rng/rdrand_rng/rdrand_rng.h b/src/lib/rng/rdrand_rng/rdrand_rng.h index 73616637e..40331671d 100644 --- a/src/lib/rng/rdrand_rng/rdrand_rng.h +++ b/src/lib/rng/rdrand_rng/rdrand_rng.h @@ -12,7 +12,7 @@ namespace Botan { -class BOTAN_DLL RDRAND_RNG : public Hardware_RNG +class BOTAN_PUBLIC_API(2,0) RDRAND_RNG : public Hardware_RNG { public: /** diff --git a/src/lib/rng/rng.h b/src/lib/rng/rng.h index 09908ab3c..4a58992be 100644 --- a/src/lib/rng/rng.h +++ b/src/lib/rng/rng.h @@ -22,7 +22,7 @@ class Entropy_Sources; /** * An interface to a cryptographic random number generator */ -class BOTAN_DLL RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) RandomNumberGenerator { public: virtual ~RandomNumberGenerator() = default; @@ -177,7 +177,7 @@ typedef RandomNumberGenerator RNG; * Hardware_RNG has no members but exists to tag hardware RNG types * (PKCS11_RNG, TPM_RNG, RDRAND_RNG) */ -class BOTAN_DLL Hardware_RNG : public RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) Hardware_RNG : public RandomNumberGenerator { }; @@ -185,7 +185,7 @@ class BOTAN_DLL Hardware_RNG : public RandomNumberGenerator * Null/stub RNG - fails if you try to use it for anything * This is not generally useful except for in certain tests */ -class BOTAN_DLL Null_RNG final : public RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) Null_RNG final : public RandomNumberGenerator { public: bool is_seeded() const override { return false; } @@ -208,7 +208,7 @@ class BOTAN_DLL Null_RNG final : public RandomNumberGenerator * Note that most of the time it's much better to use a RNG per thread * otherwise the RNG will act as an unnecessary contention point */ -class BOTAN_DLL Serialized_RNG final : public RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) Serialized_RNG final : public RandomNumberGenerator { public: void randomize(uint8_t out[], size_t len) override diff --git a/src/lib/rng/stateful_rng/stateful_rng.h b/src/lib/rng/stateful_rng/stateful_rng.h index d02be5659..521ad082e 100644 --- a/src/lib/rng/stateful_rng/stateful_rng.h +++ b/src/lib/rng/stateful_rng/stateful_rng.h @@ -22,7 +22,7 @@ namespace Botan { * Not implemented by RNGs which access an external RNG, such as the * system PRNG or a hardware RNG. */ -class BOTAN_DLL Stateful_RNG : public RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) Stateful_RNG : public RandomNumberGenerator { public: /** diff --git a/src/lib/rng/system_rng/system_rng.h b/src/lib/rng/system_rng/system_rng.h index a31bb1dba..d3566c53e 100644 --- a/src/lib/rng/system_rng/system_rng.h +++ b/src/lib/rng/system_rng/system_rng.h @@ -17,12 +17,12 @@ namespace Botan { * operating system. For instance might be instantiated by /dev/urandom * or CryptGenRandom. */ -BOTAN_DLL RandomNumberGenerator& system_rng(); +BOTAN_PUBLIC_API(2,0) RandomNumberGenerator& system_rng(); /* * Instantiable reference to the system RNG. */ -class BOTAN_DLL System_RNG final : public RandomNumberGenerator +class BOTAN_PUBLIC_API(2,0) System_RNG final : public RandomNumberGenerator { public: std::string name() const override { return system_rng().name(); } diff --git a/src/lib/stream/chacha/chacha.h b/src/lib/stream/chacha/chacha.h index 64a387ec5..cbe8a7d25 100644 --- a/src/lib/stream/chacha/chacha.h +++ b/src/lib/stream/chacha/chacha.h @@ -15,7 +15,7 @@ namespace Botan { /** * DJB's ChaCha (http://cr.yp.to/chacha.html) */ -class BOTAN_DLL ChaCha final : public StreamCipher +class BOTAN_PUBLIC_API(2,0) ChaCha final : public StreamCipher { public: StreamCipher* clone() const override { return new ChaCha(m_rounds); } diff --git a/src/lib/stream/ctr/ctr.h b/src/lib/stream/ctr/ctr.h index a914cd41f..a91ce65c7 100644 --- a/src/lib/stream/ctr/ctr.h +++ b/src/lib/stream/ctr/ctr.h @@ -16,7 +16,7 @@ namespace Botan { /** * CTR-BE (Counter mode, big-endian) */ -class BOTAN_DLL CTR_BE final : public StreamCipher +class BOTAN_PUBLIC_API(2,0) CTR_BE final : public StreamCipher { public: void cipher(const uint8_t in[], uint8_t out[], size_t length) override; diff --git a/src/lib/stream/ofb/ofb.h b/src/lib/stream/ofb/ofb.h index 29e015227..5be3da44c 100644 --- a/src/lib/stream/ofb/ofb.h +++ b/src/lib/stream/ofb/ofb.h @@ -16,7 +16,7 @@ namespace Botan { /** * Output Feedback Mode */ -class BOTAN_DLL OFB final : public StreamCipher +class BOTAN_PUBLIC_API(2,0) OFB final : public StreamCipher { public: void cipher(const uint8_t in[], uint8_t out[], size_t length) override; diff --git a/src/lib/stream/rc4/rc4.h b/src/lib/stream/rc4/rc4.h index 938ab59cc..5d6ce520e 100644 --- a/src/lib/stream/rc4/rc4.h +++ b/src/lib/stream/rc4/rc4.h @@ -16,7 +16,7 @@ namespace Botan { /** * RC4 stream cipher */ -class BOTAN_DLL RC4 final : public StreamCipher +class BOTAN_PUBLIC_API(2,0) RC4 final : public StreamCipher { public: void cipher(const uint8_t in[], uint8_t out[], size_t length) override; diff --git a/src/lib/stream/salsa20/salsa20.h b/src/lib/stream/salsa20/salsa20.h index 935f5cf85..55f6f4250 100644 --- a/src/lib/stream/salsa20/salsa20.h +++ b/src/lib/stream/salsa20/salsa20.h @@ -15,7 +15,7 @@ namespace Botan { /** * DJB's Salsa20 (and XSalsa20) */ -class BOTAN_DLL Salsa20 final : public StreamCipher +class BOTAN_PUBLIC_API(2,0) Salsa20 final : public StreamCipher { public: void cipher(const uint8_t in[], uint8_t out[], size_t length) override; diff --git a/src/lib/stream/shake_cipher/shake_cipher.h b/src/lib/stream/shake_cipher/shake_cipher.h index e15669f24..ce7cc14ee 100644 --- a/src/lib/stream/shake_cipher/shake_cipher.h +++ b/src/lib/stream/shake_cipher/shake_cipher.h @@ -16,7 +16,7 @@ namespace Botan { /** * SHAKE-128 XOF presented as a stream cipher */ -class BOTAN_DLL SHAKE_128_Cipher final : public StreamCipher +class BOTAN_PUBLIC_API(2,0) SHAKE_128_Cipher final : public StreamCipher { public: SHAKE_128_Cipher(); diff --git a/src/lib/stream/stream_cipher.h b/src/lib/stream/stream_cipher.h index 8a828ed26..1f46a453c 100644 --- a/src/lib/stream/stream_cipher.h +++ b/src/lib/stream/stream_cipher.h @@ -16,7 +16,7 @@ namespace Botan { /** * Base class for all stream ciphers */ -class BOTAN_DLL StreamCipher : public SymmetricAlgorithm +class BOTAN_PUBLIC_API(2,0) StreamCipher : public SymmetricAlgorithm { public: virtual ~StreamCipher() = default; diff --git a/src/lib/tls/credentials_manager.h b/src/lib/tls/credentials_manager.h index bdcdf9ddd..1671665d7 100644 --- a/src/lib/tls/credentials_manager.h +++ b/src/lib/tls/credentials_manager.h @@ -25,7 +25,7 @@ class BigInt; * and "tls-server". Context represents a hostname, email address, * username, or other identifier. */ -class BOTAN_DLL Credentials_Manager +class BOTAN_PUBLIC_API(2,0) Credentials_Manager { public: virtual ~Credentials_Manager() = default; diff --git a/src/lib/tls/sessions_sql/tls_session_manager_sql.h b/src/lib/tls/sessions_sql/tls_session_manager_sql.h index f22d01172..5ad9e6e40 100644 --- a/src/lib/tls/sessions_sql/tls_session_manager_sql.h +++ b/src/lib/tls/sessions_sql/tls_session_manager_sql.h @@ -24,7 +24,7 @@ namespace TLS { * sessions are stored in the database in plaintext. This may be a * serious privacy risk in some situations. */ -class BOTAN_DLL Session_Manager_SQL : public Session_Manager +class BOTAN_PUBLIC_API(2,0) Session_Manager_SQL : public Session_Manager { public: /** diff --git a/src/lib/tls/sessions_sqlite3/tls_session_manager_sqlite.h b/src/lib/tls/sessions_sqlite3/tls_session_manager_sqlite.h index 4a7c175cc..411898051 100644 --- a/src/lib/tls/sessions_sqlite3/tls_session_manager_sqlite.h +++ b/src/lib/tls/sessions_sqlite3/tls_session_manager_sqlite.h @@ -23,7 +23,7 @@ namespace TLS { * sessions are stored in the database in plaintext. This may be a * serious privacy risk in some situations. */ -class BOTAN_DLL +class BOTAN_PUBLIC_API(2,0) Session_Manager_SQLite : public Session_Manager_SQL { public: diff --git a/src/lib/tls/tls_alert.h b/src/lib/tls/tls_alert.h index 1cfc95544..1592a9e50 100644 --- a/src/lib/tls/tls_alert.h +++ b/src/lib/tls/tls_alert.h @@ -18,7 +18,7 @@ namespace TLS { /** * SSL/TLS Alert Message */ -class BOTAN_DLL Alert +class BOTAN_PUBLIC_API(2,0) Alert { public: /** diff --git a/src/lib/tls/tls_blocking.h b/src/lib/tls/tls_blocking.h index d73d723d2..37279be81 100644 --- a/src/lib/tls/tls_blocking.h +++ b/src/lib/tls/tls_blocking.h @@ -23,7 +23,7 @@ namespace TLS { * Blocking TLS Client * Can be used directly, or subclass to get handshake and alert notifications */ -class BOTAN_DLL Blocking_Client +class BOTAN_PUBLIC_API(2,0) Blocking_Client { public: /* diff --git a/src/lib/tls/tls_callbacks.h b/src/lib/tls/tls_callbacks.h index cccbb4f7e..207899275 100644 --- a/src/lib/tls/tls_callbacks.h +++ b/src/lib/tls/tls_callbacks.h @@ -32,7 +32,7 @@ class Policy; * Encapsulates the callbacks that a TLS channel will make which are due to * channel specific operations. */ -class BOTAN_DLL Callbacks +class BOTAN_PUBLIC_API(2,0) Callbacks { public: virtual ~Callbacks() = default; @@ -197,7 +197,7 @@ class BOTAN_DLL Callbacks * This type is only provided for backward compatibility. * New implementations should derive from TLS::Callbacks instead. */ -class BOTAN_DLL Compat_Callbacks final : public Callbacks +class BOTAN_PUBLIC_API(2,0) Compat_Callbacks final : public Callbacks { public: typedef std::function<void (const uint8_t[], size_t)> output_fn; diff --git a/src/lib/tls/tls_cbc/tls_cbc.h b/src/lib/tls/tls_cbc/tls_cbc.h index d281c36f3..36c6e27f0 100644 --- a/src/lib/tls/tls_cbc/tls_cbc.h +++ b/src/lib/tls/tls_cbc/tls_cbc.h @@ -21,7 +21,7 @@ namespace TLS { * TLS CBC+HMAC AEAD base class (GenericBlockCipher in TLS spec) * This is the weird TLS-specific mode, not for general consumption. */ -class BOTAN_DLL TLS_CBC_HMAC_AEAD_Mode : public AEAD_Mode +class BOTAN_TEST_API TLS_CBC_HMAC_AEAD_Mode : public AEAD_Mode { public: size_t process(uint8_t buf[], size_t sz) override final; @@ -102,7 +102,7 @@ class BOTAN_DLL TLS_CBC_HMAC_AEAD_Mode : public AEAD_Mode /** * TLS_CBC_HMAC_AEAD Encryption */ -class BOTAN_DLL TLS_CBC_HMAC_AEAD_Encryption final : public TLS_CBC_HMAC_AEAD_Mode +class BOTAN_TEST_API TLS_CBC_HMAC_AEAD_Encryption final : public TLS_CBC_HMAC_AEAD_Mode { public: /** @@ -135,7 +135,7 @@ class BOTAN_DLL TLS_CBC_HMAC_AEAD_Encryption final : public TLS_CBC_HMAC_AEAD_Mo /** * TLS_CBC_HMAC_AEAD Decryption */ -class BOTAN_DLL TLS_CBC_HMAC_AEAD_Decryption final : public TLS_CBC_HMAC_AEAD_Mode +class BOTAN_TEST_API TLS_CBC_HMAC_AEAD_Decryption final : public TLS_CBC_HMAC_AEAD_Mode { public: /** diff --git a/src/lib/tls/tls_channel.h b/src/lib/tls/tls_channel.h index e098d8ef1..a821f4ef4 100644 --- a/src/lib/tls/tls_channel.h +++ b/src/lib/tls/tls_channel.h @@ -33,7 +33,7 @@ class Server_Hello; /** * Generic interface for TLS endpoint */ -class BOTAN_DLL Channel +class BOTAN_PUBLIC_API(2,0) Channel { public: typedef std::function<void (const uint8_t[], size_t)> output_fn; diff --git a/src/lib/tls/tls_ciphersuite.h b/src/lib/tls/tls_ciphersuite.h index 157b1d234..470352bdf 100644 --- a/src/lib/tls/tls_ciphersuite.h +++ b/src/lib/tls/tls_ciphersuite.h @@ -19,7 +19,7 @@ namespace TLS { /** * Ciphersuite Information */ -class BOTAN_DLL Ciphersuite +class BOTAN_PUBLIC_API(2,0) Ciphersuite { public: /** diff --git a/src/lib/tls/tls_client.h b/src/lib/tls/tls_client.h index 3cf6a1e2b..bcf878ee1 100644 --- a/src/lib/tls/tls_client.h +++ b/src/lib/tls/tls_client.h @@ -20,7 +20,7 @@ namespace TLS { /** * SSL/TLS Client */ -class BOTAN_DLL Client final : public Channel +class BOTAN_PUBLIC_API(2,0) Client final : public Channel { public: diff --git a/src/lib/tls/tls_exceptn.h b/src/lib/tls/tls_exceptn.h index 2ed5b685c..3b639a4fa 100644 --- a/src/lib/tls/tls_exceptn.h +++ b/src/lib/tls/tls_exceptn.h @@ -18,7 +18,7 @@ namespace TLS { /** * Exception Base Class */ -class BOTAN_DLL TLS_Exception : public Exception +class BOTAN_PUBLIC_API(2,0) TLS_Exception : public Exception { public: Alert::Type type() const { return m_alert_type; } @@ -34,7 +34,7 @@ class BOTAN_DLL TLS_Exception : public Exception /** * Unexpected_Message Exception */ -struct BOTAN_DLL Unexpected_Message : public TLS_Exception +struct BOTAN_PUBLIC_API(2,0) Unexpected_Message : public TLS_Exception { explicit Unexpected_Message(const std::string& err) : TLS_Exception(Alert::UNEXPECTED_MESSAGE, err) {} diff --git a/src/lib/tls/tls_extensions.h b/src/lib/tls/tls_extensions.h index 9f5d81214..56df4ccfb 100644 --- a/src/lib/tls/tls_extensions.h +++ b/src/lib/tls/tls_extensions.h @@ -427,7 +427,7 @@ class Certificate_Status_Request final : public Extension /** * Represents a block of extensions in a hello message */ -class BOTAN_DLL Extensions +class BOTAN_UNSTABLE_API Extensions { public: std::set<Handshake_Extension_Type> extension_types() const; diff --git a/src/lib/tls/tls_handshake_msg.h b/src/lib/tls/tls_handshake_msg.h index b4279fe34..9b81db4f6 100644 --- a/src/lib/tls/tls_handshake_msg.h +++ b/src/lib/tls/tls_handshake_msg.h @@ -23,7 +23,7 @@ class Handshake_Hash; /** * TLS Handshake Message Base Class */ -class BOTAN_DLL Handshake_Message +class BOTAN_PUBLIC_API(2,0) Handshake_Message { public: /** diff --git a/src/lib/tls/tls_messages.h b/src/lib/tls/tls_messages.h index 9c7b836be..892104888 100644 --- a/src/lib/tls/tls_messages.h +++ b/src/lib/tls/tls_messages.h @@ -44,7 +44,7 @@ std::vector<uint8_t> make_hello_random(RandomNumberGenerator& rng, /** * DTLS Hello Verify Request */ -class BOTAN_DLL Hello_Verify_Request final : public Handshake_Message +class BOTAN_UNSTABLE_API Hello_Verify_Request final : public Handshake_Message { public: std::vector<uint8_t> serialize() const override; @@ -64,7 +64,7 @@ class BOTAN_DLL Hello_Verify_Request final : public Handshake_Message /** * Client Hello Message */ -class BOTAN_DLL Client_Hello final : public Handshake_Message +class BOTAN_UNSTABLE_API Client_Hello final : public Handshake_Message { public: class Settings @@ -178,7 +178,7 @@ class BOTAN_DLL Client_Hello final : public Handshake_Message /** * Server Hello Message */ -class BOTAN_DLL Server_Hello final : public Handshake_Message +class BOTAN_UNSTABLE_API Server_Hello final : public Handshake_Message { public: class Settings @@ -431,7 +431,7 @@ class BOTAN_DLL Certificate_Req final : public Handshake_Message /** * Certificate Verify Message */ -class BOTAN_DLL Certificate_Verify final : public Handshake_Message +class BOTAN_UNSTABLE_API Certificate_Verify final : public Handshake_Message { public: Handshake_Type type() const override { return CERTIFICATE_VERIFY; } @@ -490,7 +490,7 @@ class BOTAN_DLL Finished final : public Handshake_Message /** * Hello Request Message */ -class BOTAN_DLL Hello_Request final : public Handshake_Message +class BOTAN_UNSTABLE_API Hello_Request final : public Handshake_Message { public: Handshake_Type type() const override { return HELLO_REQUEST; } @@ -586,7 +586,7 @@ class BOTAN_DLL Server_Hello_Done final : public Handshake_Message /** * New Session Ticket Message */ -class BOTAN_DLL New_Session_Ticket final : public Handshake_Message +class BOTAN_UNSTABLE_API New_Session_Ticket final : public Handshake_Message { public: Handshake_Type type() const override { return NEW_SESSION_TICKET; } diff --git a/src/lib/tls/tls_policy.h b/src/lib/tls/tls_policy.h index 80dc9cbd6..62638ab10 100644 --- a/src/lib/tls/tls_policy.h +++ b/src/lib/tls/tls_policy.h @@ -23,7 +23,7 @@ namespace TLS { * TLS Policy Base Class * Inherit and overload as desired to suit local policy concerns */ -class BOTAN_DLL Policy +class BOTAN_PUBLIC_API(2,0) Policy { public: @@ -309,7 +309,7 @@ class BOTAN_DLL Policy /** * NSA Suite B 128-bit security level (RFC 6460) */ -class BOTAN_DLL NSA_Suite_B_128 : public Policy +class BOTAN_PUBLIC_API(2,0) NSA_Suite_B_128 : public Policy { public: std::vector<std::string> allowed_ciphers() const override @@ -397,7 +397,7 @@ class BOTAN_DLL BSI_TR_02102_2 : public Policy /** * Policy for DTLS. We require DTLS v1.2 and an AEAD mode. */ -class BOTAN_DLL Datagram_Policy : public Policy +class BOTAN_PUBLIC_API(2,0) Datagram_Policy : public Policy { public: std::vector<std::string> allowed_macs() const override @@ -417,7 +417,7 @@ class BOTAN_DLL Datagram_Policy : public Policy * to use if you control both sides of the protocol and don't have to worry * about ancient and/or bizarre TLS implementations. */ -class BOTAN_DLL Strict_Policy : public Policy +class BOTAN_PUBLIC_API(2,0) Strict_Policy : public Policy { public: std::vector<std::string> allowed_ciphers() const override; @@ -435,7 +435,7 @@ class BOTAN_DLL Strict_Policy : public Policy bool allow_dtls12() const override; }; -class BOTAN_DLL Text_Policy : public Policy +class BOTAN_PUBLIC_API(2,0) Text_Policy : public Policy { public: diff --git a/src/lib/tls/tls_server.h b/src/lib/tls/tls_server.h index bea498ab7..6931b820b 100644 --- a/src/lib/tls/tls_server.h +++ b/src/lib/tls/tls_server.h @@ -23,7 +23,7 @@ class Server_Handshake_State; /** * TLS Server */ -class BOTAN_DLL Server final : public Channel +class BOTAN_PUBLIC_API(2,0) Server final : public Channel { public: typedef std::function<std::string (std::vector<std::string>)> next_protocol_fn; diff --git a/src/lib/tls/tls_server_info.h b/src/lib/tls/tls_server_info.h index 06b4f088a..329191aad 100644 --- a/src/lib/tls/tls_server_info.h +++ b/src/lib/tls/tls_server_info.h @@ -18,7 +18,7 @@ namespace TLS { /** * Represents information known about a TLS server. */ -class BOTAN_DLL Server_Information +class BOTAN_PUBLIC_API(2,0) Server_Information { public: /** diff --git a/src/lib/tls/tls_session.h b/src/lib/tls/tls_session.h index 115409014..4b7a6a538 100644 --- a/src/lib/tls/tls_session.h +++ b/src/lib/tls/tls_session.h @@ -24,7 +24,7 @@ namespace TLS { /** * Class representing a TLS session state */ -class BOTAN_DLL Session +class BOTAN_PUBLIC_API(2,0) Session { public: diff --git a/src/lib/tls/tls_session_manager.h b/src/lib/tls/tls_session_manager.h index 88b73c73a..15e16f238 100644 --- a/src/lib/tls/tls_session_manager.h +++ b/src/lib/tls/tls_session_manager.h @@ -26,7 +26,7 @@ namespace TLS { * * Implementations should strive to be thread safe */ -class BOTAN_DLL Session_Manager +class BOTAN_PUBLIC_API(2,0) Session_Manager { public: /** @@ -83,7 +83,7 @@ class BOTAN_DLL Session_Manager * An implementation of Session_Manager that does not save sessions at * all, preventing session resumption. */ -class BOTAN_DLL Session_Manager_Noop : public Session_Manager +class BOTAN_PUBLIC_API(2,0) Session_Manager_Noop : public Session_Manager { public: bool load_from_session_id(const std::vector<uint8_t>&, Session&) override @@ -105,7 +105,7 @@ class BOTAN_DLL Session_Manager_Noop : public Session_Manager /** * An implementation of Session_Manager that saves values in memory. */ -class BOTAN_DLL Session_Manager_In_Memory : public Session_Manager +class BOTAN_PUBLIC_API(2,0) Session_Manager_In_Memory : public Session_Manager { public: /** diff --git a/src/lib/tls/tls_version.h b/src/lib/tls/tls_version.h index f60297e8a..a8f3afba4 100644 --- a/src/lib/tls/tls_version.h +++ b/src/lib/tls/tls_version.h @@ -18,7 +18,7 @@ namespace TLS { /** * TLS Protocol Version */ -class BOTAN_DLL Protocol_Version +class BOTAN_PUBLIC_API(2,0) Protocol_Version { public: enum Version_Code { diff --git a/src/lib/utils/assert.h b/src/lib/utils/assert.h index ab459464e..044e27637 100644 --- a/src/lib/utils/assert.h +++ b/src/lib/utils/assert.h @@ -16,7 +16,7 @@ namespace Botan { /** * Called when an assertion fails */ -BOTAN_NORETURN void BOTAN_DLL assertion_failure(const char* expr_str, +BOTAN_NORETURN void BOTAN_PUBLIC_API(2,0) assertion_failure(const char* expr_str, const char* assertion_made, const char* func, const char* file, diff --git a/src/lib/utils/calendar.h b/src/lib/utils/calendar.h index 91da9edc0..8c9d1f084 100644 --- a/src/lib/utils/calendar.h +++ b/src/lib/utils/calendar.h @@ -18,7 +18,7 @@ namespace Botan { /** * Struct representing a particular date and time */ -struct BOTAN_DLL calendar_point +struct BOTAN_PUBLIC_API(2,0) calendar_point { /** The year */ uint32_t year; @@ -69,7 +69,7 @@ struct BOTAN_DLL calendar_point * @param time_point a time point from the system clock * @return calendar_point object representing this time point */ -BOTAN_DLL calendar_point calendar_value( +BOTAN_PUBLIC_API(2,0) calendar_point calendar_value( const std::chrono::system_clock::time_point& time_point); } diff --git a/src/lib/utils/charset.h b/src/lib/utils/charset.h index 5ab28661a..cffa8ebc5 100644 --- a/src/lib/utils/charset.h +++ b/src/lib/utils/charset.h @@ -28,16 +28,16 @@ namespace Charset { /* * Character Set Handling */ -std::string BOTAN_DLL transcode(const std::string& str, +std::string BOTAN_PUBLIC_API(2,0) transcode(const std::string& str, Character_Set to, Character_Set from); -bool BOTAN_DLL is_digit(char c); -bool BOTAN_DLL is_space(char c); -bool BOTAN_DLL caseless_cmp(char x, char y); +bool BOTAN_PUBLIC_API(2,0) is_digit(char c); +bool BOTAN_PUBLIC_API(2,0) is_space(char c); +bool BOTAN_PUBLIC_API(2,0) caseless_cmp(char x, char y); -uint8_t BOTAN_DLL char2digit(char c); -char BOTAN_DLL digit2char(uint8_t b); +uint8_t BOTAN_PUBLIC_API(2,0) char2digit(char c); +char BOTAN_PUBLIC_API(2,0) digit2char(uint8_t b); } diff --git a/src/lib/utils/data_src.h b/src/lib/utils/data_src.h index 81840e913..8a170fdff 100644 --- a/src/lib/utils/data_src.h +++ b/src/lib/utils/data_src.h @@ -18,7 +18,7 @@ namespace Botan { /** * This class represents an abstract data source object. */ -class BOTAN_DLL DataSource +class BOTAN_PUBLIC_API(2,0) DataSource { public: /** @@ -95,7 +95,7 @@ class BOTAN_DLL DataSource /** * This class represents a Memory-Based DataSource */ -class BOTAN_DLL DataSource_Memory : public DataSource +class BOTAN_PUBLIC_API(2,0) DataSource_Memory : public DataSource { public: size_t read(uint8_t[], size_t) override; @@ -140,7 +140,7 @@ class BOTAN_DLL DataSource_Memory : public DataSource /** * This class represents a Stream-Based DataSource. */ -class BOTAN_DLL DataSource_Stream : public DataSource +class BOTAN_PUBLIC_API(2,0) DataSource_Stream : public DataSource { public: size_t read(uint8_t[], size_t) override; diff --git a/src/lib/utils/database.h b/src/lib/utils/database.h index 6a1fa6b02..0aa72eaa1 100644 --- a/src/lib/utils/database.h +++ b/src/lib/utils/database.h @@ -16,17 +16,17 @@ namespace Botan { -class BOTAN_DLL SQL_Database +class BOTAN_PUBLIC_API(2,0) SQL_Database { public: - class BOTAN_DLL SQL_DB_Error : public Exception + class BOTAN_PUBLIC_API(2,0) SQL_DB_Error : public Exception { public: explicit SQL_DB_Error(const std::string& what) : Exception("SQL database", what) {} }; - class BOTAN_DLL Statement + class BOTAN_PUBLIC_API(2,0) Statement { public: /* Bind statement parameters */ diff --git a/src/lib/utils/dyn_load/dyn_load.h b/src/lib/utils/dyn_load/dyn_load.h index 3a155f3de..f5c0e1b24 100644 --- a/src/lib/utils/dyn_load/dyn_load.h +++ b/src/lib/utils/dyn_load/dyn_load.h @@ -16,7 +16,7 @@ namespace Botan { /** * Represents a DLL or shared object */ -class BOTAN_DLL Dynamically_Loaded_Library +class BOTAN_PUBLIC_API(2,0) Dynamically_Loaded_Library { public: /** diff --git a/src/lib/utils/exceptn.h b/src/lib/utils/exceptn.h index 798f2240a..47f16e0b9 100644 --- a/src/lib/utils/exceptn.h +++ b/src/lib/utils/exceptn.h @@ -18,7 +18,7 @@ namespace Botan { /** * Base class for all exceptions thrown by the library */ -class BOTAN_DLL Exception : public std::exception +class BOTAN_PUBLIC_API(2,0) Exception : public std::exception { public: explicit Exception(const std::string& msg) : m_msg(msg) {} @@ -31,7 +31,7 @@ class BOTAN_DLL Exception : public std::exception /** * An invalid argument */ -class BOTAN_DLL Invalid_Argument : public Exception +class BOTAN_PUBLIC_API(2,0) Invalid_Argument : public Exception { public: explicit Invalid_Argument(const std::string& msg) : @@ -50,7 +50,7 @@ class BOTAN_DLL Invalid_Argument : public Exception * An argument that is invalid because it is not supported by Botan. * It might or might not be valid in another context like a standard. */ -struct BOTAN_DLL Unsupported_Argument : public Invalid_Argument +struct BOTAN_PUBLIC_API(2,0) Unsupported_Argument : public Invalid_Argument { explicit Unsupported_Argument(const std::string& msg) : Invalid_Argument(msg) {} }; @@ -58,7 +58,7 @@ struct BOTAN_DLL Unsupported_Argument : public Invalid_Argument /** * Invalid_State Exception */ -struct BOTAN_DLL Invalid_State : public Exception +struct BOTAN_PUBLIC_API(2,0) Invalid_State : public Exception { explicit Invalid_State(const std::string& err) : Exception(err) @@ -68,7 +68,7 @@ struct BOTAN_DLL Invalid_State : public Exception /** * Lookup_Error Exception */ -struct BOTAN_DLL Lookup_Error : public Exception +struct BOTAN_PUBLIC_API(2,0) Lookup_Error : public Exception { explicit Lookup_Error(const std::string& err) : Exception(err) @@ -85,7 +85,7 @@ struct BOTAN_DLL Lookup_Error : public Exception /** * Internal_Error Exception */ -struct BOTAN_DLL Internal_Error : public Exception +struct BOTAN_PUBLIC_API(2,0) Internal_Error : public Exception { explicit Internal_Error(const std::string& err) : Exception("Internal error: " + err) @@ -95,7 +95,7 @@ struct BOTAN_DLL Internal_Error : public Exception /** * Invalid_Key_Length Exception */ -struct BOTAN_DLL Invalid_Key_Length : public Invalid_Argument +struct BOTAN_PUBLIC_API(2,0) Invalid_Key_Length : public Invalid_Argument { Invalid_Key_Length(const std::string& name, size_t length) : Invalid_Argument(name + " cannot accept a key of length " + @@ -106,7 +106,7 @@ struct BOTAN_DLL Invalid_Key_Length : public Invalid_Argument /** * Invalid_IV_Length Exception */ -struct BOTAN_DLL Invalid_IV_Length : public Invalid_Argument +struct BOTAN_PUBLIC_API(2,0) Invalid_IV_Length : public Invalid_Argument { Invalid_IV_Length(const std::string& mode, size_t bad_len) : Invalid_Argument("IV length " + std::to_string(bad_len) + @@ -117,7 +117,7 @@ struct BOTAN_DLL Invalid_IV_Length : public Invalid_Argument /** * PRNG_Unseeded Exception */ -struct BOTAN_DLL PRNG_Unseeded : public Invalid_State +struct BOTAN_PUBLIC_API(2,0) PRNG_Unseeded : public Invalid_State { explicit PRNG_Unseeded(const std::string& algo) : Invalid_State("PRNG not seeded: " + algo) @@ -127,7 +127,7 @@ struct BOTAN_DLL PRNG_Unseeded : public Invalid_State /** * Policy_Violation Exception */ -struct BOTAN_DLL Policy_Violation : public Invalid_State +struct BOTAN_PUBLIC_API(2,0) Policy_Violation : public Invalid_State { explicit Policy_Violation(const std::string& err) : Invalid_State("Policy violation: " + err) @@ -137,7 +137,7 @@ struct BOTAN_DLL Policy_Violation : public Invalid_State /** * Algorithm_Not_Found Exception */ -struct BOTAN_DLL Algorithm_Not_Found : public Lookup_Error +struct BOTAN_PUBLIC_API(2,0) Algorithm_Not_Found : public Lookup_Error { explicit Algorithm_Not_Found(const std::string& name) : Lookup_Error("Could not find any algorithm named \"" + name + "\"") @@ -147,7 +147,7 @@ struct BOTAN_DLL Algorithm_Not_Found : public Lookup_Error /** * No_Provider_Found Exception */ -struct BOTAN_DLL No_Provider_Found : public Exception +struct BOTAN_PUBLIC_API(2,0) No_Provider_Found : public Exception { explicit No_Provider_Found(const std::string& name) : Exception("Could not find any provider for algorithm named \"" + name + "\"") @@ -158,7 +158,7 @@ struct BOTAN_DLL No_Provider_Found : public Exception * Provider_Not_Found is thrown when a specific provider was requested * but that provider is not available. */ -struct BOTAN_DLL Provider_Not_Found : public Lookup_Error +struct BOTAN_PUBLIC_API(2,0) Provider_Not_Found : public Lookup_Error { Provider_Not_Found(const std::string& algo, const std::string& provider) : Lookup_Error("Could not find provider '" + provider + "' for " + algo) {} @@ -167,7 +167,7 @@ struct BOTAN_DLL Provider_Not_Found : public Lookup_Error /** * Invalid_Algorithm_Name Exception */ -struct BOTAN_DLL Invalid_Algorithm_Name : public Invalid_Argument +struct BOTAN_PUBLIC_API(2,0) Invalid_Algorithm_Name : public Invalid_Argument { explicit Invalid_Algorithm_Name(const std::string& name): Invalid_Argument("Invalid algorithm name: " + name) @@ -177,7 +177,7 @@ struct BOTAN_DLL Invalid_Algorithm_Name : public Invalid_Argument /** * Encoding_Error Exception */ -struct BOTAN_DLL Encoding_Error : public Invalid_Argument +struct BOTAN_PUBLIC_API(2,0) Encoding_Error : public Invalid_Argument { explicit Encoding_Error(const std::string& name) : Invalid_Argument("Encoding error: " + name) {} @@ -186,7 +186,7 @@ struct BOTAN_DLL Encoding_Error : public Invalid_Argument /** * Decoding_Error Exception */ -struct BOTAN_DLL Decoding_Error : public Invalid_Argument +struct BOTAN_PUBLIC_API(2,0) Decoding_Error : public Invalid_Argument { explicit Decoding_Error(const std::string& name) : Invalid_Argument("Decoding error: " + name) {} @@ -195,7 +195,7 @@ struct BOTAN_DLL Decoding_Error : public Invalid_Argument /** * Integrity_Failure Exception */ -struct BOTAN_DLL Integrity_Failure : public Exception +struct BOTAN_PUBLIC_API(2,0) Integrity_Failure : public Exception { explicit Integrity_Failure(const std::string& msg) : Exception("Integrity failure: " + msg) {} @@ -204,7 +204,7 @@ struct BOTAN_DLL Integrity_Failure : public Exception /** * Invalid_OID Exception */ -struct BOTAN_DLL Invalid_OID : public Decoding_Error +struct BOTAN_PUBLIC_API(2,0) Invalid_OID : public Decoding_Error { explicit Invalid_OID(const std::string& oid) : Decoding_Error("Invalid ASN.1 OID: " + oid) {} @@ -213,7 +213,7 @@ struct BOTAN_DLL Invalid_OID : public Decoding_Error /** * Stream_IO_Error Exception */ -struct BOTAN_DLL Stream_IO_Error : public Exception +struct BOTAN_PUBLIC_API(2,0) Stream_IO_Error : public Exception { explicit Stream_IO_Error(const std::string& err) : Exception("I/O error: " + err) @@ -223,7 +223,7 @@ struct BOTAN_DLL Stream_IO_Error : public Exception /** * No_Filesystem_Access Exception */ -struct BOTAN_DLL No_Filesystem_Access : public Exception +struct BOTAN_PUBLIC_API(2,0) No_Filesystem_Access : public Exception { No_Filesystem_Access() : Exception("No filesystem access enabled.") {} }; @@ -231,7 +231,7 @@ struct BOTAN_DLL No_Filesystem_Access : public Exception /** * Self Test Failure Exception */ -struct BOTAN_DLL Self_Test_Failure : public Internal_Error +struct BOTAN_PUBLIC_API(2,0) Self_Test_Failure : public Internal_Error { explicit Self_Test_Failure(const std::string& err) : Internal_Error("Self test failed: " + err) @@ -241,7 +241,7 @@ struct BOTAN_DLL Self_Test_Failure : public Internal_Error /** * Not Implemented Exception */ -struct BOTAN_DLL Not_Implemented : public Exception +struct BOTAN_PUBLIC_API(2,0) Not_Implemented : public Exception { explicit Not_Implemented(const std::string& err) : Exception("Not implemented", err) diff --git a/src/lib/utils/filesystem.h b/src/lib/utils/filesystem.h index 419f94b99..a3e1b8191 100644 --- a/src/lib/utils/filesystem.h +++ b/src/lib/utils/filesystem.h @@ -14,7 +14,7 @@ namespace Botan { -BOTAN_DLL std::vector<std::string> get_files_recursive(const std::string& dir); +BOTAN_TEST_API std::vector<std::string> get_files_recursive(const std::string& dir); } diff --git a/src/lib/utils/http_util/http_util.h b/src/lib/utils/http_util/http_util.h index c1cef4542..2a3863951 100644 --- a/src/lib/utils/http_util/http_util.h +++ b/src/lib/utils/http_util/http_util.h @@ -56,39 +56,39 @@ struct Response /** * HTTP_Error Exception */ -struct BOTAN_DLL HTTP_Error : public Exception +struct BOTAN_PUBLIC_API(2,0) HTTP_Error : public Exception { explicit HTTP_Error(const std::string& msg) : Exception("HTTP error " + msg) {} }; -BOTAN_DLL std::ostream& operator<<(std::ostream& o, const Response& resp); +BOTAN_PUBLIC_API(2,0) std::ostream& operator<<(std::ostream& o, const Response& resp); typedef std::function<std::string (const std::string&, const std::string&)> http_exch_fn; -BOTAN_DLL Response http_sync(http_exch_fn fn, +BOTAN_PUBLIC_API(2,0) Response http_sync(http_exch_fn fn, const std::string& verb, const std::string& url, const std::string& content_type, const std::vector<uint8_t>& body, size_t allowable_redirects); -BOTAN_DLL Response http_sync(const std::string& verb, +BOTAN_PUBLIC_API(2,0) Response http_sync(const std::string& verb, const std::string& url, const std::string& content_type, const std::vector<uint8_t>& body, size_t allowable_redirects); -BOTAN_DLL Response GET_sync(const std::string& url, +BOTAN_PUBLIC_API(2,0) Response GET_sync(const std::string& url, size_t allowable_redirects = 1); -BOTAN_DLL Response POST_sync(const std::string& url, +BOTAN_PUBLIC_API(2,0) Response POST_sync(const std::string& url, const std::string& content_type, const std::vector<uint8_t>& body, size_t allowable_redirects = 1); -BOTAN_DLL std::string url_encode(const std::string& url); +BOTAN_PUBLIC_API(2,0) std::string url_encode(const std::string& url); } diff --git a/src/lib/utils/locking_allocator/locking_allocator.h b/src/lib/utils/locking_allocator/locking_allocator.h index 806f9fa86..81e9234dc 100644 --- a/src/lib/utils/locking_allocator/locking_allocator.h +++ b/src/lib/utils/locking_allocator/locking_allocator.h @@ -14,7 +14,7 @@ namespace Botan { -class BOTAN_DLL mlock_allocator +class BOTAN_PUBLIC_API(2,0) mlock_allocator { public: static mlock_allocator& instance(); diff --git a/src/lib/utils/mem_ops.h b/src/lib/utils/mem_ops.h index 2d575d35e..58b87b8c7 100644 --- a/src/lib/utils/mem_ops.h +++ b/src/lib/utils/mem_ops.h @@ -29,7 +29,7 @@ namespace Botan { * @param ptr a pointer to memory to scrub * @param n the number of bytes pointed to by ptr */ -BOTAN_DLL void secure_scrub_memory(void* ptr, size_t n); +BOTAN_PUBLIC_API(2,0) void secure_scrub_memory(void* ptr, size_t n); /** * Memory comparison, input insensitive diff --git a/src/lib/utils/parsing.h b/src/lib/utils/parsing.h index f4936bd68..32236236e 100644 --- a/src/lib/utils/parsing.h +++ b/src/lib/utils/parsing.h @@ -24,7 +24,7 @@ namespace Botan { * @param scan_name the name * @return the name components */ -BOTAN_DLL std::vector<std::string> +BOTAN_PUBLIC_API(2,0) std::vector<std::string> parse_algorithm_name(const std::string& scan_name); /** @@ -33,7 +33,7 @@ parse_algorithm_name(const std::string& scan_name); * @param delim the delimitor * @return string split by delim */ -BOTAN_DLL std::vector<std::string> split_on( +BOTAN_PUBLIC_API(2,0) std::vector<std::string> split_on( const std::string& str, char delim); /** @@ -41,14 +41,14 @@ BOTAN_DLL std::vector<std::string> split_on( * @param str the input string * @param pred the predicate */ -BOTAN_DLL std::vector<std::string> +BOTAN_PUBLIC_API(2,0) std::vector<std::string> split_on_pred(const std::string& str, std::function<bool (char)> pred); /** * Erase characters from a string */ -BOTAN_DLL std::string erase_chars(const std::string& str, const std::set<char>& chars); +BOTAN_PUBLIC_API(2,0) std::string erase_chars(const std::string& str, const std::set<char>& chars); /** * Replace a character in a string @@ -57,7 +57,7 @@ BOTAN_DLL std::string erase_chars(const std::string& str, const std::set<char>& * @param to_char the character to replace it with * @return str with all instances of from_char replaced by to_char */ -BOTAN_DLL std::string replace_char(const std::string& str, +BOTAN_PUBLIC_API(2,0) std::string replace_char(const std::string& str, char from_char, char to_char); @@ -68,7 +68,7 @@ BOTAN_DLL std::string replace_char(const std::string& str, * @param to_char the character to replace it with * @return str with all instances of from_chars replaced by to_char */ -BOTAN_DLL std::string replace_chars(const std::string& str, +BOTAN_PUBLIC_API(2,0) std::string replace_chars(const std::string& str, const std::set<char>& from_chars, char to_char); @@ -78,7 +78,7 @@ BOTAN_DLL std::string replace_chars(const std::string& str, * @param delim the delimitor * @return string joined by delim */ -BOTAN_DLL std::string string_join(const std::vector<std::string>& strs, +BOTAN_PUBLIC_API(2,0) std::string string_join(const std::vector<std::string>& strs, char delim); /** @@ -86,7 +86,7 @@ BOTAN_DLL std::string string_join(const std::vector<std::string>& strs, * @param oid the OID in string form * @return OID components */ -BOTAN_DLL std::vector<uint32_t> parse_asn1_oid(const std::string& oid); +BOTAN_PUBLIC_API(2,0) std::vector<uint32_t> parse_asn1_oid(const std::string& oid); /** * Compare two names using the X.509 comparison algorithm @@ -94,7 +94,7 @@ BOTAN_DLL std::vector<uint32_t> parse_asn1_oid(const std::string& oid); * @param name2 the second name * @return true if name1 is the same as name2 by the X.509 comparison rules */ -BOTAN_DLL bool x500_name_cmp(const std::string& name1, +BOTAN_PUBLIC_API(2,0) bool x500_name_cmp(const std::string& name1, const std::string& name2); /** @@ -102,7 +102,7 @@ BOTAN_DLL bool x500_name_cmp(const std::string& name1, * @param str the string to convert * @return number value of the string */ -BOTAN_DLL uint32_t to_u32bit(const std::string& str); +BOTAN_PUBLIC_API(2,0) uint32_t to_u32bit(const std::string& str); /** * Convert a string to a number @@ -116,27 +116,27 @@ BOTAN_DLL uint16_t to_uint16(const std::string& str); * @param timespec the time specification * @return number of seconds represented by timespec */ -BOTAN_DLL uint32_t timespec_to_u32bit(const std::string& timespec); +BOTAN_PUBLIC_API(2,0) uint32_t timespec_to_u32bit(const std::string& timespec); /** * Convert a string representation of an IPv4 address to a number * @param ip_str the string representation * @return integer IPv4 address */ -BOTAN_DLL uint32_t string_to_ipv4(const std::string& ip_str); +BOTAN_PUBLIC_API(2,0) uint32_t string_to_ipv4(const std::string& ip_str); /** * Convert an IPv4 address to a string * @param ip_addr the IPv4 address to convert * @return string representation of the IPv4 address */ -BOTAN_DLL std::string ipv4_to_string(uint32_t ip_addr); +BOTAN_PUBLIC_API(2,0) std::string ipv4_to_string(uint32_t ip_addr); -std::map<std::string, std::string> BOTAN_DLL read_cfg(std::istream& is); +std::map<std::string, std::string> BOTAN_PUBLIC_API(2,0) read_cfg(std::istream& is); -std::string BOTAN_DLL clean_ws(const std::string& s); +std::string BOTAN_PUBLIC_API(2,0) clean_ws(const std::string& s); -bool BOTAN_DLL host_wildcard_match(const std::string& wildcard, const std::string& host); +bool BOTAN_PUBLIC_API(2,0) host_wildcard_match(const std::string& wildcard, const std::string& host); } diff --git a/src/lib/utils/sqlite3/sqlite3.h b/src/lib/utils/sqlite3/sqlite3.h index 5f262d8e6..5715f07c8 100644 --- a/src/lib/utils/sqlite3/sqlite3.h +++ b/src/lib/utils/sqlite3/sqlite3.h @@ -15,7 +15,7 @@ class sqlite3_stmt; namespace Botan { -class BOTAN_DLL Sqlite3_Database : public SQL_Database +class BOTAN_PUBLIC_API(2,0) Sqlite3_Database : public SQL_Database { public: Sqlite3_Database(const std::string& file); diff --git a/src/lib/utils/version.h b/src/lib/utils/version.h index 834b719af..1f364f952 100644 --- a/src/lib/utils/version.h +++ b/src/lib/utils/version.h @@ -22,9 +22,9 @@ namespace Botan { * No particular format should be assumed. * @return version string */ -BOTAN_DLL std::string version_string(); +BOTAN_PUBLIC_API(2,0) std::string version_string(); -BOTAN_DLL const char* version_cstr(); +BOTAN_PUBLIC_API(2,0) const char* version_cstr(); /** * Return the date this version of botan was released, in an integer of @@ -34,25 +34,25 @@ BOTAN_DLL const char* version_cstr(); * * @return release date, or zero if unreleased */ -BOTAN_DLL uint32_t version_datestamp(); +BOTAN_PUBLIC_API(2,0) uint32_t version_datestamp(); /** * Get the major version number. * @return major version number */ -BOTAN_DLL uint32_t version_major(); +BOTAN_PUBLIC_API(2,0) uint32_t version_major(); /** * Get the minor version number. * @return minor version number */ -BOTAN_DLL uint32_t version_minor(); +BOTAN_PUBLIC_API(2,0) uint32_t version_minor(); /** * Get the patch number. * @return patch number */ -BOTAN_DLL uint32_t version_patch(); +BOTAN_PUBLIC_API(2,0) uint32_t version_patch(); /** * Usable for checking that the DLL version loaded at runtime exactly @@ -60,7 +60,7 @@ BOTAN_DLL uint32_t version_patch(); * values. Returns the empty string if an exact match, otherwise an * appropriate message. Added with 1.11.26. */ -BOTAN_DLL std::string +BOTAN_PUBLIC_API(2,0) std::string runtime_version_check(uint32_t major, uint32_t minor, uint32_t patch); diff --git a/src/lib/x509/cert_status.h b/src/lib/x509/cert_status.h index 8f514c092..e4052eee5 100644 --- a/src/lib/x509/cert_status.h +++ b/src/lib/x509/cert_status.h @@ -79,7 +79,7 @@ enum class Certificate_Status_Code { * @param code the certifcate status * @return string literal constant, or nullptr if code unknown */ -BOTAN_DLL const char* to_string(Certificate_Status_Code code); +BOTAN_PUBLIC_API(2,0) const char* to_string(Certificate_Status_Code code); } diff --git a/src/lib/x509/certstor.h b/src/lib/x509/certstor.h index 2b68147f0..1e2690b4f 100644 --- a/src/lib/x509/certstor.h +++ b/src/lib/x509/certstor.h @@ -16,7 +16,7 @@ namespace Botan { /** * Certificate Store Interface */ -class BOTAN_DLL Certificate_Store +class BOTAN_PUBLIC_API(2,0) Certificate_Store { public: virtual ~Certificate_Store() = default; @@ -71,7 +71,7 @@ class BOTAN_DLL Certificate_Store /** * In Memory Certificate Store */ -class BOTAN_DLL Certificate_Store_In_Memory : public Certificate_Store +class BOTAN_PUBLIC_API(2,0) Certificate_Store_In_Memory : public Certificate_Store { public: /** diff --git a/src/lib/x509/certstor_sql/certstor_sql.h b/src/lib/x509/certstor_sql/certstor_sql.h index f95aea9b4..343fc6a0a 100644 --- a/src/lib/x509/certstor_sql/certstor_sql.h +++ b/src/lib/x509/certstor_sql/certstor_sql.h @@ -20,7 +20,7 @@ class RandomNumberGenerator; /** * Certificate and private key store backed by an SQL database. */ -class BOTAN_DLL Certificate_Store_In_SQL : public Certificate_Store +class BOTAN_PUBLIC_API(2,0) Certificate_Store_In_SQL : public Certificate_Store { public: /** diff --git a/src/lib/x509/certstor_sqlite3/certstor_sqlite.h b/src/lib/x509/certstor_sqlite3/certstor_sqlite.h index d1a1e3d21..02910871a 100644 --- a/src/lib/x509/certstor_sqlite3/certstor_sqlite.h +++ b/src/lib/x509/certstor_sqlite3/certstor_sqlite.h @@ -15,7 +15,7 @@ namespace Botan { /** * Certificate and private key store backed by an sqlite (http://sqlite.org) database. */ -class BOTAN_DLL Certificate_Store_In_SQLite : public Certificate_Store_In_SQL +class BOTAN_PUBLIC_API(2,0) Certificate_Store_In_SQLite : public Certificate_Store_In_SQL { public: /** diff --git a/src/lib/x509/crl_ent.h b/src/lib/x509/crl_ent.h index 233781826..5c265bf52 100644 --- a/src/lib/x509/crl_ent.h +++ b/src/lib/x509/crl_ent.h @@ -37,7 +37,7 @@ enum CRL_Code { /** * This class represents CRL entries */ -class BOTAN_DLL CRL_Entry final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) CRL_Entry final : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; @@ -86,12 +86,12 @@ class BOTAN_DLL CRL_Entry final : public ASN1_Object /** * Test two CRL entries for equality in all fields. */ -BOTAN_DLL bool operator==(const CRL_Entry&, const CRL_Entry&); +BOTAN_PUBLIC_API(2,0) bool operator==(const CRL_Entry&, const CRL_Entry&); /** * Test two CRL entries for inequality in at least one field. */ -BOTAN_DLL bool operator!=(const CRL_Entry&, const CRL_Entry&); +BOTAN_PUBLIC_API(2,0) bool operator!=(const CRL_Entry&, const CRL_Entry&); } diff --git a/src/lib/x509/datastor.h b/src/lib/x509/datastor.h index e5e8b3f1b..1b3fc244e 100644 --- a/src/lib/x509/datastor.h +++ b/src/lib/x509/datastor.h @@ -24,7 +24,7 @@ namespace Botan { * reasons. There is no reason for applications to use this type directly. * It will be removed in a future major release. */ -class BOTAN_DLL Data_Store +class BOTAN_PUBLIC_API(2,0) Data_Store { public: /** diff --git a/src/lib/x509/key_constraint.h b/src/lib/x509/key_constraint.h index 1158a4772..5a47b0046 100644 --- a/src/lib/x509/key_constraint.h +++ b/src/lib/x509/key_constraint.h @@ -39,10 +39,10 @@ class Public_Key; * @param constraints the constraints that shall be enforced on the key * @throw Exception if the given constraints are not permitted for this key */ -BOTAN_DLL void verify_cert_constraints_valid_for_key_type(const Public_Key& pub_key, +BOTAN_PUBLIC_API(2,0) void verify_cert_constraints_valid_for_key_type(const Public_Key& pub_key, Key_Constraints constraints); -std::string BOTAN_DLL key_constraints_to_string(Key_Constraints); +std::string BOTAN_PUBLIC_API(2,0) key_constraints_to_string(Key_Constraints); } diff --git a/src/lib/x509/name_constraint.h b/src/lib/x509/name_constraint.h index e52e5449e..b88f37cce 100644 --- a/src/lib/x509/name_constraint.h +++ b/src/lib/x509/name_constraint.h @@ -23,7 +23,7 @@ class X509_Certificate; * encoding. Allows matching GeneralNames against each other using * the rules laid out in the RFC 5280, sec. 4.2.1.10 (Name Contraints). */ -class BOTAN_DLL GeneralName : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) GeneralName : public ASN1_Object { public: enum MatchResult : int @@ -85,7 +85,7 @@ std::ostream& operator<<(std::ostream& os, const GeneralName& gn); * length to a GeneralName to form a constraint. The length limits * are currently unused. */ -class BOTAN_DLL GeneralSubtree : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) GeneralSubtree : public ASN1_Object { public: /** @@ -142,7 +142,7 @@ std::ostream& operator<<(std::ostream& os, const GeneralSubtree& gs); * * Wraps the Name Constraints associated with a certificate. */ -class BOTAN_DLL NameConstraints +class BOTAN_PUBLIC_API(2,0) NameConstraints { public: /** diff --git a/src/lib/x509/ocsp.h b/src/lib/x509/ocsp.h index 63dc94b6a..550fd09e2 100644 --- a/src/lib/x509/ocsp.h +++ b/src/lib/x509/ocsp.h @@ -20,7 +20,7 @@ namespace OCSP { /** * An OCSP request. */ -class BOTAN_DLL Request +class BOTAN_PUBLIC_API(2,0) Request { public: /** @@ -66,7 +66,7 @@ class BOTAN_DLL Request * * Note this class is only usable as an OCSP client */ -class BOTAN_DLL Response +class BOTAN_PUBLIC_API(2,0) Response { public: /** @@ -175,7 +175,7 @@ BOTAN_DLL Response online_check(const X509_Certificate& issuer, * @param trusted_roots trusted roots for the OCSP response * @return OCSP response */ -BOTAN_DLL Response online_check(const X509_Certificate& issuer, +BOTAN_PUBLIC_API(2,0) Response online_check(const X509_Certificate& issuer, const X509_Certificate& subject, Certificate_Store* trusted_roots); diff --git a/src/lib/x509/ocsp_types.h b/src/lib/x509/ocsp_types.h index c69d306ed..4f1ce87d6 100644 --- a/src/lib/x509/ocsp_types.h +++ b/src/lib/x509/ocsp_types.h @@ -16,7 +16,7 @@ namespace Botan { namespace OCSP { -class BOTAN_DLL CertID final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) CertID final : public ASN1_Object { public: CertID() = default; @@ -40,7 +40,7 @@ class BOTAN_DLL CertID final : public ASN1_Object BigInt m_subject_serial; }; -class BOTAN_DLL SingleResponse final : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) SingleResponse final : public ASN1_Object { public: const CertID& certid() const { return m_certid; } diff --git a/src/lib/x509/pkcs10.h b/src/lib/x509/pkcs10.h index 3e0c37950..16d41ab01 100644 --- a/src/lib/x509/pkcs10.h +++ b/src/lib/x509/pkcs10.h @@ -23,7 +23,7 @@ namespace Botan { /** * PKCS #10 Certificate Request. */ -class BOTAN_DLL PKCS10_Request final : public X509_Object +class BOTAN_PUBLIC_API(2,0) PKCS10_Request final : public X509_Object { public: /** diff --git a/src/lib/x509/x509_ca.h b/src/lib/x509/x509_ca.h index bc4b3a506..f9fd34d09 100644 --- a/src/lib/x509/x509_ca.h +++ b/src/lib/x509/x509_ca.h @@ -24,7 +24,7 @@ class PK_Signer; /** * This class represents X.509 Certificate Authorities (CAs). */ -class BOTAN_DLL X509_CA +class BOTAN_PUBLIC_API(2,0) X509_CA { public: /** @@ -136,7 +136,7 @@ class BOTAN_DLL X509_CA * @param alg_id will be set to the chosen scheme * @return A PK_Signer object for generating signatures */ -BOTAN_DLL PK_Signer* choose_sig_format(const Private_Key& key, +BOTAN_PUBLIC_API(2,0) PK_Signer* choose_sig_format(const Private_Key& key, RandomNumberGenerator& rng, const std::string& hash_fn, AlgorithmIdentifier& alg_id); diff --git a/src/lib/x509/x509_crl.h b/src/lib/x509/x509_crl.h index ec0feb3d0..9e1193f80 100644 --- a/src/lib/x509/x509_crl.h +++ b/src/lib/x509/x509_crl.h @@ -21,13 +21,13 @@ class X509_Certificate; /** * This class represents X.509 Certificate Revocation Lists (CRLs). */ -class BOTAN_DLL X509_CRL final : public X509_Object +class BOTAN_PUBLIC_API(2,0) X509_CRL final : public X509_Object { public: /** * This class represents CRL related errors. */ - struct BOTAN_DLL X509_CRL_Error : public Exception + struct BOTAN_PUBLIC_API(2,0) X509_CRL_Error : public Exception { explicit X509_CRL_Error(const std::string& error) : Exception("X509_CRL: " + error) {} diff --git a/src/lib/x509/x509_ext.h b/src/lib/x509/x509_ext.h index c6cfbaee0..22598d41a 100644 --- a/src/lib/x509/x509_ext.h +++ b/src/lib/x509/x509_ext.h @@ -24,7 +24,7 @@ class X509_Certificate; /** * X.509 Certificate Extension */ -class BOTAN_DLL Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Certificate_Extension { public: /** @@ -83,7 +83,7 @@ class BOTAN_DLL Certificate_Extension /** * X.509 Certificate Extension List */ -class BOTAN_DLL Extensions : public ASN1_Object +class BOTAN_UNSTABLE_API Extensions : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; @@ -179,7 +179,7 @@ static const size_t NO_CERT_PATH_LIMIT = 0xFFFFFFF0; /** * Basic Constraints Extension */ -class BOTAN_DLL Basic_Constraints final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Basic_Constraints final : public Certificate_Extension { public: Basic_Constraints* copy() const override @@ -206,7 +206,7 @@ class BOTAN_DLL Basic_Constraints final : public Certificate_Extension /** * Key Usage Constraints Extension */ -class BOTAN_DLL Key_Usage final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Key_Usage final : public Certificate_Extension { public: Key_Usage* copy() const override { return new Key_Usage(m_constraints); } @@ -230,7 +230,7 @@ class BOTAN_DLL Key_Usage final : public Certificate_Extension /** * Subject Key Identifier Extension */ -class BOTAN_DLL Subject_Key_ID final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Subject_Key_ID final : public Certificate_Extension { public: Subject_Key_ID* copy() const override @@ -255,7 +255,7 @@ class BOTAN_DLL Subject_Key_ID final : public Certificate_Extension /** * Authority Key Identifier Extension */ -class BOTAN_DLL Authority_Key_ID final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Authority_Key_ID final : public Certificate_Extension { public: Authority_Key_ID* copy() const override @@ -281,7 +281,7 @@ class BOTAN_DLL Authority_Key_ID final : public Certificate_Extension /** * Alternative Name Extension Base Class */ -class BOTAN_DLL Alternative_Name : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Alternative_Name : public Certificate_Extension { public: AlternativeName get_alt_name() const { return m_alt_name; } @@ -306,7 +306,7 @@ class BOTAN_DLL Alternative_Name : public Certificate_Extension /** * Subject Alternative Name Extension */ -class BOTAN_DLL Subject_Alternative_Name : public Alternative_Name +class BOTAN_PUBLIC_API(2,0) Subject_Alternative_Name : public Alternative_Name { public: Subject_Alternative_Name* copy() const override @@ -318,7 +318,7 @@ class BOTAN_DLL Subject_Alternative_Name : public Alternative_Name /** * Issuer Alternative Name Extension */ -class BOTAN_DLL Issuer_Alternative_Name : public Alternative_Name +class BOTAN_PUBLIC_API(2,0) Issuer_Alternative_Name : public Alternative_Name { public: Issuer_Alternative_Name* copy() const override @@ -330,7 +330,7 @@ class BOTAN_DLL Issuer_Alternative_Name : public Alternative_Name /** * Extended Key Usage Extension */ -class BOTAN_DLL Extended_Key_Usage final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Extended_Key_Usage final : public Certificate_Extension { public: Extended_Key_Usage* copy() const override @@ -356,7 +356,7 @@ class BOTAN_DLL Extended_Key_Usage final : public Certificate_Extension /** * Name Constraints */ -class BOTAN_DLL Name_Constraints : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Name_Constraints : public Certificate_Extension { public: Name_Constraints* copy() const override @@ -385,7 +385,7 @@ class BOTAN_DLL Name_Constraints : public Certificate_Extension /** * Certificate Policies Extension */ -class BOTAN_DLL Certificate_Policies final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Certificate_Policies final : public Certificate_Extension { public: Certificate_Policies* copy() const override @@ -408,7 +408,7 @@ class BOTAN_DLL Certificate_Policies final : public Certificate_Extension std::vector<OID> m_oids; }; -class BOTAN_DLL Authority_Information_Access final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Authority_Information_Access final : public Certificate_Extension { public: Authority_Information_Access* copy() const override @@ -436,7 +436,7 @@ class BOTAN_DLL Authority_Information_Access final : public Certificate_Extensio /** * CRL Number Extension */ -class BOTAN_DLL CRL_Number final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) CRL_Number final : public Certificate_Extension { public: CRL_Number* copy() const override; @@ -461,7 +461,7 @@ class BOTAN_DLL CRL_Number final : public Certificate_Extension /** * CRL Entry Reason Code Extension */ -class BOTAN_DLL CRL_ReasonCode final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) CRL_ReasonCode final : public Certificate_Extension { public: CRL_ReasonCode* copy() const override @@ -485,10 +485,10 @@ class BOTAN_DLL CRL_ReasonCode final : public Certificate_Extension /** * CRL Distribution Points Extension */ -class BOTAN_DLL CRL_Distribution_Points final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) CRL_Distribution_Points final : public Certificate_Extension { public: - class BOTAN_DLL Distribution_Point final : public ASN1_Object + class BOTAN_PUBLIC_API(2,0) Distribution_Point final : public ASN1_Object { public: void encode_into(class DER_Encoder&) const override; @@ -528,7 +528,7 @@ class BOTAN_DLL CRL_Distribution_Points final : public Certificate_Extension * An unknown X.509 extension marked as critical * Will always add a failure to the path validation result. */ -class BOTAN_DLL Unknown_Critical_Extension final : public Certificate_Extension +class BOTAN_PUBLIC_API(2,0) Unknown_Critical_Extension final : public Certificate_Extension { public: explicit Unknown_Critical_Extension(OID oid) : m_oid(oid) {} diff --git a/src/lib/x509/x509_obj.h b/src/lib/x509/x509_obj.h index 522667397..947568c51 100644 --- a/src/lib/x509/x509_obj.h +++ b/src/lib/x509/x509_obj.h @@ -19,7 +19,7 @@ namespace Botan { * This class represents abstract X.509 signed objects as * in the X.500 SIGNED macro */ -class BOTAN_DLL X509_Object : public ASN1_Object +class BOTAN_PUBLIC_API(2,0) X509_Object : public ASN1_Object { public: /** diff --git a/src/lib/x509/x509cert.h b/src/lib/x509/x509cert.h index 3a81d1108..ebd3d44aa 100644 --- a/src/lib/x509/x509cert.h +++ b/src/lib/x509/x509cert.h @@ -33,7 +33,7 @@ enum class Usage_Type /** * This class represents X.509 Certificate */ -class BOTAN_DLL X509_Certificate : public X509_Object +class BOTAN_PUBLIC_API(2,0) X509_Certificate : public X509_Object { public: /** @@ -330,7 +330,7 @@ class BOTAN_DLL X509_Certificate : public X509_Object * @return true if the arguments represent different certificates, * false if they are binary identical */ -BOTAN_DLL bool operator!=(const X509_Certificate& cert1, const X509_Certificate& cert2); +BOTAN_PUBLIC_API(2,0) bool operator!=(const X509_Certificate& cert1, const X509_Certificate& cert2); /* * Data Store Extraction Operations @@ -341,14 +341,14 @@ BOTAN_DLL bool operator!=(const X509_Certificate& cert1, const X509_Certificate& * @param info data store containing DN information * @return DN containing attributes from data store */ -BOTAN_DLL X509_DN create_dn(const Data_Store& info); +BOTAN_PUBLIC_API(2,0) X509_DN create_dn(const Data_Store& info); /* * Create and populate an AlternativeName * @param info data store containing AlternativeName information * @return AlternativeName containing attributes from data store */ -BOTAN_DLL AlternativeName create_alt_name(const Data_Store& info); +BOTAN_PUBLIC_API(2,0) AlternativeName create_alt_name(const Data_Store& info); } diff --git a/src/lib/x509/x509path.h b/src/lib/x509/x509path.h index 2163c2214..0c1326e73 100644 --- a/src/lib/x509/x509path.h +++ b/src/lib/x509/x509path.h @@ -31,7 +31,7 @@ typedef std::vector<std::set<Certificate_Status_Code>> CertificatePathStatusCode /** * Specifies restrictions on the PKIX path validation */ -class BOTAN_DLL Path_Validation_Restrictions +class BOTAN_PUBLIC_API(2,0) Path_Validation_Restrictions { public: /** @@ -107,7 +107,7 @@ class BOTAN_DLL Path_Validation_Restrictions /** * Represents the result of a PKIX path validation */ -class BOTAN_DLL Path_Validation_Result +class BOTAN_PUBLIC_API(2,0) Path_Validation_Result { public: typedef Certificate_Status_Code Code; @@ -189,7 +189,7 @@ class BOTAN_DLL Path_Validation_Result * @param ocsp_resp additional OCSP responses to consider (eg from peer) * @return result of the path validation */ -Path_Validation_Result BOTAN_DLL x509_path_validate( +Path_Validation_Result BOTAN_PUBLIC_API(2,0) x509_path_validate( const std::vector<X509_Certificate>& end_certs, const Path_Validation_Restrictions& restrictions, const std::vector<Certificate_Store*>& trusted_roots, @@ -211,7 +211,7 @@ Path_Validation_Result BOTAN_DLL x509_path_validate( * @param ocsp_resp additional OCSP responses to consider (eg from peer) * @return result of the path validation */ -Path_Validation_Result BOTAN_DLL x509_path_validate( +Path_Validation_Result BOTAN_PUBLIC_API(2,0) x509_path_validate( const X509_Certificate& end_cert, const Path_Validation_Restrictions& restrictions, const std::vector<Certificate_Store*>& trusted_roots, @@ -233,7 +233,7 @@ Path_Validation_Result BOTAN_DLL x509_path_validate( * @param ocsp_resp additional OCSP responses to consider (eg from peer) * @return result of the path validation */ -Path_Validation_Result BOTAN_DLL x509_path_validate( +Path_Validation_Result BOTAN_PUBLIC_API(2,0) x509_path_validate( const X509_Certificate& end_cert, const Path_Validation_Restrictions& restrictions, const Certificate_Store& store, @@ -255,7 +255,7 @@ Path_Validation_Result BOTAN_DLL x509_path_validate( * @param ocsp_resp additional OCSP responses to consider (eg from peer) * @return result of the path validation */ -Path_Validation_Result BOTAN_DLL x509_path_validate( +Path_Validation_Result BOTAN_PUBLIC_API(2,0) x509_path_validate( const std::vector<X509_Certificate>& end_certs, const Path_Validation_Restrictions& restrictions, const Certificate_Store& store, @@ -283,7 +283,7 @@ namespace PKIX { * @return result of the path building operation (OK or error) */ Certificate_Status_Code -BOTAN_DLL build_certificate_path(std::vector<std::shared_ptr<const X509_Certificate>>& cert_path_out, +BOTAN_PUBLIC_API(2,0) build_certificate_path(std::vector<std::shared_ptr<const X509_Certificate>>& cert_path_out, const std::vector<Certificate_Store*>& trusted_certstores, const std::shared_ptr<const X509_Certificate>& end_entity, const std::vector<std::shared_ptr<const X509_Certificate>>& end_entity_extra); @@ -306,7 +306,7 @@ BOTAN_DLL build_certificate_path(std::vector<std::shared_ptr<const X509_Certific * then the result for that certificate is successful. If all results are */ CertificatePathStatusCodes -BOTAN_DLL check_chain(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, +BOTAN_PUBLIC_API(2,0) check_chain(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, std::chrono::system_clock::time_point ref_time, const std::string& hostname, Usage_Type usage, @@ -323,7 +323,7 @@ BOTAN_DLL check_chain(const std::vector<std::shared_ptr<const X509_Certificate>> * @return revocation status */ CertificatePathStatusCodes -BOTAN_DLL check_ocsp(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, +BOTAN_PUBLIC_API(2,0) check_ocsp(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, const std::vector<std::shared_ptr<const OCSP::Response>>& ocsp_responses, const std::vector<Certificate_Store*>& certstores, std::chrono::system_clock::time_point ref_time); @@ -338,7 +338,7 @@ BOTAN_DLL check_ocsp(const std::vector<std::shared_ptr<const X509_Certificate>>& * @return revocation status */ CertificatePathStatusCodes -BOTAN_DLL check_crl(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, +BOTAN_PUBLIC_API(2,0) check_crl(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, const std::vector<std::shared_ptr<const X509_CRL>>& crls, std::chrono::system_clock::time_point ref_time); @@ -351,7 +351,7 @@ BOTAN_DLL check_crl(const std::vector<std::shared_ptr<const X509_Certificate>>& * @return revocation status */ CertificatePathStatusCodes -BOTAN_DLL check_crl(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, +BOTAN_PUBLIC_API(2,0) check_crl(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, const std::vector<Certificate_Store*>& certstores, std::chrono::system_clock::time_point ref_time); @@ -372,7 +372,7 @@ BOTAN_DLL check_crl(const std::vector<std::shared_ptr<const X509_Certificate>>& * @return revocation status */ CertificatePathStatusCodes -BOTAN_DLL check_ocsp_online(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, +BOTAN_PUBLIC_API(2,0) check_ocsp_online(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, const std::vector<Certificate_Store*>& trusted_certstores, std::chrono::system_clock::time_point ref_time, std::chrono::milliseconds timeout, @@ -393,7 +393,7 @@ BOTAN_DLL check_ocsp_online(const std::vector<std::shared_ptr<const X509_Certifi * @return revocation status */ CertificatePathStatusCodes -BOTAN_DLL check_crl_online(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, +BOTAN_PUBLIC_API(2,0) check_crl_online(const std::vector<std::shared_ptr<const X509_Certificate>>& cert_path, const std::vector<Certificate_Store*>& trusted_certstores, Certificate_Store_In_Memory* certstore_to_recv_crls, std::chrono::system_clock::time_point ref_time, @@ -405,7 +405,7 @@ BOTAN_DLL check_crl_online(const std::vector<std::shared_ptr<const X509_Certific * Find overall status (OK, error) of a validation * @param cert_status result of merge_revocation_status or check_chain */ -Certificate_Status_Code BOTAN_DLL overall_status(const CertificatePathStatusCodes& cert_status); +Certificate_Status_Code BOTAN_PUBLIC_API(2,0) overall_status(const CertificatePathStatusCodes& cert_status); /** * Merge the results from CRL and/or OCSP checks into chain_status @@ -415,7 +415,7 @@ Certificate_Status_Code BOTAN_DLL overall_status(const CertificatePathStatusCode * @param require_rev_on_end_entity require valid CRL or OCSP on end-entity cert * @param require_rev_on_intermediates require valid CRL or OCSP on all intermediate certificates */ -void BOTAN_DLL merge_revocation_status(CertificatePathStatusCodes& chain_status, +void BOTAN_PUBLIC_API(2,0) merge_revocation_status(CertificatePathStatusCodes& chain_status, const CertificatePathStatusCodes& crl_status, const CertificatePathStatusCodes& ocsp_status, bool require_rev_on_end_entity, diff --git a/src/lib/x509/x509self.h b/src/lib/x509/x509self.h index 156e41f8a..a6ce48cfa 100644 --- a/src/lib/x509/x509self.h +++ b/src/lib/x509/x509self.h @@ -18,7 +18,7 @@ namespace Botan { /** * Options for X.509 certificates. */ -class BOTAN_DLL X509_Cert_Options +class BOTAN_PUBLIC_API(2,0) X509_Cert_Options { public: /** @@ -177,7 +177,7 @@ namespace X509 { * @param rng the rng to use * @return newly created self-signed certificate */ -BOTAN_DLL X509_Certificate +BOTAN_PUBLIC_API(2,0) X509_Certificate create_self_signed_cert(const X509_Cert_Options& opts, const Private_Key& key, const std::string& hash_fn, @@ -191,7 +191,7 @@ create_self_signed_cert(const X509_Cert_Options& opts, * @param hash_fn the hash function to use * @return newly created PKCS#10 request */ -BOTAN_DLL PKCS10_Request create_cert_req(const X509_Cert_Options& opts, +BOTAN_PUBLIC_API(2,0) PKCS10_Request create_cert_req(const X509_Cert_Options& opts, const Private_Key& key, const std::string& hash_fn, RandomNumberGenerator& rng); |