aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/news.rst36
-rw-r--r--readme.rst12
-rw-r--r--src/cmd/credentials.h8
-rw-r--r--src/cmd/fuzzer.cpp4
-rw-r--r--src/lib/asn1/alg_id.h4
-rw-r--r--src/lib/asn1/asn1_alt_name.h4
-rw-r--r--src/lib/asn1/asn1_attribute.h4
-rw-r--r--src/lib/asn1/asn1_oid.h4
-rw-r--r--src/lib/asn1/asn1_str.h4
-rw-r--r--src/lib/asn1/asn1_time.h4
-rw-r--r--src/lib/asn1/ber_dec.cpp12
-rw-r--r--src/lib/asn1/x509_dn.h4
-rw-r--r--src/lib/block/aes/aes.h36
-rw-r--r--src/lib/block/aes_ni/aes_ni.h42
-rw-r--r--src/lib/block/aes_ssse3/aes_ssse3.h36
-rw-r--r--src/lib/block/block_cipher.h4
-rw-r--r--src/lib/block/blowfish/blowfish.h12
-rw-r--r--src/lib/block/camellia/camellia.h36
-rw-r--r--src/lib/block/cascade/cascade.h16
-rw-r--r--src/lib/block/cast/cast128.h12
-rw-r--r--src/lib/block/cast/cast256.h12
-rw-r--r--src/lib/block/des/des.h24
-rw-r--r--src/lib/block/des/desx.h12
-rw-r--r--src/lib/block/gost_28147/gost_28147.h12
-rw-r--r--src/lib/block/idea/idea.h12
-rw-r--r--src/lib/block/idea_sse2/idea_sse2.h8
-rw-r--r--src/lib/block/kasumi/kasumi.h12
-rw-r--r--src/lib/block/lion/lion.h2
-rw-r--r--src/lib/block/mars/mars.h12
-rw-r--r--src/lib/block/misty1/misty1.h12
-rw-r--r--src/lib/block/noekeon/noekeon.h12
-rw-r--r--src/lib/block/noekeon_simd/noekeon_simd.h8
-rw-r--r--src/lib/block/rc2/rc2.h12
-rw-r--r--src/lib/block/rc5/rc5.h12
-rw-r--r--src/lib/block/rc6/rc6.h12
-rw-r--r--src/lib/block/safer/safer_sk.h12
-rw-r--r--src/lib/block/seed/seed.h12
-rw-r--r--src/lib/block/serpent/serpent.h12
-rw-r--r--src/lib/block/serpent_simd/serp_simd.h8
-rw-r--r--src/lib/block/tea/tea.h12
-rw-r--r--src/lib/block/twofish/twofish.h12
-rw-r--r--src/lib/block/xtea/xtea.h12
-rw-r--r--src/lib/block/xtea_simd/xtea_simd.h8
-rw-r--r--src/lib/cert/x509/crl_ent.h4
-rw-r--r--src/lib/cert/x509/pkcs10.h2
-rw-r--r--src/lib/cert/x509/x509_crl.h2
-rw-r--r--src/lib/cert/x509/x509_ext.cpp4
-rw-r--r--src/lib/cert/x509/x509_ext.h153
-rw-r--r--src/lib/cert/x509/x509cert.h2
-rw-r--r--src/lib/entropy/beos_stats/es_beos.h4
-rw-r--r--src/lib/entropy/cryptoapi_rng/es_capi.h4
-rw-r--r--src/lib/entropy/dev_random/dev_random.h4
-rw-r--r--src/lib/entropy/egd/es_egd.h4
-rw-r--r--src/lib/entropy/hres_timer/hres_timer.h4
-rw-r--r--src/lib/entropy/proc_walk/proc_walk.cpp2
-rw-r--r--src/lib/entropy/proc_walk/proc_walk.h4
-rw-r--r--src/lib/entropy/rdrand/rdrand.h4
-rw-r--r--src/lib/entropy/unix_procs/unix_procs.h6
-rw-r--r--src/lib/entropy/win32_stats/es_win32.h4
-rw-r--r--src/lib/ffi/ffi.cpp6
-rw-r--r--src/lib/filters/basefilt.h16
-rw-r--r--src/lib/filters/codec_filt/b64_filt.cpp5
-rw-r--r--src/lib/filters/codec_filt/b64_filt.h12
-rw-r--r--src/lib/filters/codec_filt/hex_filt.h12
-rw-r--r--src/lib/filters/data_snk.h6
-rw-r--r--src/lib/filters/data_src.cpp28
-rw-r--r--src/lib/filters/data_src.h22
-rw-r--r--src/lib/filters/filters.h24
-rw-r--r--src/lib/filters/pipe.cpp4
-rw-r--r--src/lib/filters/pipe.h13
-rw-r--r--src/lib/filters/pipe_rw.cpp10
-rw-r--r--src/lib/filters/secqueue.h16
-rw-r--r--src/lib/hash/checksum/adler32/adler32.h12
-rw-r--r--src/lib/hash/checksum/crc24/crc24.h12
-rw-r--r--src/lib/hash/checksum/crc32/crc32.h12
-rw-r--r--src/lib/hash/comb4p/comb4p.h14
-rw-r--r--src/lib/hash/gost_3411/gost_3411.h14
-rw-r--r--src/lib/hash/has160/has160.h12
-rw-r--r--src/lib/hash/keccak/keccak.h14
-rw-r--r--src/lib/hash/md2/md2.h14
-rw-r--r--src/lib/hash/md4/md4.h12
-rw-r--r--src/lib/hash/md5/md5.h12
-rw-r--r--src/lib/hash/mdx_hash/mdx_hash.h8
-rw-r--r--src/lib/hash/par_hash/par_hash.h12
-rw-r--r--src/lib/hash/rmd128/rmd128.h12
-rw-r--r--src/lib/hash/rmd160/rmd160.h12
-rw-r--r--src/lib/hash/sha1/sha160.h12
-rw-r--r--src/lib/hash/sha1_sse2/sha1_sse2.h4
-rw-r--r--src/lib/hash/sha2_32/sha2_32.h24
-rw-r--r--src/lib/hash/sha2_64/sha2_64.h36
-rw-r--r--src/lib/hash/skein/skein_512.h14
-rw-r--r--src/lib/hash/tiger/tiger.h12
-rw-r--r--src/lib/hash/whirlpool/whrlpool.h12
-rw-r--r--src/lib/kdf/hkdf/hkdf.h4
-rw-r--r--src/lib/kdf/prf_tls/prf_tls.h8
-rw-r--r--src/lib/kdf/prf_x942/prf_x942.h4
-rw-r--r--src/lib/mac/cbc_mac/cbc_mac.h16
-rw-r--r--src/lib/mac/cmac/cmac.h16
-rw-r--r--src/lib/mac/hmac/hmac.h16
-rw-r--r--src/lib/mac/mac.h6
-rw-r--r--src/lib/mac/poly1305/poly1305.h14
-rw-r--r--src/lib/mac/siphash/siphash.h16
-rw-r--r--src/lib/mac/x919_mac/x919_mac.h16
-rw-r--r--src/lib/math/numbertheory/def_powm.h16
-rw-r--r--src/lib/modes/aead/ccm/ccm.h4
-rw-r--r--src/lib/modes/aead/gcm/gcm.h7
-rw-r--r--src/lib/modes/cbc/cbc.h4
-rw-r--r--src/lib/modes/mode_pad/mode_pad.h24
-rw-r--r--src/lib/modes/stream_mode.h2
-rw-r--r--src/lib/pbkdf/pbkdf1/pbkdf1.h4
-rw-r--r--src/lib/pk_pad/eme_oaep/oaep.h6
-rw-r--r--src/lib/pk_pad/eme_pkcs1/eme_pkcs.h6
-rw-r--r--src/lib/pk_pad/eme_raw/eme_raw.h6
-rw-r--r--src/lib/pk_pad/emsa1/emsa1.h8
-rw-r--r--src/lib/pk_pad/emsa1_bsi/emsa1_bsi.h2
-rw-r--r--src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h16
-rw-r--r--src/lib/pk_pad/emsa_pssr/pssr.h8
-rw-r--r--src/lib/pk_pad/emsa_raw/emsa_raw.h8
-rw-r--r--src/lib/pk_pad/emsa_x931/emsa_x931.h8
-rw-r--r--src/lib/pubkey/curve25519/curve25519.cpp2
-rw-r--r--src/lib/pubkey/curve25519/curve25519.h2
-rw-r--r--src/lib/pubkey/dh/dh.cpp2
-rw-r--r--src/lib/pubkey/dh/dh.h8
-rw-r--r--src/lib/pubkey/dl_algo/dl_algo.h10
-rw-r--r--src/lib/pubkey/dlies/dlies.h6
-rw-r--r--src/lib/pubkey/dsa/dsa.cpp6
-rw-r--r--src/lib/pubkey/dsa/dsa.h12
-rw-r--r--src/lib/pubkey/ecc_key/ecc_key.h8
-rw-r--r--src/lib/pubkey/ecdh/ecdh.cpp2
-rw-r--r--src/lib/pubkey/ecdh/ecdh.h7
-rw-r--r--src/lib/pubkey/ecdsa/ecdsa.h11
-rw-r--r--src/lib/pubkey/elgamal/elgamal.cpp3
-rw-r--r--src/lib/pubkey/elgamal/elgamal.h8
-rw-r--r--src/lib/pubkey/gost_3410/gost_3410.cpp2
-rw-r--r--src/lib/pubkey/gost_3410/gost_3410.h14
-rw-r--r--src/lib/pubkey/if_algo/if_algo.h12
-rw-r--r--src/lib/pubkey/mce/mceliece.h8
-rw-r--r--src/lib/pubkey/mce/mceliece_key.h18
-rw-r--r--src/lib/pubkey/nr/nr.h12
-rw-r--r--src/lib/pubkey/pk_keys.h2
-rw-r--r--src/lib/pubkey/pubkey.h6
-rw-r--r--src/lib/pubkey/rsa/rsa.h4
-rw-r--r--src/lib/pubkey/rw/rw.cpp6
-rw-r--r--src/lib/pubkey/rw/rw.h4
-rw-r--r--src/lib/rng/auto_rng/auto_rng.h12
-rw-r--r--src/lib/rng/hmac_drbg/hmac_drbg.h12
-rw-r--r--src/lib/rng/rng.h12
-rw-r--r--src/lib/rng/system_rng/system_rng.cpp12
-rw-r--r--src/lib/rng/x931_rng/x931_rng.h12
-rw-r--r--src/lib/stream/chacha/chacha.h16
-rw-r--r--src/lib/stream/ctr/ctr.h16
-rw-r--r--src/lib/stream/ofb/ofb.h16
-rw-r--r--src/lib/stream/rc4/rc4.h12
-rw-r--r--src/lib/stream/salsa20/salsa20.h16
-rw-r--r--src/lib/tls/tls_extensions.h60
-rw-r--r--src/lib/utils/exceptn.h2
-rw-r--r--src/tests/catchy/test_bigint.cpp40
-rw-r--r--src/tests/data/fuzz/x509/afl_000.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_001.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_002.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_003.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_004.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_005.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_006.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_007.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_008.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_009.pem14
-rw-r--r--src/tests/data/fuzz/x509/afl_010.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_011.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_012.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_013.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_014.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_015.pem5
-rw-r--r--src/tests/data/fuzz/x509/afl_016.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_017.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_018.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_019.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_020.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_021.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_022.pem12
-rw-r--r--src/tests/data/fuzz/x509/afl_023.pem13
-rw-r--r--src/tests/data/fuzz/x509/afl_024.pem3
-rw-r--r--src/tests/data/fuzz/x509/afl_025.pem3
-rw-r--r--src/tests/data/fuzz/x509/afl_026.pembin0 -> 35 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_027.pembin0 -> 10 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_028.pembin0 -> 22 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_029.pembin0 -> 60 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_030.pem1
-rw-r--r--src/tests/data/fuzz/x509/afl_031.pem1
-rw-r--r--src/tests/data/fuzz/x509/afl_032.pembin0 -> 134 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_033.pembin0 -> 134 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_034.pem4
-rw-r--r--src/tests/data/fuzz/x509/afl_035.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_036.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_037.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_038.pembin0 -> 634 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_039.pembin0 -> 631 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_040.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_041.pembin0 -> 637 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_042.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_043.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_044.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_045.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_046.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_047.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_048.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_049.pembin0 -> 639 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_050.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_051.pembin0 -> 624 bytes
-rw-r--r--src/tests/data/fuzz/x509/afl_052.pembin0 -> 624 bytes
-rw-r--r--src/tests/test_fuzz.cpp68
-rw-r--r--src/tests/test_rng.cpp2
-rw-r--r--src/tests/test_rng.h12
-rw-r--r--src/tests/tests.cpp1
-rw-r--r--src/tests/tests.h2
215 files changed, 1383 insertions, 899 deletions
diff --git a/doc/news.rst b/doc/news.rst
index 970af882e..54c0a3c36 100644
--- a/doc/news.rst
+++ b/doc/news.rst
@@ -1,9 +1,19 @@
Release Notes
========================================
-Version 1.11.19, Not Yet Released
+Version 1.11.19, 2015-08-03
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* SECURITY: The BER decoder would crash due to reading from offset 0
+ of an empty vector if it encountered a BIT STRING which did not
+ contain any data at all. As the type requires a 1 byte field this is
+ not valid BER but could occur in malformed data. Found with afl.
+
+* SECURITY: The BER decoder would allocate a fairly arbitrary amount
+ of memory in a length field, even if there was no chance the read
+ request would succeed. This might cause the process to run out of
+ memory or invoke the OOM killer. Found with afl.
+
* The TLS heartbeat extension is deprecated and unless strong arguments
are raised in its favor it will be removed in a future release.
Comment at https://github.com/randombit/botan/issues/187
@@ -17,7 +27,29 @@ Version 1.11.19, Not Yet Released
* BigInt::to_u32bit would fail if the value was exactly 32 bits.
GH #220
- Version 1.11.18, 2015-07-05
+Version 1.10.10, 2015-08-03
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* SECURITY: The BER decoder would crash due to reading from offset 0
+ of an empty vector if it encountered a BIT STRING which did not
+ contain any data at all. As the type requires a 1 byte field this is
+ not valid BER but could occur in malformed data. Found with afl.
+
+* SECURITY: The BER decoder would allocate a fairly arbitrary amount
+ of memory in a length field, even if there was no chance the read
+ request would succeed. This might cause the process to run out of
+ memory or invoke the OOM killer. Found with afl.
+
+* Due to an ABI incompatible (though not API incompatible) change in
+ this release, the version number of the shared object has been
+ increased.
+
+* The default TLS policy no longer allows RC4.
+
+* Fix a signed integer overflow in Blue Midnight Wish that may cause
+ incorrect computations or undefined behavior.
+
+Version 1.11.18, 2015-07-05
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* In this release Botan has switched VCS from ``monotone`` to ``git``,
diff --git a/readme.rst b/readme.rst
index d522f902c..a246d4337 100644
--- a/readme.rst
+++ b/readme.rst
@@ -89,9 +89,9 @@ Current Development Series (1.11)
A new development release is made on the first Monday of every month.
The latest development release is
-`1.11.18 <http://botan.randombit.net/releases/Botan-1.11.18.tgz>`_
-`(sig) <http://botan.randombit.net/releases/Botan-1.11.18.tgz.asc>`_
-released 2015-07-05
+`1.11.19 <http://botan.randombit.net/releases/Botan-1.11.19.tgz>`_
+`(sig) <http://botan.randombit.net/releases/Botan-1.11.19.tgz.asc>`_
+released 2015-08-03
Botan 1.11 requires a working C++11 compiler; GCC 4.8 and later,
Clang 3.4 and later, and MSVC 2013 are regularly tested.
@@ -100,9 +100,9 @@ Current Stable Series (1.10)
----------------------------------------
The latest stable branch release is
-`1.10.9 <http://botan.randombit.net/releases/Botan-1.10.9.tgz>`_
-`(sig) <http://botan.randombit.net/releases/Botan-1.10.9.tgz.asc>`_
-released 2014-12-13
+`1.10.10 <http://botan.randombit.net/releases/Botan-1.10.10.tgz>`_
+`(sig) <http://botan.randombit.net/releases/Botan-1.10.10.tgz.asc>`_
+released 2015-08-03
Botan 1.10 is the last version written in C++98.
diff --git a/src/cmd/credentials.h b/src/cmd/credentials.h
index afd83420b..9056f31eb 100644
--- a/src/cmd/credentials.h
+++ b/src/cmd/credentials.h
@@ -82,7 +82,7 @@ class Basic_Credentials_Manager : public Credentials_Manager
std::vector<Botan::Certificate_Store*>
trusted_certificate_authorities(const std::string& type,
- const std::string& /*hostname*/)
+ const std::string& /*hostname*/) override
{
std::vector<Botan::Certificate_Store*> v;
@@ -99,7 +99,7 @@ class Basic_Credentials_Manager : public Credentials_Manager
void verify_certificate_chain(
const std::string& type,
const std::string& purported_hostname,
- const std::vector<X509_Certificate>& cert_chain)
+ const std::vector<X509_Certificate>& cert_chain) override
{
try
{
@@ -117,7 +117,7 @@ class Basic_Credentials_Manager : public Credentials_Manager
std::vector<X509_Certificate> cert_chain(
const std::vector<std::string>& algos,
const std::string& type,
- const std::string& hostname)
+ const std::string& hostname) override
{
BOTAN_UNUSED(type);
@@ -137,7 +137,7 @@ class Basic_Credentials_Manager : public Credentials_Manager
Private_Key* private_key_for(const X509_Certificate& cert,
const std::string& /*type*/,
- const std::string& /*context*/)
+ const std::string& /*context*/) override
{
for(auto&& i : m_creds)
{
diff --git a/src/cmd/fuzzer.cpp b/src/cmd/fuzzer.cpp
index a94706967..2bbffd288 100644
--- a/src/cmd/fuzzer.cpp
+++ b/src/cmd/fuzzer.cpp
@@ -38,9 +38,9 @@ class Fuzzer_Creds : public Credentials_Manager
catch(std::exception& e) {}
}
- std::string psk_identity_hint(const std::string&, const std::string&) { return "psk_hint"; }
+ std::string psk_identity_hint(const std::string&, const std::string&) override { return "psk_hint"; }
std::string psk_identity(const std::string&, const std::string&) { return "psk_id"; }
- SymmetricKey psk(const std::string&, const std::string&, const std::string&)
+ SymmetricKey psk(const std::string&, const std::string&, const std::string&) override
{
return SymmetricKey("AABBCCDDEEFF00112233445566778899");
}
diff --git a/src/lib/asn1/alg_id.h b/src/lib/asn1/alg_id.h
index 5083274f1..9e36fd120 100644
--- a/src/lib/asn1/alg_id.h
+++ b/src/lib/asn1/alg_id.h
@@ -22,8 +22,8 @@ class BOTAN_DLL AlgorithmIdentifier : public ASN1_Object
public:
enum Encoding_Option { USE_NULL_PARAM };
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
AlgorithmIdentifier() {}
AlgorithmIdentifier(const OID&, Encoding_Option);
diff --git a/src/lib/asn1/asn1_alt_name.h b/src/lib/asn1/asn1_alt_name.h
index daf62d464..91ba2bcf1 100644
--- a/src/lib/asn1/asn1_alt_name.h
+++ b/src/lib/asn1/asn1_alt_name.h
@@ -22,8 +22,8 @@ namespace Botan {
class BOTAN_DLL AlternativeName : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
std::multimap<std::string, std::string> contents() const;
diff --git a/src/lib/asn1/asn1_attribute.h b/src/lib/asn1/asn1_attribute.h
index e094bd3aa..371b0f99a 100644
--- a/src/lib/asn1/asn1_attribute.h
+++ b/src/lib/asn1/asn1_attribute.h
@@ -20,8 +20,8 @@ namespace Botan {
class BOTAN_DLL Attribute : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder& to) const;
- void decode_from(class BER_Decoder& from);
+ void encode_into(class DER_Encoder& to) const override;
+ void decode_from(class BER_Decoder& from) override;
OID oid;
std::vector<byte> parameters;
diff --git a/src/lib/asn1/asn1_oid.h b/src/lib/asn1/asn1_oid.h
index cf4fd9f54..7cdb9f58f 100644
--- a/src/lib/asn1/asn1_oid.h
+++ b/src/lib/asn1/asn1_oid.h
@@ -20,8 +20,8 @@ namespace Botan {
class BOTAN_DLL OID : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
/**
* Find out whether this OID is empty
diff --git a/src/lib/asn1/asn1_str.h b/src/lib/asn1/asn1_str.h
index 911331c9c..84458e517 100644
--- a/src/lib/asn1/asn1_str.h
+++ b/src/lib/asn1/asn1_str.h
@@ -18,8 +18,8 @@ namespace Botan {
class BOTAN_DLL ASN1_String : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
std::string value() const;
std::string iso_8859() const;
diff --git a/src/lib/asn1/asn1_time.h b/src/lib/asn1/asn1_time.h
index 6650f2fd4..6200d7b62 100644
--- a/src/lib/asn1/asn1_time.h
+++ b/src/lib/asn1/asn1_time.h
@@ -19,8 +19,8 @@ namespace Botan {
class BOTAN_DLL X509_Time : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
std::string as_string() const;
std::string readable_string() const;
diff --git a/src/lib/asn1/ber_dec.cpp b/src/lib/asn1/ber_dec.cpp
index 06543d9e7..4267d79dc 100644
--- a/src/lib/asn1/ber_dec.cpp
+++ b/src/lib/asn1/ber_dec.cpp
@@ -1,6 +1,7 @@
+
/*
* BER Decoder
-* (C) 1999-2008 Jack Lloyd
+* (C) 1999-2008,2015 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -218,7 +219,10 @@ BER_Object BER_Decoder::get_next_object()
if(next.type_tag == NO_OBJECT)
return next;
- size_t length = decode_length(source);
+ const size_t length = decode_length(source);
+ if(!source->check_available(length))
+ throw BER_Decoding_Error("Value truncated");
+
next.value.resize(length);
if(source->read(next.value.data(), length) != length)
throw BER_Decoding_Error("Value truncated");
@@ -526,6 +530,8 @@ BER_Decoder& BER_Decoder::decode(secure_vector<byte>& buffer,
buffer = obj.value;
else
{
+ if(obj.value.empty())
+ throw BER_Decoding_Error("Invalid BIT STRING");
if(obj.value[0] >= 8)
throw BER_Decoding_Error("Bad number of unused bits in BIT STRING");
@@ -549,6 +555,8 @@ BER_Decoder& BER_Decoder::decode(std::vector<byte>& buffer,
buffer = unlock(obj.value);
else
{
+ if(obj.value.empty())
+ throw BER_Decoding_Error("Invalid BIT STRING");
if(obj.value[0] >= 8)
throw BER_Decoding_Error("Bad number of unused bits in BIT STRING");
diff --git a/src/lib/asn1/x509_dn.h b/src/lib/asn1/x509_dn.h
index 43e0103bd..cf1fbc03b 100644
--- a/src/lib/asn1/x509_dn.h
+++ b/src/lib/asn1/x509_dn.h
@@ -22,8 +22,8 @@ namespace Botan {
class BOTAN_DLL X509_DN : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
std::multimap<OID, std::string> get_attributes() const;
std::vector<std::string> get_attribute(const std::string&) const;
diff --git a/src/lib/block/aes/aes.h b/src/lib/block/aes/aes.h
index b57d4ce65..f8b8d2938 100644
--- a/src/lib/block/aes/aes.h
+++ b/src/lib/block/aes/aes.h
@@ -18,15 +18,15 @@ namespace Botan {
class BOTAN_DLL AES_128 : public Block_Cipher_Fixed_Params<16, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
+ void clear() override;
- std::string name() const { return "AES-128"; }
- BlockCipher* clone() const { return new AES_128; }
+ std::string name() const override { return "AES-128"; }
+ BlockCipher* clone() const override { return new AES_128; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u32bit> EK, DK;
secure_vector<byte> ME, MD;
@@ -38,15 +38,15 @@ class BOTAN_DLL AES_128 : public Block_Cipher_Fixed_Params<16, 16>
class BOTAN_DLL AES_192 : public Block_Cipher_Fixed_Params<16, 24>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
+ void clear() override;
- std::string name() const { return "AES-192"; }
- BlockCipher* clone() const { return new AES_192; }
+ std::string name() const override { return "AES-192"; }
+ BlockCipher* clone() const override { return new AES_192; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u32bit> EK, DK;
secure_vector<byte> ME, MD;
@@ -58,15 +58,15 @@ class BOTAN_DLL AES_192 : public Block_Cipher_Fixed_Params<16, 24>
class BOTAN_DLL AES_256 : public Block_Cipher_Fixed_Params<16, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
+ void clear() override;
- std::string name() const { return "AES-256"; }
- BlockCipher* clone() const { return new AES_256; }
+ std::string name() const override { return "AES-256"; }
+ BlockCipher* clone() const override { return new AES_256; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u32bit> EK, DK;
secure_vector<byte> ME, MD;
diff --git a/src/lib/block/aes_ni/aes_ni.h b/src/lib/block/aes_ni/aes_ni.h
index f329b409e..0f85c3482 100644
--- a/src/lib/block/aes_ni/aes_ni.h
+++ b/src/lib/block/aes_ni/aes_ni.h
@@ -18,16 +18,16 @@ namespace Botan {
class BOTAN_DLL AES_128_NI : public Block_Cipher_Fixed_Params<16, 16>
{
public:
- size_t parallelism() const { return 4; }
+ size_t parallelism() const override { return 4; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "AES-128"; }
- BlockCipher* clone() const { return new AES_128_NI; }
+ void clear() override;
+ std::string name() const override { return "AES-128"; }
+ BlockCipher* clone() const override { return new AES_128_NI; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
@@ -38,16 +38,16 @@ class BOTAN_DLL AES_128_NI : public Block_Cipher_Fixed_Params<16, 16>
class BOTAN_DLL AES_192_NI : public Block_Cipher_Fixed_Params<16, 24>
{
public:
- size_t parallelism() const { return 4; }
+ size_t parallelism() const override { return 4; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "AES-192"; }
- BlockCipher* clone() const { return new AES_192_NI; }
+ void clear() override;
+ std::string name() const override { return "AES-192"; }
+ BlockCipher* clone() const override { return new AES_192_NI; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
@@ -58,16 +58,16 @@ class BOTAN_DLL AES_192_NI : public Block_Cipher_Fixed_Params<16, 24>
class BOTAN_DLL AES_256_NI : public Block_Cipher_Fixed_Params<16, 32>
{
public:
- size_t parallelism() const { return 4; }
+ size_t parallelism() const override { return 4; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "AES-256"; }
- BlockCipher* clone() const { return new AES_256_NI; }
+ void clear() override;
+ std::string name() const override { return "AES-256"; }
+ BlockCipher* clone() const override { return new AES_256_NI; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
diff --git a/src/lib/block/aes_ssse3/aes_ssse3.h b/src/lib/block/aes_ssse3/aes_ssse3.h
index 4e3df39e9..49e0346e4 100644
--- a/src/lib/block/aes_ssse3/aes_ssse3.h
+++ b/src/lib/block/aes_ssse3/aes_ssse3.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL AES_128_SSSE3 : public Block_Cipher_Fixed_Params<16, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "AES-128"; }
- BlockCipher* clone() const { return new AES_128_SSSE3; }
+ void clear() override;
+ std::string name() const override { return "AES-128"; }
+ BlockCipher* clone() const override { return new AES_128_SSSE3; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
@@ -36,14 +36,14 @@ class BOTAN_DLL AES_128_SSSE3 : public Block_Cipher_Fixed_Params<16, 16>
class BOTAN_DLL AES_192_SSSE3 : public Block_Cipher_Fixed_Params<16, 24>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "AES-192"; }
- BlockCipher* clone() const { return new AES_192_SSSE3; }
+ void clear() override;
+ std::string name() const override { return "AES-192"; }
+ BlockCipher* clone() const override { return new AES_192_SSSE3; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
@@ -54,14 +54,14 @@ class BOTAN_DLL AES_192_SSSE3 : public Block_Cipher_Fixed_Params<16, 24>
class BOTAN_DLL AES_256_SSSE3 : public Block_Cipher_Fixed_Params<16, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "AES-256"; }
- BlockCipher* clone() const { return new AES_256_SSSE3; }
+ void clear() override;
+ std::string name() const override { return "AES-256"; }
+ BlockCipher* clone() const override { return new AES_256_SSSE3; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
diff --git a/src/lib/block/block_cipher.h b/src/lib/block/block_cipher.h
index 060dbb29b..08bf18fd3 100644
--- a/src/lib/block/block_cipher.h
+++ b/src/lib/block/block_cipher.h
@@ -151,9 +151,9 @@ class Block_Cipher_Fixed_Params : public BlockCipher
{
public:
enum { BLOCK_SIZE = BS };
- size_t block_size() const { return BS; }
+ size_t block_size() const override { return BS; }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(KMIN, KMAX, KMOD);
}
diff --git a/src/lib/block/blowfish/blowfish.h b/src/lib/block/blowfish/blowfish.h
index 8653bb7d6..e1042465f 100644
--- a/src/lib/block/blowfish/blowfish.h
+++ b/src/lib/block/blowfish/blowfish.h
@@ -18,8 +18,8 @@ namespace Botan {
class BOTAN_DLL Blowfish : public Block_Cipher_Fixed_Params<8, 1, 56>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
/**
* Modified EKSBlowfish key schedule, used for bcrypt password hashing
@@ -27,11 +27,11 @@ class BOTAN_DLL Blowfish : public Block_Cipher_Fixed_Params<8, 1, 56>
void eks_key_schedule(const byte key[], size_t key_length,
const byte salt[16], size_t workfactor);
- void clear();
- std::string name() const { return "Blowfish"; }
- BlockCipher* clone() const { return new Blowfish; }
+ void clear() override;
+ std::string name() const override { return "Blowfish"; }
+ BlockCipher* clone() const override { return new Blowfish; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
void key_expansion(const byte key[],
size_t key_length,
diff --git a/src/lib/block/camellia/camellia.h b/src/lib/block/camellia/camellia.h
index ea08ce2a2..884cb2bd7 100644
--- a/src/lib/block/camellia/camellia.h
+++ b/src/lib/block/camellia/camellia.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL Camellia_128 : public Block_Cipher_Fixed_Params<16, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "Camellia-128"; }
- BlockCipher* clone() const { return new Camellia_128; }
+ void clear() override;
+ std::string name() const override { return "Camellia-128"; }
+ BlockCipher* clone() const override { return new Camellia_128; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u64bit> SK;
};
@@ -36,14 +36,14 @@ class BOTAN_DLL Camellia_128 : public Block_Cipher_Fixed_Params<16, 16>
class BOTAN_DLL Camellia_192 : public Block_Cipher_Fixed_Params<16, 24>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "Camellia-192"; }
- BlockCipher* clone() const { return new Camellia_192; }
+ void clear() override;
+ std::string name() const override { return "Camellia-192"; }
+ BlockCipher* clone() const override { return new Camellia_192; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u64bit> SK;
};
@@ -54,14 +54,14 @@ class BOTAN_DLL Camellia_192 : public Block_Cipher_Fixed_Params<16, 24>
class BOTAN_DLL Camellia_256 : public Block_Cipher_Fixed_Params<16, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "Camellia-256"; }
- BlockCipher* clone() const { return new Camellia_256; }
+ void clear() override;
+ std::string name() const override { return "Camellia-256"; }
+ BlockCipher* clone() const override { return new Camellia_256; }
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u64bit> SK;
};
diff --git a/src/lib/block/cascade/cascade.h b/src/lib/block/cascade/cascade.h
index e96c34549..386f1bd21 100644
--- a/src/lib/block/cascade/cascade.h
+++ b/src/lib/block/cascade/cascade.h
@@ -18,20 +18,20 @@ namespace Botan {
class BOTAN_DLL Cascade_Cipher : public BlockCipher
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- size_t block_size() const { return m_block; }
+ size_t block_size() const override { return m_block; }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(m_cipher1->maximum_keylength() +
m_cipher2->maximum_keylength());
}
- void clear();
- std::string name() const;
- BlockCipher* clone() const;
+ void clear() override;
+ std::string name() const override;
+ BlockCipher* clone() const override;
static Cascade_Cipher* make(const Spec& spec);
@@ -45,7 +45,7 @@ class BOTAN_DLL Cascade_Cipher : public BlockCipher
Cascade_Cipher(const Cascade_Cipher&) = delete;
Cascade_Cipher& operator=(const Cascade_Cipher&) = delete;
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
size_t m_block;
std::unique_ptr<BlockCipher> m_cipher1, m_cipher2;
diff --git a/src/lib/block/cast/cast128.h b/src/lib/block/cast/cast128.h
index ed28d6a71..2a0f4462a 100644
--- a/src/lib/block/cast/cast128.h
+++ b/src/lib/block/cast/cast128.h
@@ -18,15 +18,15 @@ namespace Botan {
class BOTAN_DLL CAST_128 : public Block_Cipher_Fixed_Params<8, 11, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "CAST-128"; }
- BlockCipher* clone() const { return new CAST_128; }
+ void clear() override;
+ std::string name() const override { return "CAST-128"; }
+ BlockCipher* clone() const override { return new CAST_128; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
static void cast_ks(secure_vector<u32bit>& ks,
secure_vector<u32bit>& user_key);
diff --git a/src/lib/block/cast/cast256.h b/src/lib/block/cast/cast256.h
index 206b4d83e..9f7546711 100644
--- a/src/lib/block/cast/cast256.h
+++ b/src/lib/block/cast/cast256.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL CAST_256 : public Block_Cipher_Fixed_Params<16, 4, 32, 4>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "CAST-256"; }
- BlockCipher* clone() const { return new CAST_256; }
+ void clear() override;
+ std::string name() const override { return "CAST-256"; }
+ BlockCipher* clone() const override { return new CAST_256; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> MK;
secure_vector<byte> RK;
diff --git a/src/lib/block/des/des.h b/src/lib/block/des/des.h
index aa201e560..1a2fdc5c9 100644
--- a/src/lib/block/des/des.h
+++ b/src/lib/block/des/des.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL DES : public Block_Cipher_Fixed_Params<8, 8>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "DES"; }
- BlockCipher* clone() const { return new DES; }
+ void clear() override;
+ std::string name() const override { return "DES"; }
+ BlockCipher* clone() const override { return new DES; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> round_key;
};
@@ -36,14 +36,14 @@ class BOTAN_DLL DES : public Block_Cipher_Fixed_Params<8, 8>
class BOTAN_DLL TripleDES : public Block_Cipher_Fixed_Params<8, 16, 24, 8>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "TripleDES"; }
- BlockCipher* clone() const { return new TripleDES; }
+ void clear() override;
+ std::string name() const override { return "TripleDES"; }
+ BlockCipher* clone() const override { return new TripleDES; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> round_key;
};
diff --git a/src/lib/block/des/desx.h b/src/lib/block/des/desx.h
index f324ed7d5..0f155b241 100644
--- a/src/lib/block/des/desx.h
+++ b/src/lib/block/des/desx.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL DESX : public Block_Cipher_Fixed_Params<8, 24>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "DESX"; }
- BlockCipher* clone() const { return new DESX; }
+ void clear() override;
+ std::string name() const override { return "DESX"; }
+ BlockCipher* clone() const override { return new DESX; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<byte> K1, K2;
DES des;
};
diff --git a/src/lib/block/gost_28147/gost_28147.h b/src/lib/block/gost_28147/gost_28147.h
index 6d6e546f2..3cf1c4578 100644
--- a/src/lib/block/gost_28147/gost_28147.h
+++ b/src/lib/block/gost_28147/gost_28147.h
@@ -52,13 +52,13 @@ class BOTAN_DLL GOST_28147_89_Params
class BOTAN_DLL GOST_28147_89 : public Block_Cipher_Fixed_Params<8, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
+ void clear() override;
- std::string name() const;
- BlockCipher* clone() const { return new GOST_28147_89(SBOX); }
+ std::string name() const override;
+ BlockCipher* clone() const override { return new GOST_28147_89(SBOX); }
/**
* @param params the sbox parameters to use
@@ -68,7 +68,7 @@ class BOTAN_DLL GOST_28147_89 : public Block_Cipher_Fixed_Params<8, 32>
GOST_28147_89(const std::vector<u32bit>& other_SBOX) :
SBOX(other_SBOX), EK(8) {}
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
/*
* The sbox is not secret, this is just a larger expansion of it
diff --git a/src/lib/block/idea/idea.h b/src/lib/block/idea/idea.h
index 3c01ad873..68d4d61b0 100644
--- a/src/lib/block/idea/idea.h
+++ b/src/lib/block/idea/idea.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL IDEA : public Block_Cipher_Fixed_Params<8, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "IDEA"; }
- BlockCipher* clone() const { return new IDEA; }
+ void clear() override;
+ std::string name() const override { return "IDEA"; }
+ BlockCipher* clone() const override { return new IDEA; }
protected:
/**
* @return const reference to encryption subkeys
@@ -36,7 +36,7 @@ class BOTAN_DLL IDEA : public Block_Cipher_Fixed_Params<8, 16>
const secure_vector<u16bit>& get_DK() const { return DK; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u16bit> EK, DK;
};
diff --git a/src/lib/block/idea_sse2/idea_sse2.h b/src/lib/block/idea_sse2/idea_sse2.h
index 10d19688e..18ea7c74d 100644
--- a/src/lib/block/idea_sse2/idea_sse2.h
+++ b/src/lib/block/idea_sse2/idea_sse2.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL IDEA_SSE2 : public IDEA
{
public:
- size_t parallelism() const { return 8; }
+ size_t parallelism() const override { return 8; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- BlockCipher* clone() const { return new IDEA_SSE2; }
+ BlockCipher* clone() const override { return new IDEA_SSE2; }
};
}
diff --git a/src/lib/block/kasumi/kasumi.h b/src/lib/block/kasumi/kasumi.h
index 97e8dbb31..9f86279af 100644
--- a/src/lib/block/kasumi/kasumi.h
+++ b/src/lib/block/kasumi/kasumi.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL KASUMI : public Block_Cipher_Fixed_Params<8, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "KASUMI"; }
- BlockCipher* clone() const { return new KASUMI; }
+ void clear() override;
+ std::string name() const override { return "KASUMI"; }
+ BlockCipher* clone() const override { return new KASUMI; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u16bit> EK;
};
diff --git a/src/lib/block/lion/lion.h b/src/lib/block/lion/lion.h
index 451ee9f88..d03d1d1a0 100644
--- a/src/lib/block/lion/lion.h
+++ b/src/lib/block/lion/lion.h
@@ -48,7 +48,7 @@ class BOTAN_DLL Lion : public BlockCipher
StreamCipher* cipher,
size_t block_size);
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
size_t left_size() const { return m_hash->output_length(); }
size_t right_size() const { return m_block_size - left_size(); }
diff --git a/src/lib/block/mars/mars.h b/src/lib/block/mars/mars.h
index 90de963ce..250fd2731 100644
--- a/src/lib/block/mars/mars.h
+++ b/src/lib/block/mars/mars.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL MARS : public Block_Cipher_Fixed_Params<16, 16, 32, 4>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "MARS"; }
- BlockCipher* clone() const { return new MARS; }
+ void clear() override;
+ std::string name() const override { return "MARS"; }
+ BlockCipher* clone() const override { return new MARS; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK;
};
diff --git a/src/lib/block/misty1/misty1.h b/src/lib/block/misty1/misty1.h
index 177c2c0b5..56153f929 100644
--- a/src/lib/block/misty1/misty1.h
+++ b/src/lib/block/misty1/misty1.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL MISTY1 : public Block_Cipher_Fixed_Params<8, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "MISTY1"; }
- BlockCipher* clone() const { return new MISTY1; }
+ void clear() override;
+ std::string name() const override { return "MISTY1"; }
+ BlockCipher* clone() const override { return new MISTY1; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u16bit> EK, DK;
};
diff --git a/src/lib/block/noekeon/noekeon.h b/src/lib/block/noekeon/noekeon.h
index 36be5903c..7b5b6d11b 100644
--- a/src/lib/block/noekeon/noekeon.h
+++ b/src/lib/block/noekeon/noekeon.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL Noekeon : public Block_Cipher_Fixed_Params<16, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "Noekeon"; }
- BlockCipher* clone() const { return new Noekeon; }
+ void clear() override;
+ std::string name() const override { return "Noekeon"; }
+ BlockCipher* clone() const override { return new Noekeon; }
protected:
/**
* The Noekeon round constants
@@ -41,7 +41,7 @@ class BOTAN_DLL Noekeon : public Block_Cipher_Fixed_Params<16, 16>
const secure_vector<u32bit>& get_DK() const { return DK; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK, DK;
};
diff --git a/src/lib/block/noekeon_simd/noekeon_simd.h b/src/lib/block/noekeon_simd/noekeon_simd.h
index eaf48a364..8d40d13dd 100644
--- a/src/lib/block/noekeon_simd/noekeon_simd.h
+++ b/src/lib/block/noekeon_simd/noekeon_simd.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL Noekeon_SIMD : public Noekeon
{
public:
- size_t parallelism() const { return 4; }
+ size_t parallelism() const override { return 4; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- BlockCipher* clone() const { return new Noekeon_SIMD; }
+ BlockCipher* clone() const override { return new Noekeon_SIMD; }
};
}
diff --git a/src/lib/block/rc2/rc2.h b/src/lib/block/rc2/rc2.h
index 1ae58e186..11956f408 100644
--- a/src/lib/block/rc2/rc2.h
+++ b/src/lib/block/rc2/rc2.h
@@ -18,8 +18,8 @@ namespace Botan {
class BOTAN_DLL RC2 : public Block_Cipher_Fixed_Params<8, 1, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
/**
* Return the code of the effective key bits
@@ -28,11 +28,11 @@ class BOTAN_DLL RC2 : public Block_Cipher_Fixed_Params<8, 1, 32>
*/
static byte EKB_code(size_t bits);
- void clear();
- std::string name() const { return "RC2"; }
- BlockCipher* clone() const { return new RC2; }
+ void clear() override;
+ std::string name() const override { return "RC2"; }
+ BlockCipher* clone() const override { return new RC2; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u16bit> K;
};
diff --git a/src/lib/block/rc5/rc5.h b/src/lib/block/rc5/rc5.h
index 782d0592c..b8ff1c3f7 100644
--- a/src/lib/block/rc5/rc5.h
+++ b/src/lib/block/rc5/rc5.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL RC5 : public Block_Cipher_Fixed_Params<8, 1, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const;
- BlockCipher* clone() const { return new RC5(rounds); }
+ void clear() override;
+ std::string name() const override;
+ BlockCipher* clone() const override { return new RC5(rounds); }
/**
* @param rounds the number of RC5 rounds to run. Must be between
@@ -31,7 +31,7 @@ class BOTAN_DLL RC5 : public Block_Cipher_Fixed_Params<8, 1, 32>
*/
RC5(size_t rounds);
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
size_t rounds;
secure_vector<u32bit> S;
diff --git a/src/lib/block/rc6/rc6.h b/src/lib/block/rc6/rc6.h
index 282d56639..1ff7304ed 100644
--- a/src/lib/block/rc6/rc6.h
+++ b/src/lib/block/rc6/rc6.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL RC6 : public Block_Cipher_Fixed_Params<16, 1, 32>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "RC6"; }
- BlockCipher* clone() const { return new RC6; }
+ void clear() override;
+ std::string name() const override { return "RC6"; }
+ BlockCipher* clone() const override { return new RC6; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> S;
};
diff --git a/src/lib/block/safer/safer_sk.h b/src/lib/block/safer/safer_sk.h
index d346c739e..74241d4e6 100644
--- a/src/lib/block/safer/safer_sk.h
+++ b/src/lib/block/safer/safer_sk.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL SAFER_SK : public Block_Cipher_Fixed_Params<8, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const;
- BlockCipher* clone() const;
+ void clear() override;
+ std::string name() const override;
+ BlockCipher* clone() const override;
/**
* @param rounds the number of rounds to use - must be between 1
@@ -31,7 +31,7 @@ class BOTAN_DLL SAFER_SK : public Block_Cipher_Fixed_Params<8, 16>
*/
SAFER_SK(size_t rounds);
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
size_t rounds;
secure_vector<byte> EK;
diff --git a/src/lib/block/seed/seed.h b/src/lib/block/seed/seed.h
index d98d6e798..431af7309 100644
--- a/src/lib/block/seed/seed.h
+++ b/src/lib/block/seed/seed.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL SEED : public Block_Cipher_Fixed_Params<16, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "SEED"; }
- BlockCipher* clone() const { return new SEED; }
+ void clear() override;
+ std::string name() const override { return "SEED"; }
+ BlockCipher* clone() const override { return new SEED; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
class G_FUNC
{
diff --git a/src/lib/block/serpent/serpent.h b/src/lib/block/serpent/serpent.h
index a3f5d0817..7fdf4600d 100644
--- a/src/lib/block/serpent/serpent.h
+++ b/src/lib/block/serpent/serpent.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL Serpent : public Block_Cipher_Fixed_Params<16, 16, 32, 8>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "Serpent"; }
- BlockCipher* clone() const { return new Serpent; }
+ void clear() override;
+ std::string name() const override { return "Serpent"; }
+ BlockCipher* clone() const override { return new Serpent; }
protected:
/**
* For use by subclasses using SIMD, asm, etc
@@ -42,7 +42,7 @@ class BOTAN_DLL Serpent : public Block_Cipher_Fixed_Params<16, 16, 32, 8>
}
private:
- void key_schedule(const byte key[], size_t length);
+ void key_schedule(const byte key[], size_t length) override;
secure_vector<u32bit> round_key;
};
diff --git a/src/lib/block/serpent_simd/serp_simd.h b/src/lib/block/serpent_simd/serp_simd.h
index cde5bf112..373d47fa1 100644
--- a/src/lib/block/serpent_simd/serp_simd.h
+++ b/src/lib/block/serpent_simd/serp_simd.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL Serpent_SIMD : public Serpent
{
public:
- size_t parallelism() const { return 4; }
+ size_t parallelism() const override { return 4; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- BlockCipher* clone() const { return new Serpent_SIMD; }
+ BlockCipher* clone() const override { return new Serpent_SIMD; }
};
}
diff --git a/src/lib/block/tea/tea.h b/src/lib/block/tea/tea.h
index 55e6d8309..3c5b4773e 100644
--- a/src/lib/block/tea/tea.h
+++ b/src/lib/block/tea/tea.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL TEA : public Block_Cipher_Fixed_Params<8, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "TEA"; }
- BlockCipher* clone() const { return new TEA; }
+ void clear() override;
+ std::string name() const override { return "TEA"; }
+ BlockCipher* clone() const override { return new TEA; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> K;
};
diff --git a/src/lib/block/twofish/twofish.h b/src/lib/block/twofish/twofish.h
index f6e030df2..c6af1a030 100644
--- a/src/lib/block/twofish/twofish.h
+++ b/src/lib/block/twofish/twofish.h
@@ -18,14 +18,14 @@ namespace Botan {
class BOTAN_DLL Twofish : public Block_Cipher_Fixed_Params<16, 16, 32, 8>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "Twofish"; }
- BlockCipher* clone() const { return new Twofish; }
+ void clear() override;
+ std::string name() const override { return "Twofish"; }
+ BlockCipher* clone() const override { return new Twofish; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
static void rs_mul(byte[4], byte, size_t);
diff --git a/src/lib/block/xtea/xtea.h b/src/lib/block/xtea/xtea.h
index 4de0bea72..ea5c39418 100644
--- a/src/lib/block/xtea/xtea.h
+++ b/src/lib/block/xtea/xtea.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL XTEA : public Block_Cipher_Fixed_Params<8, 16>
{
public:
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
- void clear();
- std::string name() const { return "XTEA"; }
- BlockCipher* clone() const { return new XTEA; }
+ void clear() override;
+ std::string name() const override { return "XTEA"; }
+ BlockCipher* clone() const override { return new XTEA; }
protected:
/**
* @return const reference to the key schedule
@@ -31,7 +31,7 @@ class BOTAN_DLL XTEA : public Block_Cipher_Fixed_Params<8, 16>
const secure_vector<u32bit>& get_EK() const { return EK; }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
secure_vector<u32bit> EK;
};
diff --git a/src/lib/block/xtea_simd/xtea_simd.h b/src/lib/block/xtea_simd/xtea_simd.h
index 451dc8c8d..04280f1ae 100644
--- a/src/lib/block/xtea_simd/xtea_simd.h
+++ b/src/lib/block/xtea_simd/xtea_simd.h
@@ -18,11 +18,11 @@ namespace Botan {
class BOTAN_DLL XTEA_SIMD : public XTEA
{
public:
- size_t parallelism() const { return 8; }
+ size_t parallelism() const override { return 8; }
- void encrypt_n(const byte in[], byte out[], size_t blocks) const;
- void decrypt_n(const byte in[], byte out[], size_t blocks) const;
- BlockCipher* clone() const { return new XTEA_SIMD; }
+ void encrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ void decrypt_n(const byte in[], byte out[], size_t blocks) const override;
+ BlockCipher* clone() const override { return new XTEA_SIMD; }
};
}
diff --git a/src/lib/cert/x509/crl_ent.h b/src/lib/cert/x509/crl_ent.h
index 7cf148fd9..42cb25fe3 100644
--- a/src/lib/cert/x509/crl_ent.h
+++ b/src/lib/cert/x509/crl_ent.h
@@ -39,8 +39,8 @@ enum CRL_Code {
class BOTAN_DLL CRL_Entry : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
/**
* Get the serial number of the certificate associated with this entry.
diff --git a/src/lib/cert/x509/pkcs10.h b/src/lib/cert/x509/pkcs10.h
index 0d73466bd..5751e674d 100644
--- a/src/lib/cert/x509/pkcs10.h
+++ b/src/lib/cert/x509/pkcs10.h
@@ -100,7 +100,7 @@ class BOTAN_DLL PKCS10_Request : public X509_Object
*/
PKCS10_Request(const std::vector<byte>& vec);
private:
- void force_decode();
+ void force_decode() override;
void handle_attribute(const Attribute&);
Data_Store info;
diff --git a/src/lib/cert/x509/x509_crl.h b/src/lib/cert/x509/x509_crl.h
index 1897d8d59..a9a8e80cf 100644
--- a/src/lib/cert/x509/x509_crl.h
+++ b/src/lib/cert/x509/x509_crl.h
@@ -99,7 +99,7 @@ class BOTAN_DLL X509_CRL : public X509_Object
bool throw_on_unknown_critical = false);
private:
- void force_decode();
+ void force_decode() override;
bool throw_on_unknown_critical;
std::vector<CRL_Entry> revoked;
diff --git a/src/lib/cert/x509/x509_ext.cpp b/src/lib/cert/x509/x509_ext.cpp
index 78c9ceec6..4da7467c3 100644
--- a/src/lib/cert/x509/x509_ext.cpp
+++ b/src/lib/cert/x509/x509_ext.cpp
@@ -449,14 +449,14 @@ class Policy_Information : public ASN1_Object
Policy_Information() {}
Policy_Information(const OID& oid) : oid(oid) {}
- void encode_into(DER_Encoder& codec) const
+ void encode_into(DER_Encoder& codec) const override
{
codec.start_cons(SEQUENCE)
.encode(oid)
.end_cons();
}
- void decode_from(BER_Decoder& codec)
+ void decode_from(BER_Decoder& codec) override
{
codec.start_cons(SEQUENCE)
.decode(oid)
diff --git a/src/lib/cert/x509/x509_ext.h b/src/lib/cert/x509/x509_ext.h
index 352a61d88..2ed892055 100644
--- a/src/lib/cert/x509/x509_ext.h
+++ b/src/lib/cert/x509/x509_ext.h
@@ -60,8 +60,8 @@ class BOTAN_DLL Certificate_Extension
class BOTAN_DLL Extensions : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
void contents_to(Data_Store&, Data_Store&) const;
@@ -89,7 +89,7 @@ static const size_t NO_CERT_PATH_LIMIT = 0xFFFFFFF0;
class BOTAN_DLL Basic_Constraints : public Certificate_Extension
{
public:
- Basic_Constraints* copy() const
+ Basic_Constraints* copy() const override
{ return new Basic_Constraints(is_ca, path_limit); }
Basic_Constraints(bool ca = false, size_t limit = 0) :
@@ -98,11 +98,12 @@ class BOTAN_DLL Basic_Constraints : public Certificate_Extension
bool get_is_ca() const { return is_ca; }
size_t get_path_limit() const;
private:
- std::string oid_name() const { return "X509v3.BasicConstraints"; }
+ std::string oid_name() const override
+ { return "X509v3.BasicConstraints"; }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
bool is_ca;
size_t path_limit;
@@ -114,18 +115,19 @@ class BOTAN_DLL Basic_Constraints : public Certificate_Extension
class BOTAN_DLL Key_Usage : public Certificate_Extension
{
public:
- Key_Usage* copy() const { return new Key_Usage(constraints); }
+ Key_Usage* copy() const override { return new Key_Usage(constraints); }
Key_Usage(Key_Constraints c = NO_CONSTRAINTS) : constraints(c) {}
Key_Constraints get_constraints() const { return constraints; }
private:
- std::string oid_name() const { return "X509v3.KeyUsage"; }
+ std::string oid_name() const override { return "X509v3.KeyUsage"; }
- bool should_encode() const { return (constraints != NO_CONSTRAINTS); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override
+ { return (constraints != NO_CONSTRAINTS); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
Key_Constraints constraints;
};
@@ -136,19 +138,21 @@ class BOTAN_DLL Key_Usage : public Certificate_Extension
class BOTAN_DLL Subject_Key_ID : public Certificate_Extension
{
public:
- Subject_Key_ID* copy() const { return new Subject_Key_ID(key_id); }
+ Subject_Key_ID* copy() const override
+ { return new Subject_Key_ID(key_id); }
Subject_Key_ID() {}
Subject_Key_ID(const std::vector<byte>&);
std::vector<byte> get_key_id() const { return key_id; }
private:
- std::string oid_name() const { return "X509v3.SubjectKeyIdentifier"; }
+ std::string oid_name() const override
+ { return "X509v3.SubjectKeyIdentifier"; }
- bool should_encode() const { return (key_id.size() > 0); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return (key_id.size() > 0); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::vector<byte> key_id;
};
@@ -159,19 +163,21 @@ class BOTAN_DLL Subject_Key_ID : public Certificate_Extension
class BOTAN_DLL Authority_Key_ID : public Certificate_Extension
{
public:
- Authority_Key_ID* copy() const { return new Authority_Key_ID(key_id); }
+ Authority_Key_ID* copy() const override
+ { return new Authority_Key_ID(key_id); }
Authority_Key_ID() {}
Authority_Key_ID(const std::vector<byte>& k) : key_id(k) {}
std::vector<byte> get_key_id() const { return key_id; }
private:
- std::string oid_name() const { return "X509v3.AuthorityKeyIdentifier"; }
+ std::string oid_name() const override
+ { return "X509v3.AuthorityKeyIdentifier"; }
- bool should_encode() const { return (key_id.size() > 0); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return (key_id.size() > 0); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::vector<byte> key_id;
};
@@ -189,12 +195,12 @@ class BOTAN_DLL Alternative_Name : public Certificate_Extension
Alternative_Name(const std::string&, const std::string&);
private:
- std::string oid_name() const { return oid_name_str; }
+ std::string oid_name() const override { return oid_name_str; }
- bool should_encode() const { return alt_name.has_items(); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return alt_name.has_items(); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::string oid_name_str;
AlternativeName alt_name;
@@ -206,7 +212,7 @@ class BOTAN_DLL Alternative_Name : public Certificate_Extension
class BOTAN_DLL Subject_Alternative_Name : public Alternative_Name
{
public:
- Subject_Alternative_Name* copy() const
+ Subject_Alternative_Name* copy() const override
{ return new Subject_Alternative_Name(get_alt_name()); }
Subject_Alternative_Name(const AlternativeName& = AlternativeName());
@@ -218,7 +224,7 @@ class BOTAN_DLL Subject_Alternative_Name : public Alternative_Name
class BOTAN_DLL Issuer_Alternative_Name : public Alternative_Name
{
public:
- Issuer_Alternative_Name* copy() const
+ Issuer_Alternative_Name* copy() const override
{ return new Issuer_Alternative_Name(get_alt_name()); }
Issuer_Alternative_Name(const AlternativeName& = AlternativeName());
@@ -230,19 +236,21 @@ class BOTAN_DLL Issuer_Alternative_Name : public Alternative_Name
class BOTAN_DLL Extended_Key_Usage : public Certificate_Extension
{
public:
- Extended_Key_Usage* copy() const { return new Extended_Key_Usage(oids); }
+ Extended_Key_Usage* copy() const override
+ { return new Extended_Key_Usage(oids); }
Extended_Key_Usage() {}
Extended_Key_Usage(const std::vector<OID>& o) : oids(o) {}
std::vector<OID> get_oids() const { return oids; }
private:
- std::string oid_name() const { return "X509v3.ExtendedKeyUsage"; }
+ std::string oid_name() const override
+ { return "X509v3.ExtendedKeyUsage"; }
- bool should_encode() const { return (oids.size() > 0); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return (oids.size() > 0); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::vector<OID> oids;
};
@@ -253,7 +261,7 @@ class BOTAN_DLL Extended_Key_Usage : public Certificate_Extension
class BOTAN_DLL Certificate_Policies : public Certificate_Extension
{
public:
- Certificate_Policies* copy() const
+ Certificate_Policies* copy() const override
{ return new Certificate_Policies(oids); }
Certificate_Policies() {}
@@ -261,12 +269,13 @@ class BOTAN_DLL Certificate_Policies : public Certificate_Extension
std::vector<OID> get_oids() const { return oids; }
private:
- std::string oid_name() const { return "X509v3.CertificatePolicies"; }
+ std::string oid_name() const override
+ { return "X509v3.CertificatePolicies"; }
- bool should_encode() const { return (oids.size() > 0); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return (oids.size() > 0); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::vector<OID> oids;
};
@@ -274,7 +283,7 @@ class BOTAN_DLL Certificate_Policies : public Certificate_Extension
class BOTAN_DLL Authority_Information_Access : public Certificate_Extension
{
public:
- Authority_Information_Access* copy() const
+ Authority_Information_Access* copy() const override
{ return new Authority_Information_Access(m_ocsp_responder); }
Authority_Information_Access() {}
@@ -283,14 +292,15 @@ class BOTAN_DLL Authority_Information_Access : public Certificate_Extension
m_ocsp_responder(ocsp) {}
private:
- std::string oid_name() const { return "PKIX.AuthorityInformationAccess"; }
+ std::string oid_name() const override
+ { return "PKIX.AuthorityInformationAccess"; }
- bool should_encode() const { return (m_ocsp_responder != ""); }
+ bool should_encode() const override { return (m_ocsp_responder != ""); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
- void contents_to(Data_Store&, Data_Store&) const;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::string m_ocsp_responder;
};
@@ -301,19 +311,19 @@ class BOTAN_DLL Authority_Information_Access : public Certificate_Extension
class BOTAN_DLL CRL_Number : public Certificate_Extension
{
public:
- CRL_Number* copy() const;
+ CRL_Number* copy() const override;
CRL_Number() : has_value(false), crl_number(0) {}
CRL_Number(size_t n) : has_value(true), crl_number(n) {}
size_t get_crl_number() const;
private:
- std::string oid_name() const { return "X509v3.CRLNumber"; }
+ std::string oid_name() const override { return "X509v3.CRLNumber"; }
- bool should_encode() const { return has_value; }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return has_value; }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
bool has_value;
size_t crl_number;
@@ -325,18 +335,19 @@ class BOTAN_DLL CRL_Number : public Certificate_Extension
class BOTAN_DLL CRL_ReasonCode : public Certificate_Extension
{
public:
- CRL_ReasonCode* copy() const { return new CRL_ReasonCode(reason); }
+ CRL_ReasonCode* copy() const override
+ { return new CRL_ReasonCode(reason); }
CRL_ReasonCode(CRL_Code r = UNSPECIFIED) : reason(r) {}
CRL_Code get_reason() const { return reason; }
private:
- std::string oid_name() const { return "X509v3.ReasonCode"; }
+ std::string oid_name() const override { return "X509v3.ReasonCode"; }
- bool should_encode() const { return (reason != UNSPECIFIED); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ bool should_encode() const override { return (reason != UNSPECIFIED); }
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
CRL_Code reason;
};
@@ -350,15 +361,15 @@ class BOTAN_DLL CRL_Distribution_Points : public Certificate_Extension
class BOTAN_DLL Distribution_Point : public ASN1_Object
{
public:
- void encode_into(class DER_Encoder&) const;
- void decode_from(class BER_Decoder&);
+ void encode_into(class DER_Encoder&) const override;
+ void decode_from(class BER_Decoder&) override;
const AlternativeName& point() const { return m_point; }
private:
AlternativeName m_point;
};
- CRL_Distribution_Points* copy() const
+ CRL_Distribution_Points* copy() const override
{ return new CRL_Distribution_Points(m_distribution_points); }
CRL_Distribution_Points() {}
@@ -370,13 +381,15 @@ class BOTAN_DLL CRL_Distribution_Points : public Certificate_Extension
{ return m_distribution_points; }
private:
- std::string oid_name() const { return "X509v3.CRLDistributionPoints"; }
+ std::string oid_name() const override
+ { return "X509v3.CRLDistributionPoints"; }
- bool should_encode() const { return !m_distribution_points.empty(); }
+ bool should_encode() const override
+ { return !m_distribution_points.empty(); }
- std::vector<byte> encode_inner() const;
- void decode_inner(const std::vector<byte>&);
- void contents_to(Data_Store&, Data_Store&) const;
+ std::vector<byte> encode_inner() const override;
+ void decode_inner(const std::vector<byte>&) override;
+ void contents_to(Data_Store&, Data_Store&) const override;
std::vector<Distribution_Point> m_distribution_points;
};
diff --git a/src/lib/cert/x509/x509cert.h b/src/lib/cert/x509/x509cert.h
index 3bd444214..9fd3e660a 100644
--- a/src/lib/cert/x509/x509cert.h
+++ b/src/lib/cert/x509/x509cert.h
@@ -221,7 +221,7 @@ class BOTAN_DLL X509_Certificate : public X509_Object
X509_Certificate(const std::vector<byte>& in);
private:
- void force_decode();
+ void force_decode() override;
friend class X509_CA;
friend class BER_Decoder;
diff --git a/src/lib/entropy/beos_stats/es_beos.h b/src/lib/entropy/beos_stats/es_beos.h
index 331ae3bc0..2565b9180 100644
--- a/src/lib/entropy/beos_stats/es_beos.h
+++ b/src/lib/entropy/beos_stats/es_beos.h
@@ -18,9 +18,9 @@ namespace Botan {
class BeOS_EntropySource : public EntropySource
{
private:
- std::string name() const { return "BeOS Statistics"; }
+ std::string name() const override { return "BeOS Statistics"; }
- void poll(Entropy_Accumulator& accum);
+ void poll(Entropy_Accumulator& accum) override;
};
}
diff --git a/src/lib/entropy/cryptoapi_rng/es_capi.h b/src/lib/entropy/cryptoapi_rng/es_capi.h
index 34ab2e22d..81a5003b2 100644
--- a/src/lib/entropy/cryptoapi_rng/es_capi.h
+++ b/src/lib/entropy/cryptoapi_rng/es_capi.h
@@ -19,9 +19,9 @@ namespace Botan {
class Win32_CAPI_EntropySource : public EntropySource
{
public:
- std::string name() const { return "Win32 CryptoGenRandom"; }
+ std::string name() const override { return "Win32 CryptoGenRandom"; }
- void poll(Entropy_Accumulator& accum);
+ void poll(Entropy_Accumulator& accum) override;
/**
* Win32_Capi_Entropysource Constructor
diff --git a/src/lib/entropy/dev_random/dev_random.h b/src/lib/entropy/dev_random/dev_random.h
index 1df616d56..0d0c2df60 100644
--- a/src/lib/entropy/dev_random/dev_random.h
+++ b/src/lib/entropy/dev_random/dev_random.h
@@ -20,9 +20,9 @@ namespace Botan {
class Device_EntropySource : public EntropySource
{
public:
- std::string name() const { return "RNG Device Reader"; }
+ std::string name() const override { return "RNG Device Reader"; }
- void poll(Entropy_Accumulator& accum);
+ void poll(Entropy_Accumulator& accum) override;
Device_EntropySource(const std::vector<std::string>& fsnames);
~Device_EntropySource();
diff --git a/src/lib/entropy/egd/es_egd.h b/src/lib/entropy/egd/es_egd.h
index 0c9caec66..7f7df1133 100644
--- a/src/lib/entropy/egd/es_egd.h
+++ b/src/lib/entropy/egd/es_egd.h
@@ -21,9 +21,9 @@ namespace Botan {
class EGD_EntropySource : public EntropySource
{
public:
- std::string name() const { return "EGD/PRNGD"; }
+ std::string name() const override { return "EGD/PRNGD"; }
- void poll(Entropy_Accumulator& accum);
+ void poll(Entropy_Accumulator& accum) override;
EGD_EntropySource(const std::vector<std::string>&);
~EGD_EntropySource();
diff --git a/src/lib/entropy/hres_timer/hres_timer.h b/src/lib/entropy/hres_timer/hres_timer.h
index 762acadbf..b5b92fd97 100644
--- a/src/lib/entropy/hres_timer/hres_timer.h
+++ b/src/lib/entropy/hres_timer/hres_timer.h
@@ -21,8 +21,8 @@ namespace Botan {
class High_Resolution_Timestamp : public EntropySource
{
public:
- std::string name() const { return "High Resolution Timestamp"; }
- void poll(Entropy_Accumulator& accum);
+ std::string name() const override { return "High Resolution Timestamp"; }
+ void poll(Entropy_Accumulator& accum) override;
};
}
diff --git a/src/lib/entropy/proc_walk/proc_walk.cpp b/src/lib/entropy/proc_walk/proc_walk.cpp
index 217ed5a52..7fbea678e 100644
--- a/src/lib/entropy/proc_walk/proc_walk.cpp
+++ b/src/lib/entropy/proc_walk/proc_walk.cpp
@@ -41,7 +41,7 @@ class Directory_Walker : public File_Descriptor_Source
::closedir(m_cur_dir.first);
}
- int next_fd();
+ int next_fd() override;
private:
std::pair<struct dirent*, std::string> get_next_dirent();
diff --git a/src/lib/entropy/proc_walk/proc_walk.h b/src/lib/entropy/proc_walk/proc_walk.h
index 939feb112..ec56f9e2d 100644
--- a/src/lib/entropy/proc_walk/proc_walk.h
+++ b/src/lib/entropy/proc_walk/proc_walk.h
@@ -26,9 +26,9 @@ class File_Descriptor_Source
class ProcWalking_EntropySource : public EntropySource
{
public:
- std::string name() const { return "Proc Walker"; }
+ std::string name() const override { return "Proc Walker"; }
- void poll(Entropy_Accumulator& accum);
+ void poll(Entropy_Accumulator& accum) override;
ProcWalking_EntropySource(const std::string& root_dir) :
m_path(root_dir), m_dir(nullptr) {}
diff --git a/src/lib/entropy/rdrand/rdrand.h b/src/lib/entropy/rdrand/rdrand.h
index bc02ef93e..9ff6e557f 100644
--- a/src/lib/entropy/rdrand/rdrand.h
+++ b/src/lib/entropy/rdrand/rdrand.h
@@ -19,8 +19,8 @@ namespace Botan {
class Intel_Rdrand : public EntropySource
{
public:
- std::string name() const { return "Intel Rdrand"; }
- void poll(Entropy_Accumulator& accum);
+ std::string name() const override { return "Intel Rdrand"; }
+ void poll(Entropy_Accumulator& accum) override;
};
}
diff --git a/src/lib/entropy/unix_procs/unix_procs.h b/src/lib/entropy/unix_procs/unix_procs.h
index cf6a8bb7d..808d34221 100644
--- a/src/lib/entropy/unix_procs/unix_procs.h
+++ b/src/lib/entropy/unix_procs/unix_procs.h
@@ -23,7 +23,7 @@ namespace Botan {
class Unix_EntropySource : public EntropySource
{
public:
- std::string name() const { return "Unix Process Runner"; }
+ std::string name() const override { return "Unix Process Runner"; }
void poll(Entropy_Accumulator& accum) override;
@@ -81,9 +81,9 @@ class Unix_EntropySource : public EntropySource
class UnixProcessInfo_EntropySource : public EntropySource
{
public:
- std::string name() const { return "Unix Process Info"; }
+ std::string name() const override { return "Unix Process Info"; }
- void poll(Entropy_Accumulator& accum);
+ void poll(Entropy_Accumulator& accum) override;
};
}
diff --git a/src/lib/entropy/win32_stats/es_win32.h b/src/lib/entropy/win32_stats/es_win32.h
index 4809abeee..98bfb0e36 100644
--- a/src/lib/entropy/win32_stats/es_win32.h
+++ b/src/lib/entropy/win32_stats/es_win32.h
@@ -18,8 +18,8 @@ namespace Botan {
class Win32_EntropySource : public EntropySource
{
public:
- std::string name() const { return "Win32 Statistics"; }
- void poll(Entropy_Accumulator& accum);
+ std::string name() const override { return "Win32 Statistics"; }
+ void poll(Entropy_Accumulator& accum) override;
};
}
diff --git a/src/lib/ffi/ffi.cpp b/src/lib/ffi/ffi.cpp
index 18298b365..8d96a0fc7 100644
--- a/src/lib/ffi/ffi.cpp
+++ b/src/lib/ffi/ffi.cpp
@@ -211,9 +211,9 @@ int botan_rng_init(botan_rng_t* rng_out, const char* rng_type)
void randomize(Botan::byte out[], size_t len) override { m_rng.randomize(out, len); }
bool is_seeded() const override { return m_rng.is_seeded(); }
void clear() override { m_rng.clear(); }
- std::string name() const { return m_rng.name(); }
- void reseed(size_t poll_bits = 256) { m_rng.reseed(poll_bits); }
- void add_entropy(const Botan::byte in[], size_t len) { m_rng.add_entropy(in, len); }
+ std::string name() const override { return m_rng.name(); }
+ void reseed(size_t poll_bits = 256) override { m_rng.reseed(poll_bits); }
+ void add_entropy(const Botan::byte in[], size_t len) override { m_rng.add_entropy(in, len); }
private:
Botan::RandomNumberGenerator& m_rng;
};
diff --git a/src/lib/filters/basefilt.h b/src/lib/filters/basefilt.h
index f87ac66e7..36c5201a1 100644
--- a/src/lib/filters/basefilt.h
+++ b/src/lib/filters/basefilt.h
@@ -19,9 +19,9 @@ namespace Botan {
*/
struct BOTAN_DLL BitBucket : public Filter
{
- void write(const byte[], size_t) {}
+ void write(const byte[], size_t) override {}
- std::string name() const { return "BitBucket"; }
+ std::string name() const override { return "BitBucket"; }
};
/**
@@ -33,9 +33,9 @@ struct BOTAN_DLL BitBucket : public Filter
class BOTAN_DLL Chain : public Fanout_Filter
{
public:
- void write(const byte input[], size_t length) { send(input, length); }
+ void write(const byte input[], size_t length) override { send(input, length); }
- std::string name() const;
+ std::string name() const override;
/**
* Construct a chain of up to four filters. The filters are set
@@ -60,10 +60,10 @@ class BOTAN_DLL Chain : public Fanout_Filter
class BOTAN_DLL Fork : public Fanout_Filter
{
public:
- void write(const byte input[], size_t length) { send(input, length); }
+ void write(const byte input[], size_t length) override { send(input, length); }
void set_port(size_t n) { Fanout_Filter::set_port(n); }
- std::string name() const;
+ std::string name() const override;
/**
* Construct a Fork filter with up to four forks.
@@ -86,7 +86,7 @@ class BOTAN_DLL Fork : public Fanout_Filter
class BOTAN_DLL Threaded_Fork : public Fork
{
public:
- std::string name() const;
+ std::string name() const override;
/**
* Construct a Threaded_Fork filter with up to four forks.
@@ -104,7 +104,7 @@ class BOTAN_DLL Threaded_Fork : public Fork
protected:
void set_next(Filter* f[], size_t n);
- void send(const byte in[], size_t length);
+ void send(const byte in[], size_t length) override;
private:
void thread_delegate_work(const byte input[], size_t length);
diff --git a/src/lib/filters/codec_filt/b64_filt.cpp b/src/lib/filters/codec_filt/b64_filt.cpp
index d9e4a5f8a..df3cad6a4 100644
--- a/src/lib/filters/codec_filt/b64_filt.cpp
+++ b/src/lib/filters/codec_filt/b64_filt.cpp
@@ -126,6 +126,11 @@ void Base64_Decoder::write(const byte input[], size_t length)
while(length)
{
size_t to_copy = std::min<size_t>(length, in.size() - position);
+ if(to_copy == 0)
+ {
+ in.resize(in.size()*2);
+ out.resize(out.size()*2);
+ }
copy_mem(&in[position], input, to_copy);
position += to_copy;
diff --git a/src/lib/filters/codec_filt/b64_filt.h b/src/lib/filters/codec_filt/b64_filt.h
index b73cca3b2..8ab428076 100644
--- a/src/lib/filters/codec_filt/b64_filt.h
+++ b/src/lib/filters/codec_filt/b64_filt.h
@@ -18,19 +18,19 @@ namespace Botan {
class BOTAN_DLL Base64_Encoder : public Filter
{
public:
- std::string name() const { return "Base64_Encoder"; }
+ std::string name() const override { return "Base64_Encoder"; }
/**
* Input a part of a message to the encoder.
* @param input the message to input as a byte array
* @param length the length of the byte array input
*/
- void write(const byte input[], size_t length);
+ void write(const byte input[], size_t length) override;
/**
* Inform the Encoder that the current message shall be closed.
*/
- void end_msg();
+ void end_msg() override;
/**
* Create a base64 encoder.
@@ -57,19 +57,19 @@ class BOTAN_DLL Base64_Encoder : public Filter
class BOTAN_DLL Base64_Decoder : public Filter
{
public:
- std::string name() const { return "Base64_Decoder"; }
+ std::string name() const override { return "Base64_Decoder"; }
/**
* Input a part of a message to the decoder.
* @param input the message to input as a byte array
* @param length the length of the byte array input
*/
- void write(const byte input[], size_t length);
+ void write(const byte input[], size_t length) override;
/**
* Finish up the current message
*/
- void end_msg();
+ void end_msg() override;
/**
* Create a base64 decoder.
diff --git a/src/lib/filters/codec_filt/hex_filt.h b/src/lib/filters/codec_filt/hex_filt.h
index 008fd6799..6130e729c 100644
--- a/src/lib/filters/codec_filt/hex_filt.h
+++ b/src/lib/filters/codec_filt/hex_filt.h
@@ -24,10 +24,10 @@ class BOTAN_DLL Hex_Encoder : public Filter
*/
enum Case { Uppercase, Lowercase };
- std::string name() const { return "Hex_Encoder"; }
+ std::string name() const override { return "Hex_Encoder"; }
- void write(const byte in[], size_t length);
- void end_msg();
+ void write(const byte in[], size_t length) override;
+ void end_msg() override;
/**
* Create a hex encoder.
@@ -59,10 +59,10 @@ class BOTAN_DLL Hex_Encoder : public Filter
class BOTAN_DLL Hex_Decoder : public Filter
{
public:
- std::string name() const { return "Hex_Decoder"; }
+ std::string name() const override { return "Hex_Decoder"; }
- void write(const byte[], size_t);
- void end_msg();
+ void write(const byte[], size_t) override;
+ void end_msg() override;
/**
* Construct a Hex Decoder using the specified
diff --git a/src/lib/filters/data_snk.h b/src/lib/filters/data_snk.h
index 8c5826285..15e2de6ef 100644
--- a/src/lib/filters/data_snk.h
+++ b/src/lib/filters/data_snk.h
@@ -19,7 +19,7 @@ namespace Botan {
class BOTAN_DLL DataSink : public Filter
{
public:
- bool attachable() { return false; }
+ bool attachable() override { return false; }
DataSink() {}
virtual ~DataSink() {}
@@ -33,9 +33,9 @@ class BOTAN_DLL DataSink : public Filter
class BOTAN_DLL DataSink_Stream : public DataSink
{
public:
- std::string name() const { return identifier; }
+ std::string name() const override { return identifier; }
- void write(const byte[], size_t);
+ void write(const byte[], size_t) override;
/**
* Construct a DataSink_Stream from a stream.
diff --git a/src/lib/filters/data_src.cpp b/src/lib/filters/data_src.cpp
index 7551b0037..4e0725943 100644
--- a/src/lib/filters/data_src.cpp
+++ b/src/lib/filters/data_src.cpp
@@ -34,10 +34,18 @@ size_t DataSource::peek_byte(byte& out) const
*/
size_t DataSource::discard_next(size_t n)
{
+ byte buf[64] = { 0 };
size_t discarded = 0;
- byte dummy;
- for(size_t j = 0; j != n; ++j)
- discarded += read_byte(dummy);
+
+ while(n)
+ {
+ const size_t got = this->read(buf, std::min(n, sizeof(buf)));
+ discarded += got;
+
+ if(got == 0)
+ break;
+ }
+
return discarded;
}
@@ -52,6 +60,11 @@ size_t DataSource_Memory::read(byte out[], size_t length)
return got;
}
+bool DataSource_Memory::check_available(size_t n)
+ {
+ return (n <= (source.size() - offset));
+ }
+
/*
* Peek into a memory buffer
*/
@@ -99,6 +112,15 @@ size_t DataSource_Stream::read(byte out[], size_t length)
return got;
}
+bool DataSource_Stream::check_available(size_t n)
+ {
+ const std::streampos orig_pos = source.tellg();
+ source.seekg(0, std::ios::end);
+ const size_t avail = source.tellg() - orig_pos;
+ source.seekg(orig_pos);
+ return (avail >= n);
+ }
+
/*
* Peek into a stream
*/
diff --git a/src/lib/filters/data_src.h b/src/lib/filters/data_src.h
index e6b7b9573..2b6998448 100644
--- a/src/lib/filters/data_src.h
+++ b/src/lib/filters/data_src.h
@@ -32,6 +32,8 @@ class BOTAN_DLL DataSource
*/
virtual size_t read(byte out[], size_t length) = 0;
+ virtual bool check_available(size_t n) = 0;
+
/**
* Read from the source but do not modify the internal
* offset. Consecutive calls to peek() will return portions of
@@ -97,9 +99,10 @@ class BOTAN_DLL DataSource
class BOTAN_DLL DataSource_Memory : public DataSource
{
public:
- size_t read(byte[], size_t);
- size_t peek(byte[], size_t, size_t) const;
- bool end_of_data() const;
+ size_t read(byte[], size_t) override;
+ size_t peek(byte[], size_t, size_t) const override;
+ bool check_available(size_t n) override;
+ bool end_of_data() const override;
/**
* Construct a memory source that reads from a string
@@ -129,7 +132,7 @@ class BOTAN_DLL DataSource_Memory : public DataSource
DataSource_Memory(const std::vector<byte>& in) :
source(in.begin(), in.end()), offset(0) {}
- virtual size_t get_bytes_read() const { return offset; }
+ size_t get_bytes_read() const override { return offset; }
private:
secure_vector<byte> source;
size_t offset;
@@ -141,10 +144,11 @@ class BOTAN_DLL DataSource_Memory : public DataSource
class BOTAN_DLL DataSource_Stream : public DataSource
{
public:
- size_t read(byte[], size_t);
- size_t peek(byte[], size_t, size_t) const;
- bool end_of_data() const;
- std::string id() const;
+ size_t read(byte[], size_t) override;
+ size_t peek(byte[], size_t, size_t) const override;
+ bool check_available(size_t n) override;
+ bool end_of_data() const override;
+ std::string id() const override;
DataSource_Stream(std::istream&,
const std::string& id = "<std::istream>");
@@ -162,7 +166,7 @@ class BOTAN_DLL DataSource_Stream : public DataSource
~DataSource_Stream();
- virtual size_t get_bytes_read() const { return total_read; }
+ size_t get_bytes_read() const override { return total_read; }
private:
const std::string identifier;
diff --git a/src/lib/filters/filters.h b/src/lib/filters/filters.h
index 1a9597de3..7a527dde0 100644
--- a/src/lib/filters/filters.h
+++ b/src/lib/filters/filters.h
@@ -34,23 +34,23 @@ class BOTAN_DLL StreamCipher_Filter : public Keyed_Filter
{
public:
- std::string name() const { return m_cipher->name(); }
+ std::string name() const override { return m_cipher->name(); }
/**
* Write input data
* @param input data
* @param input_len length of input in bytes
*/
- void write(const byte input[], size_t input_len);
+ void write(const byte input[], size_t input_len) override;
- bool valid_iv_length(size_t iv_len) const
+ bool valid_iv_length(size_t iv_len) const override
{ return m_cipher->valid_iv_length(iv_len); }
/**
* Set the initialization vector for this filter.
* @param iv the initialization vector to set
*/
- void set_iv(const InitializationVector& iv)
+ void set_iv(const InitializationVector& iv) override
{
m_cipher->set_iv(iv.begin(), iv.length());
}
@@ -59,7 +59,7 @@ class BOTAN_DLL StreamCipher_Filter : public Keyed_Filter
* Set the key of this filter.
* @param key the key to set
*/
- void set_key(const SymmetricKey& key) { m_cipher->set_key(key); }
+ void set_key(const SymmetricKey& key) override { m_cipher->set_key(key); }
Key_Length_Specification key_spec() const override { return m_cipher->key_spec(); }
@@ -99,10 +99,10 @@ class BOTAN_DLL StreamCipher_Filter : public Keyed_Filter
class BOTAN_DLL Hash_Filter : public Filter
{
public:
- void write(const byte input[], size_t len) { m_hash->update(input, len); }
- void end_msg();
+ void write(const byte input[], size_t len) override { m_hash->update(input, len); }
+ void end_msg() override;
- std::string name() const { return m_hash->name(); }
+ std::string name() const override { return m_hash->name(); }
/**
* Construct a hash filter.
@@ -136,16 +136,16 @@ class BOTAN_DLL Hash_Filter : public Filter
class BOTAN_DLL MAC_Filter : public Keyed_Filter
{
public:
- void write(const byte input[], size_t len) { m_mac->update(input, len); }
- void end_msg();
+ void write(const byte input[], size_t len) override { m_mac->update(input, len); }
+ void end_msg() override;
- std::string name() const { return m_mac->name(); }
+ std::string name() const override { return m_mac->name(); }
/**
* Set the key of this filter.
* @param key the key to set
*/
- void set_key(const SymmetricKey& key) { m_mac->set_key(key); }
+ void set_key(const SymmetricKey& key) override { m_mac->set_key(key); }
Key_Length_Specification key_spec() const override { return m_mac->key_spec(); }
diff --git a/src/lib/filters/pipe.cpp b/src/lib/filters/pipe.cpp
index b3bbe501f..15ace9ffc 100644
--- a/src/lib/filters/pipe.cpp
+++ b/src/lib/filters/pipe.cpp
@@ -20,10 +20,10 @@ namespace {
class Null_Filter : public Filter
{
public:
- void write(const byte input[], size_t length)
+ void write(const byte input[], size_t length) override
{ send(input, length); }
- std::string name() const { return "Null"; }
+ std::string name() const override { return "Null"; }
};
}
diff --git a/src/lib/filters/pipe.h b/src/lib/filters/pipe.h
index b8d8c707c..3f8d4d04c 100644
--- a/src/lib/filters/pipe.h
+++ b/src/lib/filters/pipe.h
@@ -145,7 +145,7 @@ class BOTAN_DLL Pipe : public DataSource
* @param length the length of the byte array output
* @return number of bytes actually read into output
*/
- size_t read(byte output[], size_t length);
+ size_t read(byte output[], size_t length) override;
/**
* Read a specified message from the pipe. Moves the internal
@@ -191,7 +191,7 @@ class BOTAN_DLL Pipe : public DataSource
* @param offset the offset from the current position in message
* @return number of bytes actually peeked and written into output
*/
- size_t peek(byte output[], size_t length, size_t offset) const;
+ size_t peek(byte output[], size_t length, size_t offset) const override;
/** Read from the specified message but do not modify the
* internal offset. Consecutive calls to peek() will return
@@ -219,12 +219,15 @@ class BOTAN_DLL Pipe : public DataSource
/**
* @return the number of bytes read from the default message.
*/
- size_t get_bytes_read() const;
+ size_t get_bytes_read() const override;
/**
* @return the number of bytes read from the specified message.
*/
- size_t get_bytes_read(message_id msg = DEFAULT_MESSAGE) const;
+ size_t get_bytes_read(message_id msg) const;
+
+ bool check_available(size_t n) override;
+ bool check_available_msg(size_t n, message_id msg);
/**
* @return currently set default message
@@ -248,7 +251,7 @@ class BOTAN_DLL Pipe : public DataSource
* Test whether this pipe has any data that can be read from.
* @return true if there is more data to read, false otherwise
*/
- bool end_of_data() const;
+ bool end_of_data() const override;
/**
* Start a new message in the pipe. A potential other message in this pipe
diff --git a/src/lib/filters/pipe_rw.cpp b/src/lib/filters/pipe_rw.cpp
index 077bd93bb..796f9100e 100644
--- a/src/lib/filters/pipe_rw.cpp
+++ b/src/lib/filters/pipe_rw.cpp
@@ -168,4 +168,14 @@ size_t Pipe::get_bytes_read(message_id msg) const
return outputs->get_bytes_read(msg);
}
+bool Pipe::check_available(size_t n)
+ {
+ return (n <= remaining(DEFAULT_MESSAGE));
+ }
+
+bool Pipe::check_available_msg(size_t n, message_id msg)
+ {
+ return (n <= remaining(msg));
+ }
+
}
diff --git a/src/lib/filters/secqueue.h b/src/lib/filters/secqueue.h
index 7eb8ffc17..b548f367f 100644
--- a/src/lib/filters/secqueue.h
+++ b/src/lib/filters/secqueue.h
@@ -20,24 +20,26 @@ namespace Botan {
class BOTAN_DLL SecureQueue : public Fanout_Filter, public DataSource
{
public:
- std::string name() const { return "Queue"; }
+ std::string name() const override { return "Queue"; }
- void write(const byte[], size_t);
+ void write(const byte[], size_t) override;
- size_t read(byte[], size_t);
- size_t peek(byte[], size_t, size_t = 0) const;
- size_t get_bytes_read() const;
+ size_t read(byte[], size_t) override;
+ size_t peek(byte[], size_t, size_t = 0) const override;
+ size_t get_bytes_read() const override;
- bool end_of_data() const;
+ bool end_of_data() const override;
bool empty() const;
+ bool check_available(size_t n) { return n <= size(); }
+
/**
* @return number of bytes available in the queue
*/
size_t size() const;
- bool attachable() { return false; }
+ bool attachable() override { return false; }
/**
* SecureQueue assignment
diff --git a/src/lib/hash/checksum/adler32/adler32.h b/src/lib/hash/checksum/adler32/adler32.h
index f3767b786..307236d6d 100644
--- a/src/lib/hash/checksum/adler32/adler32.h
+++ b/src/lib/hash/checksum/adler32/adler32.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL Adler32 : public HashFunction
{
public:
- std::string name() const { return "Adler32"; }
- size_t output_length() const { return 4; }
- HashFunction* clone() const { return new Adler32; }
+ std::string name() const override { return "Adler32"; }
+ size_t output_length() const override { return 4; }
+ HashFunction* clone() const override { return new Adler32; }
- void clear() { S1 = 1; S2 = 0; }
+ void clear() override { S1 = 1; S2 = 0; }
Adler32() { clear(); }
~Adler32() { clear(); }
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
u16bit S1, S2;
};
diff --git a/src/lib/hash/checksum/crc24/crc24.h b/src/lib/hash/checksum/crc24/crc24.h
index a5cc090ad..8df8bd727 100644
--- a/src/lib/hash/checksum/crc24/crc24.h
+++ b/src/lib/hash/checksum/crc24/crc24.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL CRC24 : public HashFunction
{
public:
- std::string name() const { return "CRC24"; }
- size_t output_length() const { return 3; }
- HashFunction* clone() const { return new CRC24; }
+ std::string name() const override { return "CRC24"; }
+ size_t output_length() const override { return 3; }
+ HashFunction* clone() const override { return new CRC24; }
- void clear() { crc = 0xB704CE; }
+ void clear() override { crc = 0xB704CE; }
CRC24() { clear(); }
~CRC24() { clear(); }
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
u32bit crc;
};
diff --git a/src/lib/hash/checksum/crc32/crc32.h b/src/lib/hash/checksum/crc32/crc32.h
index 503b18b7a..8ae95d42a 100644
--- a/src/lib/hash/checksum/crc32/crc32.h
+++ b/src/lib/hash/checksum/crc32/crc32.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL CRC32 : public HashFunction
{
public:
- std::string name() const { return "CRC32"; }
- size_t output_length() const { return 4; }
- HashFunction* clone() const { return new CRC32; }
+ std::string name() const override { return "CRC32"; }
+ size_t output_length() const override { return 4; }
+ HashFunction* clone() const override { return new CRC32; }
- void clear() { crc = 0xFFFFFFFF; }
+ void clear() override { crc = 0xFFFFFFFF; }
CRC32() { clear(); }
~CRC32() { clear(); }
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
u32bit crc;
};
diff --git a/src/lib/hash/comb4p/comb4p.h b/src/lib/hash/comb4p/comb4p.h
index d2e9587c2..1a99934a2 100644
--- a/src/lib/hash/comb4p/comb4p.h
+++ b/src/lib/hash/comb4p/comb4p.h
@@ -25,29 +25,29 @@ class BOTAN_DLL Comb4P : public HashFunction
*/
Comb4P(HashFunction* h1, HashFunction* h2);
- size_t hash_block_size() const;
+ size_t hash_block_size() const override;
- size_t output_length() const
+ size_t output_length() const override
{
return m_hash1->output_length() + m_hash2->output_length();
}
static Comb4P* make(const Spec& spec);
- HashFunction* clone() const
+ HashFunction* clone() const override
{
return new Comb4P(m_hash1->clone(), m_hash2->clone());
}
- std::string name() const
+ std::string name() const override
{
return "Comb4P(" + m_hash1->name() + "," + m_hash2->name() + ")";
}
- void clear();
+ void clear() override;
private:
- void add_data(const byte input[], size_t length);
- void final_result(byte out[]);
+ void add_data(const byte input[], size_t length) override;
+ void final_result(byte out[]) override;
std::unique_ptr<HashFunction> m_hash1, m_hash2;
};
diff --git a/src/lib/hash/gost_3411/gost_3411.h b/src/lib/hash/gost_3411/gost_3411.h
index fb636e30e..2ad96dbdb 100644
--- a/src/lib/hash/gost_3411/gost_3411.h
+++ b/src/lib/hash/gost_3411/gost_3411.h
@@ -19,19 +19,19 @@ namespace Botan {
class BOTAN_DLL GOST_34_11 : public HashFunction
{
public:
- std::string name() const { return "GOST-R-34.11-94" ; }
- size_t output_length() const { return 32; }
- size_t hash_block_size() const { return 32; }
- HashFunction* clone() const { return new GOST_34_11; }
+ std::string name() const override { return "GOST-R-34.11-94" ; }
+ size_t output_length() const override { return 32; }
+ size_t hash_block_size() const override { return 32; }
+ HashFunction* clone() const override { return new GOST_34_11; }
- void clear();
+ void clear() override;
GOST_34_11();
private:
void compress_n(const byte input[], size_t blocks);
- void add_data(const byte[], size_t);
- void final_result(byte[]);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
GOST_28147_89 cipher;
secure_vector<byte> buffer, sum, hash;
diff --git a/src/lib/hash/has160/has160.h b/src/lib/hash/has160/has160.h
index e7ad42e62..75d0bda90 100644
--- a/src/lib/hash/has160/has160.h
+++ b/src/lib/hash/has160/has160.h
@@ -19,17 +19,17 @@ namespace Botan {
class BOTAN_DLL HAS_160 : public MDx_HashFunction
{
public:
- std::string name() const { return "HAS-160"; }
- size_t output_length() const { return 20; }
- HashFunction* clone() const { return new HAS_160; }
+ std::string name() const override { return "HAS-160"; }
+ size_t output_length() const override { return 20; }
+ HashFunction* clone() const override { return new HAS_160; }
- void clear();
+ void clear() override;
HAS_160() : MDx_HashFunction(64, false, true), X(20), digest(5)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u32bit> X, digest;
};
diff --git a/src/lib/hash/keccak/keccak.h b/src/lib/hash/keccak/keccak.h
index a115d8f7f..0e7d3d5d1 100644
--- a/src/lib/hash/keccak/keccak.h
+++ b/src/lib/hash/keccak/keccak.h
@@ -27,15 +27,15 @@ class BOTAN_DLL Keccak_1600 : public HashFunction
*/
Keccak_1600(size_t output_bits = 512);
- size_t hash_block_size() const { return bitrate / 8; }
- size_t output_length() const { return output_bits / 8; }
+ size_t hash_block_size() const override { return bitrate / 8; }
+ size_t output_length() const override { return output_bits / 8; }
- HashFunction* clone() const;
- std::string name() const;
- void clear();
+ HashFunction* clone() const override;
+ std::string name() const override;
+ void clear() override;
private:
- void add_data(const byte input[], size_t length);
- void final_result(byte out[]);
+ void add_data(const byte input[], size_t length) override;
+ void final_result(byte out[]) override;
size_t output_bits, bitrate;
secure_vector<u64bit> S;
diff --git a/src/lib/hash/md2/md2.h b/src/lib/hash/md2/md2.h
index bde390385..62f1b8a9f 100644
--- a/src/lib/hash/md2/md2.h
+++ b/src/lib/hash/md2/md2.h
@@ -18,19 +18,19 @@ namespace Botan {
class BOTAN_DLL MD2 : public HashFunction
{
public:
- std::string name() const { return "MD2"; }
- size_t output_length() const { return 16; }
- size_t hash_block_size() const { return 16; }
- HashFunction* clone() const { return new MD2; }
+ std::string name() const override { return "MD2"; }
+ size_t output_length() const override { return 16; }
+ size_t hash_block_size() const override { return 16; }
+ HashFunction* clone() const override { return new MD2; }
- void clear();
+ void clear() override;
MD2() : X(48), checksum(16), buffer(16)
{ clear(); }
private:
- void add_data(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
void hash(const byte[]);
- void final_result(byte[]);
+ void final_result(byte[]) override;
secure_vector<byte> X, checksum, buffer;
size_t position;
diff --git a/src/lib/hash/md4/md4.h b/src/lib/hash/md4/md4.h
index 3d38550c2..182da4ab2 100644
--- a/src/lib/hash/md4/md4.h
+++ b/src/lib/hash/md4/md4.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL MD4 : public MDx_HashFunction
{
public:
- std::string name() const { return "MD4"; }
- size_t output_length() const { return 16; }
- HashFunction* clone() const { return new MD4; }
+ std::string name() const override { return "MD4"; }
+ size_t output_length() const override { return 16; }
+ HashFunction* clone() const override { return new MD4; }
- void clear();
+ void clear() override;
MD4() : MDx_HashFunction(64, false, true), M(16), digest(4)
{ clear(); }
protected:
- void compress_n(const byte input[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte input[], size_t blocks) override;
+ void copy_out(byte[]) override;
/**
* The message buffer, exposed for use by subclasses (x86 asm)
diff --git a/src/lib/hash/md5/md5.h b/src/lib/hash/md5/md5.h
index bbdc11aa6..9c5e548c0 100644
--- a/src/lib/hash/md5/md5.h
+++ b/src/lib/hash/md5/md5.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL MD5 : public MDx_HashFunction
{
public:
- std::string name() const { return "MD5"; }
- size_t output_length() const { return 16; }
- HashFunction* clone() const { return new MD5; }
+ std::string name() const override { return "MD5"; }
+ size_t output_length() const override { return 16; }
+ HashFunction* clone() const override { return new MD5; }
- void clear();
+ void clear() override;
MD5() : MDx_HashFunction(64, false, true), M(16), digest(4)
{ clear(); }
protected:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
/**
* The message buffer, exposed for use by subclasses (x86 asm)
diff --git a/src/lib/hash/mdx_hash/mdx_hash.h b/src/lib/hash/mdx_hash/mdx_hash.h
index 9671cbe81..2652d9ea6 100644
--- a/src/lib/hash/mdx_hash/mdx_hash.h
+++ b/src/lib/hash/mdx_hash/mdx_hash.h
@@ -29,10 +29,10 @@ class BOTAN_DLL MDx_HashFunction : public HashFunction
bool big_bit_endian,
size_t counter_size = 8);
- size_t hash_block_size() const { return buffer.size(); }
+ size_t hash_block_size() const override { return buffer.size(); }
protected:
- void add_data(const byte input[], size_t length);
- void final_result(byte output[]);
+ void add_data(const byte input[], size_t length) override;
+ void final_result(byte output[]) override;
/**
* Run the hash's compression function over a set of blocks
@@ -41,7 +41,7 @@ class BOTAN_DLL MDx_HashFunction : public HashFunction
*/
virtual void compress_n(const byte blocks[], size_t block_n) = 0;
- void clear();
+ void clear() override;
/**
* Copy the output to the buffer
diff --git a/src/lib/hash/par_hash/par_hash.h b/src/lib/hash/par_hash/par_hash.h
index 58900043a..0410e6826 100644
--- a/src/lib/hash/par_hash/par_hash.h
+++ b/src/lib/hash/par_hash/par_hash.h
@@ -19,11 +19,11 @@ namespace Botan {
class BOTAN_DLL Parallel : public HashFunction
{
public:
- void clear();
- std::string name() const;
- HashFunction* clone() const;
+ void clear() override;
+ std::string name() const override;
+ HashFunction* clone() const override;
- size_t output_length() const;
+ size_t output_length() const override;
/**
* @param hashes a set of hashes to compute in parallel
@@ -37,8 +37,8 @@ class BOTAN_DLL Parallel : public HashFunction
private:
Parallel() {}
- void add_data(const byte[], size_t);
- void final_result(byte[]);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
std::vector<std::unique_ptr<HashFunction>> hashes;
};
diff --git a/src/lib/hash/rmd128/rmd128.h b/src/lib/hash/rmd128/rmd128.h
index a91122c79..ea1eb2286 100644
--- a/src/lib/hash/rmd128/rmd128.h
+++ b/src/lib/hash/rmd128/rmd128.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL RIPEMD_128 : public MDx_HashFunction
{
public:
- std::string name() const { return "RIPEMD-128"; }
- size_t output_length() const { return 16; }
- HashFunction* clone() const { return new RIPEMD_128; }
+ std::string name() const override { return "RIPEMD-128"; }
+ size_t output_length() const override { return 16; }
+ HashFunction* clone() const override { return new RIPEMD_128; }
- void clear();
+ void clear() override;
RIPEMD_128() : MDx_HashFunction(64, false, true), M(16), digest(4)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u32bit> M, digest;
};
diff --git a/src/lib/hash/rmd160/rmd160.h b/src/lib/hash/rmd160/rmd160.h
index a4f428c37..ad7182404 100644
--- a/src/lib/hash/rmd160/rmd160.h
+++ b/src/lib/hash/rmd160/rmd160.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL RIPEMD_160 : public MDx_HashFunction
{
public:
- std::string name() const { return "RIPEMD-160"; }
- size_t output_length() const { return 20; }
- HashFunction* clone() const { return new RIPEMD_160; }
+ std::string name() const override { return "RIPEMD-160"; }
+ size_t output_length() const override { return 20; }
+ HashFunction* clone() const override { return new RIPEMD_160; }
- void clear();
+ void clear() override;
RIPEMD_160() : MDx_HashFunction(64, false, true), M(16), digest(5)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u32bit> M, digest;
};
diff --git a/src/lib/hash/sha1/sha160.h b/src/lib/hash/sha1/sha160.h
index fbafb5c7d..6328d74c4 100644
--- a/src/lib/hash/sha1/sha160.h
+++ b/src/lib/hash/sha1/sha160.h
@@ -18,11 +18,11 @@ namespace Botan {
class BOTAN_DLL SHA_160 : public MDx_HashFunction
{
public:
- std::string name() const { return "SHA-160"; }
- size_t output_length() const { return 20; }
- HashFunction* clone() const { return new SHA_160; }
+ std::string name() const override { return "SHA-160"; }
+ size_t output_length() const override { return 20; }
+ HashFunction* clone() const override { return new SHA_160; }
- void clear();
+ void clear() override;
SHA_160() : MDx_HashFunction(64, true, true), digest(5), W(80)
{
@@ -41,8 +41,8 @@ class BOTAN_DLL SHA_160 : public MDx_HashFunction
clear();
}
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
/**
* The digest value, exposed for use by subclasses (asm, SSE2)
diff --git a/src/lib/hash/sha1_sse2/sha1_sse2.h b/src/lib/hash/sha1_sse2/sha1_sse2.h
index fc74c41b7..20bb63727 100644
--- a/src/lib/hash/sha1_sse2/sha1_sse2.h
+++ b/src/lib/hash/sha1_sse2/sha1_sse2.h
@@ -18,10 +18,10 @@ namespace Botan {
class BOTAN_DLL SHA_160_SSE2 : public SHA_160
{
public:
- HashFunction* clone() const { return new SHA_160_SSE2; }
+ HashFunction* clone() const override { return new SHA_160_SSE2; }
SHA_160_SSE2() : SHA_160(0) {} // no W needed
private:
- void compress_n(const byte[], size_t blocks);
+ void compress_n(const byte[], size_t blocks) override;
};
}
diff --git a/src/lib/hash/sha2_32/sha2_32.h b/src/lib/hash/sha2_32/sha2_32.h
index 2ea12860d..e51087dc1 100644
--- a/src/lib/hash/sha2_32/sha2_32.h
+++ b/src/lib/hash/sha2_32/sha2_32.h
@@ -19,17 +19,17 @@ namespace Botan {
class BOTAN_DLL SHA_224 : public MDx_HashFunction
{
public:
- std::string name() const { return "SHA-224"; }
- size_t output_length() const { return 28; }
- HashFunction* clone() const { return new SHA_224; }
+ std::string name() const override { return "SHA-224"; }
+ size_t output_length() const override { return 28; }
+ HashFunction* clone() const override { return new SHA_224; }
- void clear();
+ void clear() override;
SHA_224() : MDx_HashFunction(64, true, true), digest(8)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u32bit> digest;
};
@@ -40,17 +40,17 @@ class BOTAN_DLL SHA_224 : public MDx_HashFunction
class BOTAN_DLL SHA_256 : public MDx_HashFunction
{
public:
- std::string name() const { return "SHA-256"; }
- size_t output_length() const { return 32; }
- HashFunction* clone() const { return new SHA_256; }
+ std::string name() const override { return "SHA-256"; }
+ size_t output_length() const override { return 32; }
+ HashFunction* clone() const override { return new SHA_256; }
- void clear();
+ void clear() override;
SHA_256() : MDx_HashFunction(64, true, true), digest(8)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u32bit> digest;
};
diff --git a/src/lib/hash/sha2_64/sha2_64.h b/src/lib/hash/sha2_64/sha2_64.h
index 2956d94e8..5aae5effe 100644
--- a/src/lib/hash/sha2_64/sha2_64.h
+++ b/src/lib/hash/sha2_64/sha2_64.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL SHA_384 : public MDx_HashFunction
{
public:
- std::string name() const { return "SHA-384"; }
- size_t output_length() const { return 48; }
- HashFunction* clone() const { return new SHA_384; }
+ std::string name() const override { return "SHA-384"; }
+ size_t output_length() const override { return 48; }
+ HashFunction* clone() const override { return new SHA_384; }
- void clear();
+ void clear() override;
SHA_384() : MDx_HashFunction(128, true, true, 16), m_digest(8)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u64bit> m_digest;
};
@@ -39,17 +39,17 @@ class BOTAN_DLL SHA_384 : public MDx_HashFunction
class BOTAN_DLL SHA_512 : public MDx_HashFunction
{
public:
- std::string name() const { return "SHA-512"; }
- size_t output_length() const { return 64; }
- HashFunction* clone() const { return new SHA_512; }
+ std::string name() const override { return "SHA-512"; }
+ size_t output_length() const override { return 64; }
+ HashFunction* clone() const override { return new SHA_512; }
- void clear();
+ void clear() override;
SHA_512() : MDx_HashFunction(128, true, true, 16), m_digest(8)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u64bit> m_digest;
};
@@ -60,16 +60,16 @@ class BOTAN_DLL SHA_512 : public MDx_HashFunction
class BOTAN_DLL SHA_512_256 : public MDx_HashFunction
{
public:
- std::string name() const { return "SHA-512/256"; }
- size_t output_length() const { return 32; }
- HashFunction* clone() const { return new SHA_512_256; }
+ std::string name() const override { return "SHA-512/256"; }
+ size_t output_length() const override { return 32; }
+ HashFunction* clone() const override { return new SHA_512_256; }
- void clear();
+ void clear() override;
SHA_512_256() : MDx_HashFunction(128, true, true, 16), m_digest(8) { clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
secure_vector<u64bit> m_digest;
};
diff --git a/src/lib/hash/skein/skein_512.h b/src/lib/hash/skein/skein_512.h
index 3ae9fcdc3..dceb34854 100644
--- a/src/lib/hash/skein/skein_512.h
+++ b/src/lib/hash/skein/skein_512.h
@@ -29,14 +29,14 @@ class BOTAN_DLL Skein_512 : public HashFunction
Skein_512(size_t output_bits = 512,
const std::string& personalization = "");
- size_t hash_block_size() const { return 64; }
- size_t output_length() const { return output_bits / 8; }
+ size_t hash_block_size() const override { return 64; }
+ size_t output_length() const override { return output_bits / 8; }
static Skein_512* make(const Spec& spec);
- HashFunction* clone() const;
- std::string name() const;
- void clear();
+ HashFunction* clone() const override;
+ std::string name() const override;
+ void clear() override;
private:
enum type_code {
SKEIN_KEY = 0,
@@ -49,8 +49,8 @@ class BOTAN_DLL Skein_512 : public HashFunction
SKEIN_OUTPUT = 63
};
- void add_data(const byte input[], size_t length);
- void final_result(byte out[]);
+ void add_data(const byte input[], size_t length) override;
+ void final_result(byte out[]) override;
void ubi_512(const byte msg[], size_t msg_len);
diff --git a/src/lib/hash/tiger/tiger.h b/src/lib/hash/tiger/tiger.h
index df3b869fb..986186dda 100644
--- a/src/lib/hash/tiger/tiger.h
+++ b/src/lib/hash/tiger/tiger.h
@@ -18,15 +18,15 @@ namespace Botan {
class BOTAN_DLL Tiger : public MDx_HashFunction
{
public:
- std::string name() const;
- size_t output_length() const { return hash_len; }
+ std::string name() const override;
+ size_t output_length() const override { return hash_len; }
- HashFunction* clone() const
+ HashFunction* clone() const override
{
return new Tiger(output_length(), passes);
}
- void clear();
+ void clear() override;
/**
* @param out_size specifies the output length; can be 16, 20, or 24
@@ -34,8 +34,8 @@ class BOTAN_DLL Tiger : public MDx_HashFunction
*/
Tiger(size_t out_size = 24, size_t passes = 3);
private:
- void compress_n(const byte[], size_t block);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t block) override;
+ void copy_out(byte[]) override;
static void pass(u64bit& A, u64bit& B, u64bit& C,
const secure_vector<u64bit>& M,
diff --git a/src/lib/hash/whirlpool/whrlpool.h b/src/lib/hash/whirlpool/whrlpool.h
index 4f067f18d..ba91da080 100644
--- a/src/lib/hash/whirlpool/whrlpool.h
+++ b/src/lib/hash/whirlpool/whrlpool.h
@@ -18,17 +18,17 @@ namespace Botan {
class BOTAN_DLL Whirlpool : public MDx_HashFunction
{
public:
- std::string name() const { return "Whirlpool"; }
- size_t output_length() const { return 64; }
- HashFunction* clone() const { return new Whirlpool; }
+ std::string name() const override { return "Whirlpool"; }
+ size_t output_length() const override { return 64; }
+ HashFunction* clone() const override { return new Whirlpool; }
- void clear();
+ void clear() override;
Whirlpool() : MDx_HashFunction(64, true, true, 32), M(8), digest(8)
{ clear(); }
private:
- void compress_n(const byte[], size_t blocks);
- void copy_out(byte[]);
+ void compress_n(const byte[], size_t blocks) override;
+ void copy_out(byte[]) override;
static const u64bit C0[256];
static const u64bit C1[256];
diff --git a/src/lib/kdf/hkdf/hkdf.h b/src/lib/kdf/hkdf/hkdf.h
index c5737b1cc..d8389a886 100644
--- a/src/lib/kdf/hkdf/hkdf.h
+++ b/src/lib/kdf/hkdf/hkdf.h
@@ -25,9 +25,9 @@ class BOTAN_DLL HKDF : public KDF
static HKDF* make(const Spec& spec);
- KDF* clone() const { return new HKDF(m_prf->clone()); }
+ KDF* clone() const override { return new HKDF(m_prf->clone()); }
- std::string name() const { return "HKDF(" + m_prf->name() + ")"; }
+ std::string name() const override { return "HKDF(" + m_prf->name() + ")"; }
size_t kdf(byte out[], size_t out_len,
const byte secret[], size_t secret_len,
diff --git a/src/lib/kdf/prf_tls/prf_tls.h b/src/lib/kdf/prf_tls/prf_tls.h
index e2289a6e8..bb7cc2c4f 100644
--- a/src/lib/kdf/prf_tls/prf_tls.h
+++ b/src/lib/kdf/prf_tls/prf_tls.h
@@ -19,9 +19,9 @@ namespace Botan {
class BOTAN_DLL TLS_PRF : public KDF
{
public:
- std::string name() const { return "TLS-PRF"; }
+ std::string name() const override { return "TLS-PRF"; }
- KDF* clone() const { return new TLS_PRF; }
+ KDF* clone() const override { return new TLS_PRF; }
size_t kdf(byte key[], size_t key_len,
const byte secret[], size_t secret_len,
@@ -39,9 +39,9 @@ class BOTAN_DLL TLS_PRF : public KDF
class BOTAN_DLL TLS_12_PRF : public KDF
{
public:
- std::string name() const { return "TLS-12-PRF(" + m_mac->name() + ")"; }
+ std::string name() const override { return "TLS-12-PRF(" + m_mac->name() + ")"; }
- KDF* clone() const { return new TLS_12_PRF(m_mac->clone()); }
+ KDF* clone() const override { return new TLS_12_PRF(m_mac->clone()); }
size_t kdf(byte key[], size_t key_len,
const byte secret[], size_t secret_len,
diff --git a/src/lib/kdf/prf_x942/prf_x942.h b/src/lib/kdf/prf_x942/prf_x942.h
index 242a83150..d0b23067c 100644
--- a/src/lib/kdf/prf_x942/prf_x942.h
+++ b/src/lib/kdf/prf_x942/prf_x942.h
@@ -18,9 +18,9 @@ namespace Botan {
class BOTAN_DLL X942_PRF : public KDF
{
public:
- std::string name() const { return "X942_PRF(" + m_key_wrap_oid + ")"; }
+ std::string name() const override { return "X942_PRF(" + m_key_wrap_oid + ")"; }
- KDF* clone() const { return new X942_PRF(m_key_wrap_oid); }
+ KDF* clone() const override { return new X942_PRF(m_key_wrap_oid); }
size_t kdf(byte key[], size_t key_len,
const byte secret[], size_t secret_len,
diff --git a/src/lib/mac/cbc_mac/cbc_mac.h b/src/lib/mac/cbc_mac/cbc_mac.h
index 722658174..f1c6d5230 100644
--- a/src/lib/mac/cbc_mac/cbc_mac.h
+++ b/src/lib/mac/cbc_mac/cbc_mac.h
@@ -19,12 +19,12 @@ namespace Botan {
class BOTAN_DLL CBC_MAC : public MessageAuthenticationCode
{
public:
- std::string name() const;
- MessageAuthenticationCode* clone() const;
- size_t output_length() const { return m_cipher->block_size(); }
- void clear();
+ std::string name() const override;
+ MessageAuthenticationCode* clone() const override;
+ size_t output_length() const override { return m_cipher->block_size(); }
+ void clear() override;
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return m_cipher->key_spec();
}
@@ -36,9 +36,9 @@ class BOTAN_DLL CBC_MAC : public MessageAuthenticationCode
static CBC_MAC* make(const Spec& spec);
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
- void key_schedule(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
+ void key_schedule(const byte[], size_t) override;
std::unique_ptr<BlockCipher> m_cipher;
secure_vector<byte> m_state;
diff --git a/src/lib/mac/cmac/cmac.h b/src/lib/mac/cmac/cmac.h
index f90e5d40c..4f8d22b76 100644
--- a/src/lib/mac/cmac/cmac.h
+++ b/src/lib/mac/cmac/cmac.h
@@ -19,13 +19,13 @@ namespace Botan {
class BOTAN_DLL CMAC : public MessageAuthenticationCode
{
public:
- std::string name() const;
- size_t output_length() const { return m_cipher->block_size(); }
- MessageAuthenticationCode* clone() const;
+ std::string name() const override;
+ size_t output_length() const override { return m_cipher->block_size(); }
+ MessageAuthenticationCode* clone() const override;
- void clear();
+ void clear() override;
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return m_cipher->key_spec();
}
@@ -47,9 +47,9 @@ class BOTAN_DLL CMAC : public MessageAuthenticationCode
CMAC(const CMAC&) = delete;
CMAC& operator=(const CMAC&) = delete;
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
- void key_schedule(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
+ void key_schedule(const byte[], size_t) override;
std::unique_ptr<BlockCipher> m_cipher;
secure_vector<byte> m_buffer, m_state, m_B, m_P;
diff --git a/src/lib/mac/hmac/hmac.h b/src/lib/mac/hmac/hmac.h
index 6b01eb365..3f5652352 100644
--- a/src/lib/mac/hmac/hmac.h
+++ b/src/lib/mac/hmac/hmac.h
@@ -19,13 +19,13 @@ namespace Botan {
class BOTAN_DLL HMAC : public MessageAuthenticationCode
{
public:
- void clear();
- std::string name() const;
- MessageAuthenticationCode* clone() const;
+ void clear() override;
+ std::string name() const override;
+ MessageAuthenticationCode* clone() const override;
- size_t output_length() const { return m_hash->output_length(); }
+ size_t output_length() const override { return m_hash->output_length(); }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
// Absurd max length here is to support PBKDF2
return Key_Length_Specification(0, 512);
@@ -41,9 +41,9 @@ class BOTAN_DLL HMAC : public MessageAuthenticationCode
HMAC(const HMAC&) = delete;
HMAC& operator=(const HMAC&) = delete;
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
- void key_schedule(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
+ void key_schedule(const byte[], size_t) override;
std::unique_ptr<HashFunction> m_hash;
secure_vector<byte> m_ikey, m_okey;
diff --git a/src/lib/mac/mac.h b/src/lib/mac/mac.h
index 2ee971b90..8ad2d1e99 100644
--- a/src/lib/mac/mac.h
+++ b/src/lib/mac/mac.h
@@ -35,12 +35,6 @@ class BOTAN_DLL MessageAuthenticationCode : public Buffered_Computation,
*/
virtual MessageAuthenticationCode* clone() const = 0;
- /**
- * Get the name of this algorithm.
- * @return name of this algorithm
- */
- virtual std::string name() const = 0;
-
typedef SCAN_Name Spec;
};
diff --git a/src/lib/mac/poly1305/poly1305.h b/src/lib/mac/poly1305/poly1305.h
index 1c7fbf7fd..20bc9b5ad 100644
--- a/src/lib/mac/poly1305/poly1305.h
+++ b/src/lib/mac/poly1305/poly1305.h
@@ -22,21 +22,21 @@ class BOTAN_DLL Poly1305 : public MessageAuthenticationCode
public:
std::string name() const override { return "Poly1305"; }
- MessageAuthenticationCode* clone() const { return new Poly1305; }
+ MessageAuthenticationCode* clone() const override { return new Poly1305; }
- void clear();
+ void clear() override;
- size_t output_length() const { return 16; }
+ size_t output_length() const override { return 16; }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(32);
}
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
- void key_schedule(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
+ void key_schedule(const byte[], size_t) override;
secure_vector<u64bit> m_poly;
secure_vector<byte> m_buf;
diff --git a/src/lib/mac/siphash/siphash.h b/src/lib/mac/siphash/siphash.h
index ec57864eb..574835ca4 100644
--- a/src/lib/mac/siphash/siphash.h
+++ b/src/lib/mac/siphash/siphash.h
@@ -17,21 +17,21 @@ class BOTAN_DLL SipHash : public MessageAuthenticationCode
public:
SipHash(size_t c = 2, size_t d = 4) : m_C(c), m_D(d) {}
- void clear();
- std::string name() const;
+ void clear() override;
+ std::string name() const override;
- MessageAuthenticationCode* clone() const;
+ MessageAuthenticationCode* clone() const override;
- size_t output_length() const { return 8; }
+ size_t output_length() const override { return 8; }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(16);
}
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
- void key_schedule(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
+ void key_schedule(const byte[], size_t) override;
const size_t m_C, m_D;
secure_vector<u64bit> m_V;
diff --git a/src/lib/mac/x919_mac/x919_mac.h b/src/lib/mac/x919_mac/x919_mac.h
index 7b7d7d88b..9cdcd1527 100644
--- a/src/lib/mac/x919_mac/x919_mac.h
+++ b/src/lib/mac/x919_mac/x919_mac.h
@@ -19,13 +19,13 @@ namespace Botan {
class BOTAN_DLL ANSI_X919_MAC : public MessageAuthenticationCode
{
public:
- void clear();
- std::string name() const;
- size_t output_length() const { return 8; }
+ void clear() override;
+ std::string name() const override;
+ size_t output_length() const override { return 8; }
- MessageAuthenticationCode* clone() const;
+ MessageAuthenticationCode* clone() const override;
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(8, 16, 8);
}
@@ -35,9 +35,9 @@ class BOTAN_DLL ANSI_X919_MAC : public MessageAuthenticationCode
ANSI_X919_MAC(const ANSI_X919_MAC&) = delete;
ANSI_X919_MAC& operator=(const ANSI_X919_MAC&) = delete;
private:
- void add_data(const byte[], size_t);
- void final_result(byte[]);
- void key_schedule(const byte[], size_t);
+ void add_data(const byte[], size_t) override;
+ void final_result(byte[]) override;
+ void key_schedule(const byte[], size_t) override;
std::unique_ptr<BlockCipher> m_des1, m_des2;
secure_vector<byte> m_state;
diff --git a/src/lib/math/numbertheory/def_powm.h b/src/lib/math/numbertheory/def_powm.h
index 3a56a1693..ef5d6e39b 100644
--- a/src/lib/math/numbertheory/def_powm.h
+++ b/src/lib/math/numbertheory/def_powm.h
@@ -20,11 +20,11 @@ namespace Botan {
class Fixed_Window_Exponentiator : public Modular_Exponentiator
{
public:
- void set_exponent(const BigInt&);
- void set_base(const BigInt&);
- BigInt execute() const;
+ void set_exponent(const BigInt&) override;
+ void set_base(const BigInt&) override;
+ BigInt execute() const override;
- Modular_Exponentiator* copy() const
+ Modular_Exponentiator* copy() const override
{ return new Fixed_Window_Exponentiator(*this); }
Fixed_Window_Exponentiator(const BigInt&, Power_Mod::Usage_Hints);
@@ -42,11 +42,11 @@ class Fixed_Window_Exponentiator : public Modular_Exponentiator
class Montgomery_Exponentiator : public Modular_Exponentiator
{
public:
- void set_exponent(const BigInt&);
- void set_base(const BigInt&);
- BigInt execute() const;
+ void set_exponent(const BigInt&) override;
+ void set_base(const BigInt&) override;
+ BigInt execute() const override;
- Modular_Exponentiator* copy() const
+ Modular_Exponentiator* copy() const override
{ return new Montgomery_Exponentiator(*this); }
Montgomery_Exponentiator(const BigInt&, Power_Mod::Usage_Hints);
diff --git a/src/lib/modes/aead/ccm/ccm.h b/src/lib/modes/aead/ccm/ccm.h
index 5af5f984d..58ca447e8 100644
--- a/src/lib/modes/aead/ccm/ccm.h
+++ b/src/lib/modes/aead/ccm/ccm.h
@@ -28,7 +28,7 @@ class BOTAN_DLL CCM_Mode : public AEAD_Mode
std::string name() const override;
- size_t update_granularity() const;
+ size_t update_granularity() const override;
Key_Length_Specification key_spec() const override;
@@ -38,7 +38,7 @@ class BOTAN_DLL CCM_Mode : public AEAD_Mode
void clear() override;
- size_t tag_size() const { return m_tag_size; }
+ size_t tag_size() const override { return m_tag_size; }
protected:
const size_t BS = 16; // intrinsic to CCM definition
diff --git a/src/lib/modes/aead/gcm/gcm.h b/src/lib/modes/aead/gcm/gcm.h
index ea3263c0a..8e7ae8b7f 100644
--- a/src/lib/modes/aead/gcm/gcm.h
+++ b/src/lib/modes/aead/gcm/gcm.h
@@ -26,7 +26,7 @@ class BOTAN_DLL GCM_Mode : public AEAD_Mode
std::string name() const override;
- size_t update_granularity() const;
+ size_t update_granularity() const override;
Key_Length_Specification key_spec() const override;
@@ -121,11 +121,12 @@ class BOTAN_DLL GHASH : public SymmetricAlgorithm
secure_vector<byte> final();
- Key_Length_Specification key_spec() const { return Key_Length_Specification(16); }
+ Key_Length_Specification key_spec() const override
+ { return Key_Length_Specification(16); }
void clear() override;
- std::string name() const { return "GHASH"; }
+ std::string name() const override { return "GHASH"; }
private:
void key_schedule(const byte key[], size_t key_len) override;
diff --git a/src/lib/modes/cbc/cbc.h b/src/lib/modes/cbc/cbc.h
index 963e92666..7fbcc8837 100644
--- a/src/lib/modes/cbc/cbc.h
+++ b/src/lib/modes/cbc/cbc.h
@@ -88,7 +88,7 @@ class BOTAN_DLL CTS_Encryption : public CBC_Encryption
size_t minimum_final_size() const override;
- bool valid_nonce_length(size_t n) const;
+ bool valid_nonce_length(size_t n) const override;
};
/**
@@ -123,7 +123,7 @@ class BOTAN_DLL CTS_Decryption : public CBC_Decryption
size_t minimum_final_size() const override;
- bool valid_nonce_length(size_t n) const;
+ bool valid_nonce_length(size_t n) const override;
};
}
diff --git a/src/lib/modes/mode_pad/mode_pad.h b/src/lib/modes/mode_pad/mode_pad.h
index c4d5baf2e..91102c66c 100644
--- a/src/lib/modes/mode_pad/mode_pad.h
+++ b/src/lib/modes/mode_pad/mode_pad.h
@@ -63,11 +63,11 @@ class BOTAN_DLL PKCS7_Padding : public BlockCipherModePaddingMethod
size_t final_block_bytes,
size_t block_size) const override;
- size_t unpad(const byte[], size_t) const;
+ size_t unpad(const byte[], size_t) const override;
- bool valid_blocksize(size_t bs) const { return (bs > 0 && bs < 256); }
+ bool valid_blocksize(size_t bs) const override { return (bs > 0 && bs < 256); }
- std::string name() const { return "PKCS7"; }
+ std::string name() const override { return "PKCS7"; }
};
/**
@@ -80,11 +80,11 @@ class BOTAN_DLL ANSI_X923_Padding : public BlockCipherModePaddingMethod
size_t final_block_bytes,
size_t block_size) const override;
- size_t unpad(const byte[], size_t) const;
+ size_t unpad(const byte[], size_t) const override;
- bool valid_blocksize(size_t bs) const { return (bs > 0 && bs < 256); }
+ bool valid_blocksize(size_t bs) const override { return (bs > 0 && bs < 256); }
- std::string name() const { return "X9.23"; }
+ std::string name() const override { return "X9.23"; }
};
/**
@@ -97,11 +97,11 @@ class BOTAN_DLL OneAndZeros_Padding : public BlockCipherModePaddingMethod
size_t final_block_bytes,
size_t block_size) const override;
- size_t unpad(const byte[], size_t) const;
+ size_t unpad(const byte[], size_t) const override;
- bool valid_blocksize(size_t bs) const { return (bs > 0); }
+ bool valid_blocksize(size_t bs) const override { return (bs > 0); }
- std::string name() const { return "OneAndZeros"; }
+ std::string name() const override { return "OneAndZeros"; }
};
/**
@@ -112,11 +112,11 @@ class BOTAN_DLL Null_Padding : public BlockCipherModePaddingMethod
public:
void add_padding(secure_vector<byte>&, size_t, size_t) const override {}
- size_t unpad(const byte[], size_t size) const { return size; }
+ size_t unpad(const byte[], size_t size) const override { return size; }
- bool valid_blocksize(size_t) const { return true; }
+ bool valid_blocksize(size_t) const override { return true; }
- std::string name() const { return "NoPadding"; }
+ std::string name() const override { return "NoPadding"; }
};
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 80fec96f9..5450bc37d 100644
--- a/src/lib/modes/stream_mode.h
+++ b/src/lib/modes/stream_mode.h
@@ -50,7 +50,7 @@ class BOTAN_DLL Stream_Cipher_Mode : public Cipher_Mode
return secure_vector<byte>();
}
- void key_schedule(const byte key[], size_t length)
+ void key_schedule(const byte key[], size_t length) override
{
m_cipher->set_key(key, length);
}
diff --git a/src/lib/pbkdf/pbkdf1/pbkdf1.h b/src/lib/pbkdf/pbkdf1/pbkdf1.h
index f776bb450..3296f8887 100644
--- a/src/lib/pbkdf/pbkdf1/pbkdf1.h
+++ b/src/lib/pbkdf/pbkdf1/pbkdf1.h
@@ -27,12 +27,12 @@ class BOTAN_DLL PKCS5_PBKDF1 : public PBKDF
*/
PKCS5_PBKDF1(HashFunction* hash) : m_hash(hash) {}
- std::string name() const
+ std::string name() const override
{
return "PBKDF1(" + m_hash->name() + ")";
}
- PBKDF* clone() const
+ PBKDF* clone() const override
{
return new PKCS5_PBKDF1(m_hash->clone());
}
diff --git a/src/lib/pk_pad/eme_oaep/oaep.h b/src/lib/pk_pad/eme_oaep/oaep.h
index 74d8784eb..13e6efeec 100644
--- a/src/lib/pk_pad/eme_oaep/oaep.h
+++ b/src/lib/pk_pad/eme_oaep/oaep.h
@@ -19,7 +19,7 @@ namespace Botan {
class BOTAN_DLL OAEP : public EME
{
public:
- size_t maximum_input_size(size_t) const;
+ size_t maximum_input_size(size_t) const override;
static OAEP* make(const Spec& spec);
@@ -30,8 +30,8 @@ class BOTAN_DLL OAEP : public EME
OAEP(HashFunction* hash, const std::string& P = "");
private:
secure_vector<byte> pad(const byte[], size_t, size_t,
- RandomNumberGenerator&) const;
- secure_vector<byte> unpad(const byte[], size_t, size_t) const;
+ RandomNumberGenerator&) const override;
+ secure_vector<byte> unpad(const byte[], size_t, size_t) const override;
secure_vector<byte> m_Phash;
std::unique_ptr<HashFunction> m_hash;
diff --git a/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h b/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h
index b7261433c..83c99e61b 100644
--- a/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h
+++ b/src/lib/pk_pad/eme_pkcs1/eme_pkcs.h
@@ -18,11 +18,11 @@ namespace Botan {
class BOTAN_DLL EME_PKCS1v15 : public EME
{
public:
- size_t maximum_input_size(size_t) const;
+ size_t maximum_input_size(size_t) const override;
private:
secure_vector<byte> pad(const byte[], size_t, size_t,
- RandomNumberGenerator&) const;
- secure_vector<byte> unpad(const byte[], size_t, size_t) const;
+ RandomNumberGenerator&) const override;
+ secure_vector<byte> unpad(const byte[], size_t, 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 34743d1af..04604c72d 100644
--- a/src/lib/pk_pad/eme_raw/eme_raw.h
+++ b/src/lib/pk_pad/eme_raw/eme_raw.h
@@ -14,14 +14,14 @@ namespace Botan {
class BOTAN_DLL EME_Raw : public EME
{
public:
- size_t maximum_input_size(size_t i) const;
+ size_t maximum_input_size(size_t i) const override;
EME_Raw() {}
private:
secure_vector<byte> pad(const byte[], size_t, size_t,
- RandomNumberGenerator&) const;
+ RandomNumberGenerator&) const override;
- secure_vector<byte> unpad(const byte[], size_t, size_t) const;
+ secure_vector<byte> unpad(const byte[], size_t, size_t) const override;
};
}
diff --git a/src/lib/pk_pad/emsa1/emsa1.h b/src/lib/pk_pad/emsa1/emsa1.h
index e81a746fc..3e10162b2 100644
--- a/src/lib/pk_pad/emsa1/emsa1.h
+++ b/src/lib/pk_pad/emsa1/emsa1.h
@@ -28,16 +28,16 @@ class BOTAN_DLL EMSA1 : public EMSA
protected:
size_t hash_output_length() const { return m_hash->output_length(); }
private:
- void update(const byte[], size_t);
- secure_vector<byte> raw_data();
+ void update(const byte[], size_t) override;
+ secure_vector<byte> raw_data() override;
secure_vector<byte> encoding_of(const secure_vector<byte>& msg,
size_t output_bits,
- RandomNumberGenerator& rng);
+ RandomNumberGenerator& rng) override;
bool verify(const secure_vector<byte>& coded,
const secure_vector<byte>& raw,
- size_t key_bits);
+ size_t key_bits) override;
std::unique_ptr<HashFunction> m_hash;
};
diff --git a/src/lib/pk_pad/emsa1_bsi/emsa1_bsi.h b/src/lib/pk_pad/emsa1_bsi/emsa1_bsi.h
index 591af2f7d..24d8b99e2 100644
--- a/src/lib/pk_pad/emsa1_bsi/emsa1_bsi.h
+++ b/src/lib/pk_pad/emsa1_bsi/emsa1_bsi.h
@@ -27,7 +27,7 @@ class BOTAN_DLL EMSA1_BSI : public EMSA1
EMSA1_BSI(HashFunction* hash) : EMSA1(hash) {}
private:
secure_vector<byte> encoding_of(const secure_vector<byte>&, size_t,
- RandomNumberGenerator& rng);
+ RandomNumberGenerator& rng) override;
};
}
diff --git a/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h b/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h
index 21ee7c1a2..7bcae3bd1 100644
--- a/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h
+++ b/src/lib/pk_pad/emsa_pkcs1/emsa_pkcs1.h
@@ -26,15 +26,15 @@ class BOTAN_DLL EMSA_PKCS1v15 : public EMSA
*/
EMSA_PKCS1v15(HashFunction* hash);
- void update(const byte[], size_t);
+ void update(const byte[], size_t) override;
- secure_vector<byte> raw_data();
+ secure_vector<byte> raw_data() override;
secure_vector<byte> encoding_of(const secure_vector<byte>&, size_t,
- RandomNumberGenerator& rng);
+ RandomNumberGenerator& rng) override;
bool verify(const secure_vector<byte>&, const secure_vector<byte>&,
- size_t);
+ size_t) override;
private:
std::unique_ptr<HashFunction> m_hash;
std::vector<byte> m_hash_id;
@@ -48,15 +48,15 @@ class BOTAN_DLL EMSA_PKCS1v15 : public EMSA
class BOTAN_DLL EMSA_PKCS1v15_Raw : public EMSA
{
public:
- void update(const byte[], size_t);
+ void update(const byte[], size_t) override;
- secure_vector<byte> raw_data();
+ secure_vector<byte> raw_data() override;
secure_vector<byte> encoding_of(const secure_vector<byte>&, size_t,
- RandomNumberGenerator& rng);
+ RandomNumberGenerator& rng) override;
bool verify(const secure_vector<byte>&, const secure_vector<byte>&,
- size_t);
+ size_t) override;
private:
secure_vector<byte> message;
diff --git a/src/lib/pk_pad/emsa_pssr/pssr.h b/src/lib/pk_pad/emsa_pssr/pssr.h
index e51ade494..066c580d8 100644
--- a/src/lib/pk_pad/emsa_pssr/pssr.h
+++ b/src/lib/pk_pad/emsa_pssr/pssr.h
@@ -33,17 +33,17 @@ class BOTAN_DLL PSSR : public EMSA
static PSSR* make(const Spec& spec);
private:
- void update(const byte input[], size_t length);
+ void update(const byte input[], size_t length) override;
- secure_vector<byte> raw_data();
+ secure_vector<byte> raw_data() override;
secure_vector<byte> encoding_of(const secure_vector<byte>& msg,
size_t output_bits,
- RandomNumberGenerator& rng);
+ RandomNumberGenerator& rng) override;
bool verify(const secure_vector<byte>& coded,
const secure_vector<byte>& raw,
- size_t key_bits);
+ size_t key_bits) override;
size_t SALT_SIZE;
std::unique_ptr<HashFunction> hash;
diff --git a/src/lib/pk_pad/emsa_raw/emsa_raw.h b/src/lib/pk_pad/emsa_raw/emsa_raw.h
index 731405fde..d1d6ac912 100644
--- a/src/lib/pk_pad/emsa_raw/emsa_raw.h
+++ b/src/lib/pk_pad/emsa_raw/emsa_raw.h
@@ -19,13 +19,13 @@ namespace Botan {
class BOTAN_DLL EMSA_Raw : public EMSA
{
private:
- void update(const byte[], size_t);
- secure_vector<byte> raw_data();
+ void update(const byte[], size_t) override;
+ secure_vector<byte> raw_data() override;
secure_vector<byte> encoding_of(const secure_vector<byte>&, size_t,
- RandomNumberGenerator&);
+ RandomNumberGenerator&) override;
bool verify(const secure_vector<byte>&, const secure_vector<byte>&,
- size_t);
+ size_t) override;
secure_vector<byte> message;
};
diff --git a/src/lib/pk_pad/emsa_x931/emsa_x931.h b/src/lib/pk_pad/emsa_x931/emsa_x931.h
index ee57a14ff..29bad4a4a 100644
--- a/src/lib/pk_pad/emsa_x931/emsa_x931.h
+++ b/src/lib/pk_pad/emsa_x931/emsa_x931.h
@@ -26,14 +26,14 @@ class BOTAN_DLL EMSA_X931 : public EMSA
*/
EMSA_X931(HashFunction* hash);
private:
- void update(const byte[], size_t);
- secure_vector<byte> raw_data();
+ void update(const byte[], size_t) override;
+ secure_vector<byte> raw_data() override;
secure_vector<byte> encoding_of(const secure_vector<byte>&, size_t,
- RandomNumberGenerator& rng);
+ RandomNumberGenerator& rng) override;
bool verify(const secure_vector<byte>&, const secure_vector<byte>&,
- size_t);
+ size_t) override;
secure_vector<byte> m_empty_hash;
std::unique_ptr<HashFunction> m_hash;
diff --git a/src/lib/pubkey/curve25519/curve25519.cpp b/src/lib/pubkey/curve25519/curve25519.cpp
index b314e16dc..aa0646d04 100644
--- a/src/lib/pubkey/curve25519/curve25519.cpp
+++ b/src/lib/pubkey/curve25519/curve25519.cpp
@@ -126,7 +126,7 @@ class Curve25519_KA_Operation : public PK_Ops::Key_Agreement_with_KDF
PK_Ops::Key_Agreement_with_KDF(kdf),
m_key(key) {}
- secure_vector<byte> raw_agree(const byte w[], size_t w_len)
+ secure_vector<byte> raw_agree(const byte w[], size_t w_len) override
{
return m_key.agree(w, w_len);
}
diff --git a/src/lib/pubkey/curve25519/curve25519.h b/src/lib/pubkey/curve25519/curve25519.h
index 849940505..c3e3d4e60 100644
--- a/src/lib/pubkey/curve25519/curve25519.h
+++ b/src/lib/pubkey/curve25519/curve25519.h
@@ -19,7 +19,7 @@ class BOTAN_DLL Curve25519_PublicKey : public virtual Public_Key
size_t estimated_strength() const override { return 128; }
- size_t max_input_bits() const { return 256; }
+ size_t max_input_bits() const override { return 256; }
bool check_key(RandomNumberGenerator& rng, bool strong) const override;
diff --git a/src/lib/pubkey/dh/dh.cpp b/src/lib/pubkey/dh/dh.cpp
index 57310efae..f182a7792 100644
--- a/src/lib/pubkey/dh/dh.cpp
+++ b/src/lib/pubkey/dh/dh.cpp
@@ -88,7 +88,7 @@ class DH_KA_Operation : public PK_Ops::Key_Agreement_with_KDF
typedef DH_PrivateKey Key_Type;
DH_KA_Operation(const DH_PrivateKey& key, const std::string& kdf);
- secure_vector<byte> raw_agree(const byte w[], size_t w_len);
+ secure_vector<byte> raw_agree(const byte w[], size_t w_len) override;
private:
const BigInt& m_p;
diff --git a/src/lib/pubkey/dh/dh.h b/src/lib/pubkey/dh/dh.h
index 32ca21440..9911453fb 100644
--- a/src/lib/pubkey/dh/dh.h
+++ b/src/lib/pubkey/dh/dh.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL DH_PublicKey : public virtual DL_Scheme_PublicKey
{
public:
- std::string algo_name() const { return "DH"; }
+ std::string algo_name() const override { return "DH"; }
std::vector<byte> public_value() const;
- size_t max_input_bits() const { return group_p().bits(); }
+ size_t max_input_bits() const override { return group_p().bits(); }
- DL_Group::Format group_format() const { return DL_Group::ANSI_X9_42; }
+ DL_Group::Format group_format() const override { return DL_Group::ANSI_X9_42; }
DH_PublicKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits) :
@@ -47,7 +47,7 @@ class BOTAN_DLL DH_PrivateKey : public DH_PublicKey,
public virtual DL_Scheme_PrivateKey
{
public:
- std::vector<byte> public_value() const;
+ std::vector<byte> public_value() const override;
/**
* Load a DH private key
diff --git a/src/lib/pubkey/dl_algo/dl_algo.h b/src/lib/pubkey/dl_algo/dl_algo.h
index 5d2386e56..73cf23eec 100644
--- a/src/lib/pubkey/dl_algo/dl_algo.h
+++ b/src/lib/pubkey/dl_algo/dl_algo.h
@@ -20,11 +20,11 @@ namespace Botan {
class BOTAN_DLL DL_Scheme_PublicKey : public virtual Public_Key
{
public:
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
- AlgorithmIdentifier algorithm_identifier() const;
+ AlgorithmIdentifier algorithm_identifier() const override;
- std::vector<byte> x509_subject_public_key() const;
+ std::vector<byte> x509_subject_public_key() const override;
/**
* Get the DL domain parameters of this key.
@@ -88,7 +88,7 @@ class BOTAN_DLL DL_Scheme_PrivateKey : public virtual DL_Scheme_PublicKey,
public virtual Private_Key
{
public:
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
/**
* Get the secret key x.
@@ -96,7 +96,7 @@ class BOTAN_DLL DL_Scheme_PrivateKey : public virtual DL_Scheme_PublicKey,
*/
const BigInt& get_x() const { return x; }
- secure_vector<byte> pkcs8_private_key() const;
+ secure_vector<byte> pkcs8_private_key() const override;
DL_Scheme_PrivateKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits,
diff --git a/src/lib/pubkey/dlies/dlies.h b/src/lib/pubkey/dlies/dlies.h
index 3f0647aeb..ed5928080 100644
--- a/src/lib/pubkey/dlies/dlies.h
+++ b/src/lib/pubkey/dlies/dlies.h
@@ -28,9 +28,9 @@ class BOTAN_DLL DLIES_Encryptor : public PK_Encryptor
void set_other_key(const std::vector<byte>&);
private:
std::vector<byte> enc(const byte[], size_t,
- RandomNumberGenerator&) const;
+ RandomNumberGenerator&) const override;
- size_t maximum_input_size() const;
+ size_t maximum_input_size() const override;
std::vector<byte> other_key, my_key;
@@ -52,7 +52,7 @@ class BOTAN_DLL DLIES_Decryptor : public PK_Decryptor
size_t mac_key_len = 20);
private:
- secure_vector<byte> dec(const byte[], size_t) const;
+ secure_vector<byte> dec(const byte[], size_t) const override;
std::vector<byte> my_key;
diff --git a/src/lib/pubkey/dsa/dsa.cpp b/src/lib/pubkey/dsa/dsa.cpp
index 90cc18fdc..ec0830533 100644
--- a/src/lib/pubkey/dsa/dsa.cpp
+++ b/src/lib/pubkey/dsa/dsa.cpp
@@ -148,9 +148,9 @@ class DSA_Verification_Operation : public PK_Ops::Verification_with_EMSA
mod_q = Modular_Reducer(dsa.group_q());
}
- size_t message_parts() const { return 2; }
- size_t message_part_size() const { return q.bytes(); }
- size_t max_input_bits() const { return q.bits(); }
+ size_t message_parts() const override { return 2; }
+ size_t message_part_size() const override { return q.bytes(); }
+ size_t max_input_bits() const override { return q.bits(); }
bool with_recovery() const override { return false; }
diff --git a/src/lib/pubkey/dsa/dsa.h b/src/lib/pubkey/dsa/dsa.h
index 294774bf0..2653c9229 100644
--- a/src/lib/pubkey/dsa/dsa.h
+++ b/src/lib/pubkey/dsa/dsa.h
@@ -18,12 +18,12 @@ namespace Botan {
class BOTAN_DLL DSA_PublicKey : public virtual DL_Scheme_PublicKey
{
public:
- std::string algo_name() const { return "DSA"; }
+ std::string algo_name() const override { return "DSA"; }
- DL_Group::Format group_format() const { return DL_Group::ANSI_X9_57; }
- size_t message_parts() const { return 2; }
- size_t message_part_size() const { return group_q().bytes(); }
- size_t max_input_bits() const { return group_q().bits(); }
+ DL_Group::Format group_format() const override { return DL_Group::ANSI_X9_57; }
+ size_t message_parts() const override { return 2; }
+ size_t message_part_size() const override { return group_q().bytes(); }
+ size_t max_input_bits() const override { return group_q().bits(); }
DSA_PublicKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits) :
@@ -51,7 +51,7 @@ class BOTAN_DLL DSA_PrivateKey : public DSA_PublicKey,
const DL_Group& group,
const BigInt& private_key = 0);
- bool check_key(RandomNumberGenerator& rng, bool strong) const;
+ bool check_key(RandomNumberGenerator& rng, bool strong) const override;
};
}
diff --git a/src/lib/pubkey/ecc_key/ecc_key.h b/src/lib/pubkey/ecc_key/ecc_key.h
index efc4b02da..dcf5b84ff 100644
--- a/src/lib/pubkey/ecc_key/ecc_key.h
+++ b/src/lib/pubkey/ecc_key/ecc_key.h
@@ -44,12 +44,12 @@ class BOTAN_DLL EC_PublicKey : public virtual Public_Key
*/
const PointGFp& public_point() const { return public_key; }
- AlgorithmIdentifier algorithm_identifier() const;
+ AlgorithmIdentifier algorithm_identifier() const override;
- std::vector<byte> x509_subject_public_key() const;
+ std::vector<byte> x509_subject_public_key() const override;
bool check_key(RandomNumberGenerator& rng,
- bool strong) const;
+ bool strong) const override;
/**
* Get the domain parameters of this key.
@@ -103,7 +103,7 @@ class BOTAN_DLL EC_PrivateKey : public virtual EC_PublicKey,
EC_PrivateKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits);
- secure_vector<byte> pkcs8_private_key() const;
+ secure_vector<byte> pkcs8_private_key() const override;
/**
* Get the private key value of this key object.
diff --git a/src/lib/pubkey/ecdh/ecdh.cpp b/src/lib/pubkey/ecdh/ecdh.cpp
index 61d3af816..bad0f2c0b 100644
--- a/src/lib/pubkey/ecdh/ecdh.cpp
+++ b/src/lib/pubkey/ecdh/ecdh.cpp
@@ -30,7 +30,7 @@ class ECDH_KA_Operation : public PK_Ops::Key_Agreement_with_KDF
l_times_priv = inverse_mod(cofactor, key.domain().get_order()) * key.private_value();
}
- secure_vector<byte> raw_agree(const byte w[], size_t w_len)
+ secure_vector<byte> raw_agree(const byte w[], size_t w_len) override
{
PointGFp point = OS2ECP(w, w_len, curve);
PointGFp S = (cofactor * point) * l_times_priv;
diff --git a/src/lib/pubkey/ecdh/ecdh.h b/src/lib/pubkey/ecdh/ecdh.h
index 1e806f119..ef3e8ef7a 100644
--- a/src/lib/pubkey/ecdh/ecdh.h
+++ b/src/lib/pubkey/ecdh/ecdh.h
@@ -38,7 +38,7 @@ class BOTAN_DLL ECDH_PublicKey : public virtual EC_PublicKey
* Get this keys algorithm name.
* @return this keys algorithm name
*/
- std::string algo_name() const { return "ECDH"; }
+ std::string algo_name() const override { return "ECDH"; }
/**
* Get the maximum number of bits allowed to be fed to this key.
@@ -46,7 +46,8 @@ class BOTAN_DLL ECDH_PublicKey : public virtual EC_PublicKey
* @return maximum number of input bits
*/
- size_t max_input_bits() const { return domain().get_order().bits(); }
+ size_t max_input_bits() const override
+ { return domain().get_order().bits(); }
/**
* @return public point value
@@ -82,7 +83,7 @@ class BOTAN_DLL ECDH_PrivateKey : public ECDH_PublicKey,
const BigInt& x = 0) :
EC_PrivateKey(rng, domain, x) {}
- std::vector<byte> public_value() const
+ std::vector<byte> public_value() const override
{ return ECDH_PublicKey::public_value(); }
};
diff --git a/src/lib/pubkey/ecdsa/ecdsa.h b/src/lib/pubkey/ecdsa/ecdsa.h
index 91ddb500d..1eb41a4b9 100644
--- a/src/lib/pubkey/ecdsa/ecdsa.h
+++ b/src/lib/pubkey/ecdsa/ecdsa.h
@@ -38,18 +38,19 @@ class BOTAN_DLL ECDSA_PublicKey : public virtual EC_PublicKey
* Get this keys algorithm name.
* @result this keys algorithm name ("ECDSA")
*/
- std::string algo_name() const { return "ECDSA"; }
+ std::string algo_name() const override { return "ECDSA"; }
/**
* Get the maximum number of bits allowed to be fed to this key.
* This is the bitlength of the order of the base point.
* @result the maximum number of input bits
*/
- size_t max_input_bits() const { return domain().get_order().bits(); }
+ size_t max_input_bits() const override
+ { return domain().get_order().bits(); }
- size_t message_parts() const { return 2; }
+ size_t message_parts() const override { return 2; }
- size_t message_part_size() const
+ size_t message_part_size() const override
{ return domain().get_order().bytes(); }
protected:
@@ -84,7 +85,7 @@ class BOTAN_DLL ECDSA_PrivateKey : public ECDSA_PublicKey,
const BigInt& x = 0) :
EC_PrivateKey(rng, domain, x) {}
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
};
}
diff --git a/src/lib/pubkey/elgamal/elgamal.cpp b/src/lib/pubkey/elgamal/elgamal.cpp
index 2a4de7196..4d0344610 100644
--- a/src/lib/pubkey/elgamal/elgamal.cpp
+++ b/src/lib/pubkey/elgamal/elgamal.cpp
@@ -131,7 +131,8 @@ class ElGamal_Decryption_Operation : public PK_Ops::Decryption_with_EME
public:
typedef ElGamal_PrivateKey Key_Type;
- size_t max_raw_input_bits() const { return mod_p.get_modulus().bits() - 1; }
+ size_t max_raw_input_bits() const override
+ { return mod_p.get_modulus().bits() - 1; }
ElGamal_Decryption_Operation(const ElGamal_PrivateKey& key, const std::string& eme);
diff --git a/src/lib/pubkey/elgamal/elgamal.h b/src/lib/pubkey/elgamal/elgamal.h
index 90940b609..9f287158d 100644
--- a/src/lib/pubkey/elgamal/elgamal.h
+++ b/src/lib/pubkey/elgamal/elgamal.h
@@ -18,10 +18,10 @@ namespace Botan {
class BOTAN_DLL ElGamal_PublicKey : public virtual DL_Scheme_PublicKey
{
public:
- std::string algo_name() const { return "ElGamal"; }
- DL_Group::Format group_format() const { return DL_Group::ANSI_X9_42; }
+ std::string algo_name() const override { return "ElGamal"; }
+ DL_Group::Format group_format() const override { return DL_Group::ANSI_X9_42; }
- size_t max_input_bits() const { return (group_p().bits() - 1); }
+ size_t max_input_bits() const override { return (group_p().bits() - 1); }
ElGamal_PublicKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits) :
@@ -40,7 +40,7 @@ class BOTAN_DLL ElGamal_PrivateKey : public ElGamal_PublicKey,
public virtual DL_Scheme_PrivateKey
{
public:
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
ElGamal_PrivateKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits,
diff --git a/src/lib/pubkey/gost_3410/gost_3410.cpp b/src/lib/pubkey/gost_3410/gost_3410.cpp
index 3950c0e43..9c3a0ef3c 100644
--- a/src/lib/pubkey/gost_3410/gost_3410.cpp
+++ b/src/lib/pubkey/gost_3410/gost_3410.cpp
@@ -171,7 +171,7 @@ class GOST_3410_Verification_Operation : public PK_Ops::Verification_with_EMSA
bool with_recovery() const override { return false; }
bool verify(const byte msg[], size_t msg_len,
- const byte sig[], size_t sig_len);
+ const byte sig[], size_t sig_len) override;
private:
const PointGFp& base_point;
const PointGFp& public_point;
diff --git a/src/lib/pubkey/gost_3410/gost_3410.h b/src/lib/pubkey/gost_3410/gost_3410.h
index 2356d8e3d..62a627c37 100644
--- a/src/lib/pubkey/gost_3410/gost_3410.h
+++ b/src/lib/pubkey/gost_3410/gost_3410.h
@@ -40,11 +40,11 @@ class BOTAN_DLL GOST_3410_PublicKey : public virtual EC_PublicKey
* Get this keys algorithm name.
* @result this keys algorithm name
*/
- std::string algo_name() const { return "GOST-34.10"; }
+ std::string algo_name() const override { return "GOST-34.10"; }
- AlgorithmIdentifier algorithm_identifier() const;
+ AlgorithmIdentifier algorithm_identifier() const override;
- std::vector<byte> x509_subject_public_key() const;
+ std::vector<byte> x509_subject_public_key() const override;
/**
* Get the maximum number of bits allowed to be fed to this key.
@@ -52,11 +52,11 @@ class BOTAN_DLL GOST_3410_PublicKey : public virtual EC_PublicKey
* @result the maximum number of input bits
*/
- size_t max_input_bits() const { return domain().get_order().bits(); }
+ size_t max_input_bits() const override { return domain().get_order().bits(); }
- size_t message_parts() const { return 2; }
+ size_t message_parts() const override { return 2; }
- size_t message_part_size() const
+ size_t message_part_size() const override
{ return domain().get_order().bytes(); }
protected:
@@ -86,7 +86,7 @@ class BOTAN_DLL GOST_3410_PrivateKey : public GOST_3410_PublicKey,
const BigInt& x = 0) :
EC_PrivateKey(rng, domain, x) {}
- AlgorithmIdentifier pkcs8_algorithm_identifier() const
+ AlgorithmIdentifier pkcs8_algorithm_identifier() const override
{ return EC_PublicKey::algorithm_identifier(); }
};
diff --git a/src/lib/pubkey/if_algo/if_algo.h b/src/lib/pubkey/if_algo/if_algo.h
index 7fa266aaa..73050ad41 100644
--- a/src/lib/pubkey/if_algo/if_algo.h
+++ b/src/lib/pubkey/if_algo/if_algo.h
@@ -27,11 +27,11 @@ class BOTAN_DLL IF_Scheme_PublicKey : public virtual Public_Key
IF_Scheme_PublicKey(const BigInt& n, const BigInt& e) :
n(n), e(e) {}
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
- AlgorithmIdentifier algorithm_identifier() const;
+ AlgorithmIdentifier algorithm_identifier() const override;
- std::vector<byte> x509_subject_public_key() const;
+ std::vector<byte> x509_subject_public_key() const override;
/**
* @return public modulus
@@ -43,7 +43,7 @@ class BOTAN_DLL IF_Scheme_PublicKey : public virtual Public_Key
*/
const BigInt& get_e() const { return e; }
- size_t max_input_bits() const { return (n.bits() - 1); }
+ size_t max_input_bits() const override { return (n.bits() - 1); }
size_t estimated_strength() const override;
@@ -71,7 +71,7 @@ class BOTAN_DLL IF_Scheme_PrivateKey : public virtual IF_Scheme_PublicKey,
const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits);
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
/**
* Get the first prime p.
@@ -95,7 +95,7 @@ class BOTAN_DLL IF_Scheme_PrivateKey : public virtual IF_Scheme_PublicKey,
const BigInt& get_d1() const { return d1; }
const BigInt& get_d2() const { return d2; }
- secure_vector<byte> pkcs8_private_key() const;
+ secure_vector<byte> pkcs8_private_key() const override;
protected:
IF_Scheme_PrivateKey() {}
diff --git a/src/lib/pubkey/mce/mceliece.h b/src/lib/pubkey/mce/mceliece.h
index b62afee3a..c5f02470f 100644
--- a/src/lib/pubkey/mce/mceliece.h
+++ b/src/lib/pubkey/mce/mceliece.h
@@ -112,9 +112,9 @@ class BOTAN_DLL McEliece_Private_Operation : public PK_Ops::Decryption
public:
McEliece_Private_Operation(const McEliece_PrivateKey& mce_key);
- size_t max_input_bits() const { return m_priv_key.max_input_bits(); }
+ size_t max_input_bits() const override { return m_priv_key.max_input_bits(); }
- secure_vector<byte> decrypt(const byte msg[], size_t msg_len);
+ secure_vector<byte> decrypt(const byte msg[], size_t msg_len) override;
McEliece_PrivateKey const& get_key() const { return m_priv_key; }
@@ -127,8 +127,8 @@ class BOTAN_DLL McEliece_Public_Operation : public PK_Ops::Encryption
public:
McEliece_Public_Operation(const McEliece_PublicKey& public_key, u32bit code_length);
- size_t max_input_bits() const { return m_pub_key.max_input_bits(); }
- secure_vector<byte> encrypt(const byte msg[], size_t msg_len, RandomNumberGenerator&);
+ size_t max_input_bits() const override { return m_pub_key.max_input_bits(); }
+ secure_vector<byte> encrypt(const byte msg[], size_t msg_len, RandomNumberGenerator&) override;
McEliece_PublicKey const& get_key() const { return m_pub_key; }
diff --git a/src/lib/pubkey/mce/mceliece_key.h b/src/lib/pubkey/mce/mceliece_key.h
index 3a0d0eea8..65ab04f16 100644
--- a/src/lib/pubkey/mce/mceliece_key.h
+++ b/src/lib/pubkey/mce/mceliece_key.h
@@ -32,25 +32,25 @@ class BOTAN_DLL McEliece_PublicKey : public virtual Public_Key
McEliece_PublicKey(const McEliece_PublicKey & other);
- std::string algo_name() const { return "McEliece"; }
+ std::string algo_name() const override { return "McEliece"; }
/**
* Get the maximum number of bits allowed to be fed to this key.
* This is the bitlength of the order of the base point.
* @result the maximum number of input bits
*/
- size_t max_input_bits() const
+ size_t max_input_bits() const override
{
return get_message_word_bit_length();
};
- AlgorithmIdentifier algorithm_identifier() const;
+ AlgorithmIdentifier algorithm_identifier() const override;
- size_t estimated_strength() const;
+ size_t estimated_strength() const override;
- std::vector<byte> x509_subject_public_key() const;
+ std::vector<byte> x509_subject_public_key() const override;
- bool check_key(RandomNumberGenerator&, bool) const
+ bool check_key(RandomNumberGenerator&, bool) const override
{ return true; }
u32bit get_t() const { return m_t; }
@@ -78,7 +78,7 @@ class BOTAN_DLL McEliece_PrivateKey : public virtual McEliece_PublicKey,
* This is the bitlength of the order of the base point.
* @result the maximum number of input bits
*/
- size_t max_input_bits() const {
+ size_t max_input_bits() const override {
return m_Linv.size();
};
@@ -91,7 +91,7 @@ class BOTAN_DLL McEliece_PrivateKey : public virtual McEliece_PublicKey,
std::vector<byte> const& public_matrix );
McEliece_PrivateKey(RandomNumberGenerator& rng, size_t code_length, size_t t);
- bool check_key(RandomNumberGenerator& rng, bool strong) const;
+ bool check_key(RandomNumberGenerator& rng, bool strong) const override;
polyn_gf2m const& get_goppa_polyn() const { return m_g; };
std::vector<u32bit> const& get_H_coeffs() const { return m_coeffs; };
@@ -105,7 +105,7 @@ class BOTAN_DLL McEliece_PrivateKey : public virtual McEliece_PublicKey,
{ return m_codimension; };
- secure_vector<byte> pkcs8_private_key() const;
+ secure_vector<byte> pkcs8_private_key() const override;
bool operator==(const McEliece_PrivateKey & other) const;
diff --git a/src/lib/pubkey/nr/nr.h b/src/lib/pubkey/nr/nr.h
index 51752f8ce..425ad2642 100644
--- a/src/lib/pubkey/nr/nr.h
+++ b/src/lib/pubkey/nr/nr.h
@@ -18,13 +18,13 @@ namespace Botan {
class BOTAN_DLL NR_PublicKey : public virtual DL_Scheme_PublicKey
{
public:
- std::string algo_name() const { return "NR"; }
+ std::string algo_name() const override { return "NR"; }
- DL_Group::Format group_format() const { return DL_Group::ANSI_X9_57; }
+ DL_Group::Format group_format() const override { return DL_Group::ANSI_X9_57; }
- size_t message_parts() const { return 2; }
- size_t message_part_size() const { return group_q().bytes(); }
- size_t max_input_bits() const { return (group_q().bits() - 1); }
+ size_t message_parts() const override { return 2; }
+ size_t message_part_size() const override { return group_q().bytes(); }
+ size_t max_input_bits() const override { return (group_q().bits() - 1); }
NR_PublicKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits);
@@ -41,7 +41,7 @@ class BOTAN_DLL NR_PrivateKey : public NR_PublicKey,
public virtual DL_Scheme_PrivateKey
{
public:
- bool check_key(RandomNumberGenerator& rng, bool strong) const;
+ bool check_key(RandomNumberGenerator& rng, bool strong) const override;
NR_PrivateKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits,
diff --git a/src/lib/pubkey/pk_keys.h b/src/lib/pubkey/pk_keys.h
index 66811de86..40b7569af 100644
--- a/src/lib/pubkey/pk_keys.h
+++ b/src/lib/pubkey/pk_keys.h
@@ -114,7 +114,7 @@ class BOTAN_DLL Private_Key : public virtual Public_Key
* Self-test after loading a key
* @param rng a random number generator
*/
- void load_check(RandomNumberGenerator& rng) const;
+ void load_check(RandomNumberGenerator& rng) const override;
/**
* Self-test after generating a key
diff --git a/src/lib/pubkey/pubkey.h b/src/lib/pubkey/pubkey.h
index c95ed4469..687485c68 100644
--- a/src/lib/pubkey/pubkey.h
+++ b/src/lib/pubkey/pubkey.h
@@ -377,7 +377,7 @@ class BOTAN_DLL PK_Key_Agreement
class BOTAN_DLL PK_Encryptor_EME : public PK_Encryptor
{
public:
- size_t maximum_input_size() const;
+ size_t maximum_input_size() const override;
/**
* Construct an instance.
@@ -388,7 +388,7 @@ class BOTAN_DLL PK_Encryptor_EME : public PK_Encryptor
const std::string& eme);
private:
std::vector<byte> enc(const byte[], size_t,
- RandomNumberGenerator& rng) const;
+ RandomNumberGenerator& rng) const override;
std::unique_ptr<PK_Ops::Encryption> m_op;
};
@@ -407,7 +407,7 @@ class BOTAN_DLL PK_Decryptor_EME : public PK_Decryptor
PK_Decryptor_EME(const Private_Key& key,
const std::string& eme);
private:
- secure_vector<byte> dec(const byte[], size_t) const;
+ secure_vector<byte> dec(const byte[], size_t) const override;
std::unique_ptr<PK_Ops::Decryption> m_op;
};
diff --git a/src/lib/pubkey/rsa/rsa.h b/src/lib/pubkey/rsa/rsa.h
index 67357d859..4a57b9f63 100644
--- a/src/lib/pubkey/rsa/rsa.h
+++ b/src/lib/pubkey/rsa/rsa.h
@@ -19,7 +19,7 @@ namespace Botan {
class BOTAN_DLL RSA_PublicKey : public virtual IF_Scheme_PublicKey
{
public:
- std::string algo_name() const { return "RSA"; }
+ std::string algo_name() const override { return "RSA"; }
RSA_PublicKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits) :
@@ -46,7 +46,7 @@ class BOTAN_DLL RSA_PrivateKey : public RSA_PublicKey,
public IF_Scheme_PrivateKey
{
public:
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
RSA_PrivateKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits,
diff --git a/src/lib/pubkey/rw/rw.cpp b/src/lib/pubkey/rw/rw.cpp
index b706d6730..aa92578af 100644
--- a/src/lib/pubkey/rw/rw.cpp
+++ b/src/lib/pubkey/rw/rw.cpp
@@ -141,10 +141,10 @@ class RW_Verification_Operation : public PK_Ops::Verification_with_EMSA
n(rw.get_n()), powermod_e_n(rw.get_e(), rw.get_n())
{}
- size_t max_input_bits() const { return (n.bits() - 1); }
- bool with_recovery() const { return true; }
+ size_t max_input_bits() const override { return (n.bits() - 1); }
+ bool with_recovery() const override { return true; }
- secure_vector<byte> verify_mr(const byte msg[], size_t msg_len);
+ secure_vector<byte> verify_mr(const byte msg[], size_t msg_len) override;
private:
const BigInt& n;
diff --git a/src/lib/pubkey/rw/rw.h b/src/lib/pubkey/rw/rw.h
index 5d754e817..2a010441e 100644
--- a/src/lib/pubkey/rw/rw.h
+++ b/src/lib/pubkey/rw/rw.h
@@ -18,7 +18,7 @@ namespace Botan {
class BOTAN_DLL RW_PublicKey : public virtual IF_Scheme_PublicKey
{
public:
- std::string algo_name() const { return "RW"; }
+ std::string algo_name() const override { return "RW"; }
RW_PublicKey(const AlgorithmIdentifier& alg_id,
const secure_vector<byte>& key_bits) :
@@ -53,7 +53,7 @@ class BOTAN_DLL RW_PrivateKey : public RW_PublicKey,
RW_PrivateKey(RandomNumberGenerator& rng, size_t bits, size_t = 2);
- bool check_key(RandomNumberGenerator& rng, bool) const;
+ bool check_key(RandomNumberGenerator& rng, bool) const override;
};
}
diff --git a/src/lib/rng/auto_rng/auto_rng.h b/src/lib/rng/auto_rng/auto_rng.h
index bb36f672e..a7b28af92 100644
--- a/src/lib/rng/auto_rng/auto_rng.h
+++ b/src/lib/rng/auto_rng/auto_rng.h
@@ -16,18 +16,18 @@ namespace Botan {
class BOTAN_DLL AutoSeeded_RNG : public RandomNumberGenerator
{
public:
- void randomize(byte out[], size_t len)
+ void randomize(byte out[], size_t len) override
{ m_rng->randomize(out, len); }
- bool is_seeded() const { return m_rng->is_seeded(); }
+ bool is_seeded() const override { return m_rng->is_seeded(); }
- void clear() { m_rng->clear(); }
+ void clear() override { m_rng->clear(); }
- std::string name() const { return m_rng->name(); }
+ std::string name() const override { return m_rng->name(); }
- void reseed(size_t poll_bits = 256) { m_rng->reseed(poll_bits); }
+ void reseed(size_t poll_bits = 256) override { m_rng->reseed(poll_bits); }
- void add_entropy(const byte in[], size_t len)
+ void add_entropy(const byte in[], size_t len) override
{ m_rng->add_entropy(in, len); }
AutoSeeded_RNG() : m_rng(RandomNumberGenerator::make_rng()) {}
diff --git a/src/lib/rng/hmac_drbg/hmac_drbg.h b/src/lib/rng/hmac_drbg/hmac_drbg.h
index 979b754b2..2fefdef0d 100644
--- a/src/lib/rng/hmac_drbg/hmac_drbg.h
+++ b/src/lib/rng/hmac_drbg/hmac_drbg.h
@@ -19,14 +19,14 @@ namespace Botan {
class BOTAN_DLL HMAC_DRBG : public RandomNumberGenerator
{
public:
- void randomize(byte buf[], size_t buf_len);
- bool is_seeded() const;
- void clear();
- std::string name() const;
+ void randomize(byte buf[], size_t buf_len) override;
+ bool is_seeded() const override;
+ void clear() override;
+ std::string name() const override;
- void reseed(size_t poll_bits);
+ void reseed(size_t poll_bits) override;
- void add_entropy(const byte input[], size_t input_len);
+ void add_entropy(const byte input[], size_t input_len) override;
/**
* @param mac the underlying mac function (eg HMAC(SHA-512))
diff --git a/src/lib/rng/rng.h b/src/lib/rng/rng.h
index 2abd11532..b1f78f75d 100644
--- a/src/lib/rng/rng.h
+++ b/src/lib/rng/rng.h
@@ -120,37 +120,37 @@ class BOTAN_DLL Null_RNG : public RandomNumberGenerator
class BOTAN_DLL Serialized_RNG : public RandomNumberGenerator
{
public:
- void randomize(byte out[], size_t len)
+ void randomize(byte out[], size_t len) override
{
std::lock_guard<std::mutex> lock(m_mutex);
m_rng->randomize(out, len);
}
- bool is_seeded() const
+ bool is_seeded() const override
{
std::lock_guard<std::mutex> lock(m_mutex);
return m_rng->is_seeded();
}
- void clear()
+ void clear() override
{
std::lock_guard<std::mutex> lock(m_mutex);
m_rng->clear();
}
- std::string name() const
+ std::string name() const override
{
std::lock_guard<std::mutex> lock(m_mutex);
return m_rng->name();
}
- void reseed(size_t poll_bits)
+ void reseed(size_t poll_bits) override
{
std::lock_guard<std::mutex> lock(m_mutex);
m_rng->reseed(poll_bits);
}
- void add_entropy(const byte in[], size_t len)
+ void add_entropy(const byte in[], size_t len) override
{
std::lock_guard<std::mutex> lock(m_mutex);
m_rng->add_entropy(in, len);
diff --git a/src/lib/rng/system_rng/system_rng.cpp b/src/lib/rng/system_rng/system_rng.cpp
index 59a8b014f..1ab80669b 100644
--- a/src/lib/rng/system_rng/system_rng.cpp
+++ b/src/lib/rng/system_rng/system_rng.cpp
@@ -34,14 +34,14 @@ class System_RNG : public RandomNumberGenerator
System_RNG();
~System_RNG();
- void randomize(byte buf[], size_t len);
+ void randomize(byte buf[], size_t len) override;
- bool is_seeded() const { return true; }
- void clear() {}
- std::string name() const { return "system"; }
+ bool is_seeded() const override { return true; }
+ void clear() override {}
+ std::string name() const override { return "system"; }
- void reseed(size_t) {}
- void add_entropy(const byte[], size_t) {}
+ void reseed(size_t) override {}
+ void add_entropy(const byte[], size_t) override {}
private:
#if defined(BOTAN_TARGET_OS_HAS_CRYPTGENRANDOM)
diff --git a/src/lib/rng/x931_rng/x931_rng.h b/src/lib/rng/x931_rng/x931_rng.h
index 8b1513035..899fed956 100644
--- a/src/lib/rng/x931_rng/x931_rng.h
+++ b/src/lib/rng/x931_rng/x931_rng.h
@@ -19,13 +19,13 @@ namespace Botan {
class BOTAN_DLL ANSI_X931_RNG : public RandomNumberGenerator
{
public:
- void randomize(byte[], size_t);
- bool is_seeded() const;
- void clear();
- std::string name() const;
+ void randomize(byte[], size_t) override;
+ bool is_seeded() const override;
+ void clear() override;
+ std::string name() const override;
- void reseed(size_t poll_bits);
- void add_entropy(const byte[], size_t);
+ void reseed(size_t poll_bits) override;
+ void add_entropy(const byte[], size_t) override;
/**
* @param cipher the block cipher to use in this PRNG
diff --git a/src/lib/stream/chacha/chacha.h b/src/lib/stream/chacha/chacha.h
index 7e4e2b461..df6e1c9c0 100644
--- a/src/lib/stream/chacha/chacha.h
+++ b/src/lib/stream/chacha/chacha.h
@@ -18,26 +18,26 @@ namespace Botan {
class BOTAN_DLL ChaCha : public StreamCipher
{
public:
- void cipher(const byte in[], byte out[], size_t length);
+ void cipher(const byte in[], byte out[], size_t length) override;
- void set_iv(const byte iv[], size_t iv_len);
+ void set_iv(const byte iv[], size_t iv_len) override;
- bool valid_iv_length(size_t iv_len) const
+ bool valid_iv_length(size_t iv_len) const override
{ return (iv_len == 8 || iv_len == 12); }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(16, 32, 16);
}
- void clear();
- std::string name() const { return "ChaCha"; }
+ void clear() override;
+ std::string name() const override { return "ChaCha"; }
- StreamCipher* clone() const { return new ChaCha; }
+ StreamCipher* clone() const override { return new ChaCha; }
protected:
virtual void chacha(byte output[64], const u32bit input[16]);
private:
- void key_schedule(const byte key[], size_t key_len);
+ void key_schedule(const byte key[], size_t key_len) override;
secure_vector<u32bit> m_state;
secure_vector<byte> m_buffer;
diff --git a/src/lib/stream/ctr/ctr.h b/src/lib/stream/ctr/ctr.h
index 1515b0e82..f59f06d5f 100644
--- a/src/lib/stream/ctr/ctr.h
+++ b/src/lib/stream/ctr/ctr.h
@@ -19,24 +19,24 @@ namespace Botan {
class BOTAN_DLL CTR_BE : public StreamCipher
{
public:
- void cipher(const byte in[], byte out[], size_t length);
+ void cipher(const byte in[], byte out[], size_t length) override;
- void set_iv(const byte iv[], size_t iv_len);
+ void set_iv(const byte iv[], size_t iv_len) override;
- bool valid_iv_length(size_t iv_len) const
+ bool valid_iv_length(size_t iv_len) const override
{ return (iv_len <= m_cipher->block_size()); }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return m_cipher->key_spec();
}
- std::string name() const;
+ std::string name() const override;
- CTR_BE* clone() const
+ CTR_BE* clone() const override
{ return new CTR_BE(m_cipher->clone()); }
- void clear();
+ void clear() override;
static CTR_BE* make(const Spec& spec);
@@ -45,7 +45,7 @@ class BOTAN_DLL CTR_BE : public StreamCipher
*/
CTR_BE(BlockCipher* cipher);
private:
- void key_schedule(const byte key[], size_t key_len);
+ void key_schedule(const byte key[], size_t key_len) override;
void increment_counter();
std::unique_ptr<BlockCipher> m_cipher;
diff --git a/src/lib/stream/ofb/ofb.h b/src/lib/stream/ofb/ofb.h
index 09e11644a..32dc199bc 100644
--- a/src/lib/stream/ofb/ofb.h
+++ b/src/lib/stream/ofb/ofb.h
@@ -19,24 +19,24 @@ namespace Botan {
class BOTAN_DLL OFB : public StreamCipher
{
public:
- void cipher(const byte in[], byte out[], size_t length);
+ void cipher(const byte in[], byte out[], size_t length) override;
- void set_iv(const byte iv[], size_t iv_len);
+ void set_iv(const byte iv[], size_t iv_len) override;
- bool valid_iv_length(size_t iv_len) const
+ bool valid_iv_length(size_t iv_len) const override
{ return (iv_len <= m_cipher->block_size()); }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return m_cipher->key_spec();
}
- std::string name() const;
+ std::string name() const override;
- OFB* clone() const
+ OFB* clone() const override
{ return new OFB(m_cipher->clone()); }
- void clear();
+ void clear() override;
static OFB* make(const Spec& spec);
@@ -45,7 +45,7 @@ class BOTAN_DLL OFB : public StreamCipher
*/
OFB(BlockCipher* cipher);
private:
- void key_schedule(const byte key[], size_t key_len);
+ void key_schedule(const byte key[], size_t key_len) override;
std::unique_ptr<BlockCipher> m_cipher;
secure_vector<byte> m_buffer;
diff --git a/src/lib/stream/rc4/rc4.h b/src/lib/stream/rc4/rc4.h
index b2006fec5..60c9450b4 100644
--- a/src/lib/stream/rc4/rc4.h
+++ b/src/lib/stream/rc4/rc4.h
@@ -19,14 +19,14 @@ namespace Botan {
class BOTAN_DLL RC4 : public StreamCipher
{
public:
- void cipher(const byte in[], byte out[], size_t length);
+ void cipher(const byte in[], byte out[], size_t length) override;
- void clear();
- std::string name() const;
+ void clear() override;
+ std::string name() const override;
- StreamCipher* clone() const { return new RC4(SKIP); }
+ StreamCipher* clone() const override { return new RC4(SKIP); }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(1, 256);
}
@@ -40,7 +40,7 @@ class BOTAN_DLL RC4 : public StreamCipher
~RC4() { clear(); }
private:
- void key_schedule(const byte[], size_t);
+ void key_schedule(const byte[], size_t) override;
void generate();
const size_t SKIP;
diff --git a/src/lib/stream/salsa20/salsa20.h b/src/lib/stream/salsa20/salsa20.h
index a2b3790ce..a5e7a1f14 100644
--- a/src/lib/stream/salsa20/salsa20.h
+++ b/src/lib/stream/salsa20/salsa20.h
@@ -18,23 +18,23 @@ namespace Botan {
class BOTAN_DLL Salsa20 : public StreamCipher
{
public:
- void cipher(const byte in[], byte out[], size_t length);
+ void cipher(const byte in[], byte out[], size_t length) override;
- void set_iv(const byte iv[], size_t iv_len);
+ void set_iv(const byte iv[], size_t iv_len) override;
- bool valid_iv_length(size_t iv_len) const
+ bool valid_iv_length(size_t iv_len) const override
{ return (iv_len == 8 || iv_len == 24); }
- Key_Length_Specification key_spec() const
+ Key_Length_Specification key_spec() const override
{
return Key_Length_Specification(16, 32, 16);
}
- void clear();
- std::string name() const;
- StreamCipher* clone() const { return new Salsa20; }
+ void clear() override;
+ std::string name() const override;
+ StreamCipher* clone() const override { return new Salsa20; }
private:
- void key_schedule(const byte key[], size_t key_len);
+ void key_schedule(const byte key[], size_t key_len) override;
secure_vector<u32bit> m_state;
secure_vector<byte> m_buffer;
diff --git a/src/lib/tls/tls_extensions.h b/src/lib/tls/tls_extensions.h
index 83e819509..7527b5cdd 100644
--- a/src/lib/tls/tls_extensions.h
+++ b/src/lib/tls/tls_extensions.h
@@ -75,7 +75,7 @@ class Server_Name_Indicator : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_SERVER_NAME_INDICATION; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
Server_Name_Indicator(const std::string& host_name) :
sni_host_name(host_name) {}
@@ -85,9 +85,9 @@ class Server_Name_Indicator : public Extension
std::string host_name() const { return sni_host_name; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return sni_host_name == ""; }
+ bool empty() const override { return sni_host_name == ""; }
private:
std::string sni_host_name;
};
@@ -101,7 +101,7 @@ class SRP_Identifier : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_SRP_IDENTIFIER; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
SRP_Identifier(const std::string& identifier) :
srp_identifier(identifier) {}
@@ -111,9 +111,9 @@ class SRP_Identifier : public Extension
std::string identifier() const { return srp_identifier; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return srp_identifier == ""; }
+ bool empty() const override { return srp_identifier == ""; }
private:
std::string srp_identifier;
};
@@ -127,7 +127,7 @@ class Renegotiation_Extension : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_SAFE_RENEGOTIATION; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
Renegotiation_Extension() {}
@@ -140,9 +140,9 @@ class Renegotiation_Extension : public Extension
const std::vector<byte>& renegotiation_info() const
{ return reneg_data; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return false; } // always send this
+ bool empty() const override { return false; } // always send this
private:
std::vector<byte> reneg_data;
};
@@ -156,13 +156,13 @@ class Maximum_Fragment_Length : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_MAX_FRAGMENT_LENGTH; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
- bool empty() const { return false; }
+ bool empty() const override { return false; }
size_t fragment_size() const { return m_max_fragment; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
/**
* @param max_fragment specifies what maximum fragment size to
@@ -187,7 +187,7 @@ class Application_Layer_Protocol_Notification : public Extension
public:
static Handshake_Extension_Type static_type() { return TLSEXT_ALPN; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
const std::vector<std::string>& protocols() const { return m_protocols; }
@@ -208,9 +208,9 @@ class Application_Layer_Protocol_Notification : public Extension
Application_Layer_Protocol_Notification(TLS_Data_Reader& reader,
u16bit extension_size);
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return m_protocols.empty(); }
+ bool empty() const override { return m_protocols.empty(); }
private:
std::vector<std::string> m_protocols;
};
@@ -224,7 +224,7 @@ class Session_Ticket : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_SESSION_TICKET; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
/**
* @return contents of the session ticket
@@ -247,9 +247,9 @@ class Session_Ticket : public Extension
*/
Session_Ticket(TLS_Data_Reader& reader, u16bit extension_size);
- std::vector<byte> serialize() const { return m_ticket; }
+ std::vector<byte> serialize() const override { return m_ticket; }
- bool empty() const { return false; }
+ bool empty() const override { return false; }
private:
std::vector<byte> m_ticket;
};
@@ -263,14 +263,14 @@ class Supported_Elliptic_Curves : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_USABLE_ELLIPTIC_CURVES; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
static std::string curve_id_to_name(u16bit id);
static u16bit name_to_curve_id(const std::string& name);
const std::vector<std::string>& curves() const { return m_curves; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
Supported_Elliptic_Curves(const std::vector<std::string>& curves) :
m_curves(curves) {}
@@ -278,7 +278,7 @@ class Supported_Elliptic_Curves : public Extension
Supported_Elliptic_Curves(TLS_Data_Reader& reader,
u16bit extension_size);
- bool empty() const { return m_curves.empty(); }
+ bool empty() const override { return m_curves.empty(); }
private:
std::vector<std::string> m_curves;
};
@@ -292,7 +292,7 @@ class Signature_Algorithms : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_SIGNATURE_ALGORITHMS; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
static std::string hash_algo_name(byte code);
static byte hash_algo_code(const std::string& name);
@@ -306,9 +306,9 @@ class Signature_Algorithms : public Extension
return m_supported_algos;
}
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return false; }
+ bool empty() const override { return false; }
Signature_Algorithms(const std::vector<std::string>& hashes,
const std::vector<std::string>& sig_algos);
@@ -331,13 +331,13 @@ class Heartbeat_Support_Indicator : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_HEARTBEAT_SUPPORT; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
bool peer_allowed_to_send() const { return m_peer_allowed_to_send; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return false; }
+ bool empty() const override { return false; }
Heartbeat_Support_Indicator(bool peer_allowed_to_send) :
m_peer_allowed_to_send(peer_allowed_to_send) {}
@@ -357,13 +357,13 @@ class SRTP_Protection_Profiles : public Extension
static Handshake_Extension_Type static_type()
{ return TLSEXT_USE_SRTP; }
- Handshake_Extension_Type type() const { return static_type(); }
+ Handshake_Extension_Type type() const override { return static_type(); }
const std::vector<u16bit>& profiles() const { return m_pp; }
- std::vector<byte> serialize() const;
+ std::vector<byte> serialize() const override;
- bool empty() const { return m_pp.empty(); }
+ bool empty() const override { return m_pp.empty(); }
SRTP_Protection_Profiles(const std::vector<u16bit>& pp) : m_pp(pp) {}
diff --git a/src/lib/utils/exceptn.h b/src/lib/utils/exceptn.h
index 06db697bf..23ac01cff 100644
--- a/src/lib/utils/exceptn.h
+++ b/src/lib/utils/exceptn.h
@@ -180,7 +180,7 @@ struct BOTAN_DLL Self_Test_Failure : public Internal_Error
*/
struct BOTAN_DLL Memory_Exhaustion : public std::bad_alloc
{
- const char* what() const BOTAN_NOEXCEPT
+ const char* what() const BOTAN_NOEXCEPT override
{ return "Ran out of memory, allocation failed"; }
};
diff --git a/src/tests/catchy/test_bigint.cpp b/src/tests/catchy/test_bigint.cpp
index 9bd99e919..7ea2d6370 100644
--- a/src/tests/catchy/test_bigint.cpp
+++ b/src/tests/catchy/test_bigint.cpp
@@ -108,16 +108,16 @@ TEST_CASE("Bigint random_integer", "[bigint]")
INFO( debug.str() )
// Have ~ 10 % on each digit from 0-9
- CHECK(( 0.09 < ratios[0] )); CHECK(( ratios[0] < 0.11 ));
- CHECK(( 0.09 < ratios[1] )); CHECK(( ratios[1] < 0.11 ));
- CHECK(( 0.09 < ratios[2] )); CHECK(( ratios[2] < 0.11 ));
- CHECK(( 0.09 < ratios[3] )); CHECK(( ratios[3] < 0.11 ));
- CHECK(( 0.09 < ratios[4] )); CHECK(( ratios[4] < 0.11 ));
- CHECK(( 0.09 < ratios[5] )); CHECK(( ratios[5] < 0.11 ));
- CHECK(( 0.09 < ratios[6] )); CHECK(( ratios[6] < 0.11 ));
- CHECK(( 0.09 < ratios[7] )); CHECK(( ratios[7] < 0.11 ));
- CHECK(( 0.09 < ratios[8] )); CHECK(( ratios[8] < 0.11 ));
- CHECK(( 0.09 < ratios[9] )); CHECK(( ratios[9] < 0.11 ));
+ CHECK(( 0.085 <= ratios[0] )); CHECK(( ratios[0] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[1] )); CHECK(( ratios[1] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[2] )); CHECK(( ratios[2] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[3] )); CHECK(( ratios[3] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[4] )); CHECK(( ratios[4] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[5] )); CHECK(( ratios[5] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[6] )); CHECK(( ratios[6] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[7] )); CHECK(( ratios[7] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[8] )); CHECK(( ratios[8] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[9] )); CHECK(( ratios[9] <= 0.115 ));
//CHECK( false );
}
@@ -154,16 +154,16 @@ TEST_CASE("Bigint random_integer", "[bigint]")
INFO( debug.str() )
// Have ~ 10 % on each digit from 10-19
- CHECK(( 0.09 < ratios[10] )); CHECK(( ratios[10] < 0.11 ));
- CHECK(( 0.09 < ratios[11] )); CHECK(( ratios[11] < 0.11 ));
- CHECK(( 0.09 < ratios[12] )); CHECK(( ratios[12] < 0.11 ));
- CHECK(( 0.09 < ratios[13] )); CHECK(( ratios[13] < 0.11 ));
- CHECK(( 0.09 < ratios[14] )); CHECK(( ratios[14] < 0.11 ));
- CHECK(( 0.09 < ratios[15] )); CHECK(( ratios[15] < 0.11 ));
- CHECK(( 0.09 < ratios[16] )); CHECK(( ratios[16] < 0.11 ));
- CHECK(( 0.09 < ratios[17] )); CHECK(( ratios[17] < 0.11 ));
- CHECK(( 0.09 < ratios[18] )); CHECK(( ratios[18] < 0.11 ));
- CHECK(( 0.09 < ratios[19] )); CHECK(( ratios[19] < 0.11 ));
+ CHECK(( 0.085 <= ratios[10] )); CHECK(( ratios[10] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[11] )); CHECK(( ratios[11] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[12] )); CHECK(( ratios[12] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[13] )); CHECK(( ratios[13] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[14] )); CHECK(( ratios[14] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[15] )); CHECK(( ratios[15] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[16] )); CHECK(( ratios[16] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[17] )); CHECK(( ratios[17] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[18] )); CHECK(( ratios[18] <= 0.115 ));
+ CHECK(( 0.085 <= ratios[19] )); CHECK(( ratios[19] <= 0.115 ));
//CHECK( false );
}
}
diff --git a/src/tests/data/fuzz/x509/afl_000.pem b/src/tests/data/fuzz/x509/afl_000.pem
new file mode 100644
index 000000000..5bd3a97d0
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_000.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIEYMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_001.pem b/src/tests/data/fuzz/x509/afl_001.pem
new file mode 100644
index 000000000..9bf1fcecb
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_001.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MICzAJBGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_002.pem b/src/tests/data/fuzz/x509/afl_002.pem
new file mode 100644
index 000000000..fbadfd772
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_002.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4EAABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_003.pem b/src/tests/data/fuzz/x509/afl_003.pem
new file mode 100644
index 000000000..86041ccfd
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_003.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgOjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWzXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_004.pem b/src/tests/data/fuzz/x509/afl_004.pem
new file mode 100644
index 000000000..4c818d9c3
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_004.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4EAADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_005.pem b/src/tests/data/fuzz/x509/afl_005.pem
new file mode 100644
index 000000000..fa101ff3a
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_005.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MICATECCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1uEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_006.pem b/src/tests/data/fuzz/x509/afl_006.pem
new file mode 100644
index 000000000..af95cabfb
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_006.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCCqGSIb9ycEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG6yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAU4AwAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_007.pem b/src/tests/data/fuzz/x509/afl_007.pem
new file mode 100644
index 000000000..30145a8fa
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_007.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MICAIN CAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_008.pem b/src/tests/data/fuzz/x509/afl_008.pem
new file mode 100644
index 000000000..5be654ce4
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_008.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMfAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIEYMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_009.pem b/src/tests/data/fuzz/x509/afl_009.pem
new file mode 100644
index 000000000..7434298ea
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_009.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MICATECCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhUgQ3liZXJU
+cnVzdcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_010.pem b/src/tests/data/fuzz/x509/afl_010.pem
new file mode 100644
index 000000000..2640094e5
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_010.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAAIGHADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwADAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_011.pem b/src/tests/data/fuzz/x509/afl_011.pem
new file mode 100644
index 000000000..176669d6d
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_011.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MICATECCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTA0GCSqGSIb3DQEBBAUAMEUxCMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OT1wWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXvcmApy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_012.pem b/src/tests/data/fuzz/x509/afl_012.pem
new file mode 100644
index 000000000..baf1a7786
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_012.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MICATECCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OPI2PnPfMD+fQ2qLTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAFMQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_013.pem b/src/tests/data/fuzz/x509/afl_013.pem
new file mode 100644
index 000000000..bbb050f76
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_013.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MICATECCAWMCAgGjMA0GCSqGAMTE0dURSBDeWJlcXRydXN0ISIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlcXRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor7M4sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9t1tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_014.pem b/src/tests/data/fuzz/x509/afl_014.pem
new file mode 100644
index 000000000..b68d8c8e2
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_014.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCATDKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_015.pem b/src/tests/data/fuzz/x509/afl_015.pem
new file mode 100644
index 000000000..ea8638e31
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_015.pem
@@ -0,0 +1,5 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVgYD
+VQQKEw9HVEUgQ29ycG9yYX===============================lR===============================ydXN0IFJv
+b3QwHhcNOTYwMY
+-----END CEc \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_016.pem b/src/tests/data/fuzz/x509/afl_016.pem
new file mode 100644
index 000000000..3bd2fc312
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_016.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIBBAUAMEUxCCATEgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBHeFhVYAA1DeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPm1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAO4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1LvZ46WXTeorKeDWanOB5rCJo9Px4KWl
+IjeaY8JIILTbcRPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_017.pem b/src/tests/data/fuzz/x509/afl_017.pem
new file mode 100644
index 000000000..6ec87b82b
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_017.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIBBAUAMEUxCCATEgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMpK+ULjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPm1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAO4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5rCJo9Px4KWl
+IjeaY8JIILTbcRPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_018.pem b/src/tests/data/fuzz/x509/afl_018.pem
new file mode 100644
index 000000000..be7ecaec6
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_018.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKAgQc45k+625h8BSb2
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_019.pem b/src/tests/data/fuzz/x509/afl_019.pem
new file mode 100644
index 000000000..d0603430f
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_019.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xgDCERTNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQA45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_020.pem b/src/tests/data/fuzz/x509/afl_020.pem
new file mode 100644
index 000000000..10cba363d
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_020.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MICfMA0GCSqGSIb3DQEBAQUAA4RHADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_021.pem b/src/tests/data/fuzz/x509/afl_021.pem
new file mode 100644
index 000000000..5e861a5aa
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_021.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCZgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAlWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46-----BKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_022.pem b/src/tests/data/fuzz/x509/afl_022.pem
new file mode 100644
index 000000000..7ffa58208
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_022.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE-----
+MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUKQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4BSb2CBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt CERTiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_023.pem b/src/tests/data/fuzz/x509/afl_023.pem
new file mode 100644
index 000000000..ace8de7a1
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_023.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MICAgECCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv
+b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU
+cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv
+RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M
+ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5
+1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4RBABKz
+dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl
+IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy
+bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_024.pem b/src/tests/data/fuzz/x509/afl_024.pem
new file mode 100644
index 000000000..57243fc2e
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_024.pem
@@ -0,0 +1,3 @@
+0�q�-
+MIIvLmCCAW]C---BE���CERT---
+MIIvcmCCAW]C \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_025.pem b/src/tests/data/fuzz/x509/afl_025.pem
new file mode 100644
index 000000000..f1e877697
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_025.pem
@@ -0,0 +1,3 @@
+0�q�-
+MIIfLm CAW]C--����mCCAW-BE����CERT-#-
+MIIvGmCCAW]C \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_026.pem b/src/tests/data/fuzz/x509/afl_026.pem
new file mode 100644
index 000000000..899e1d71d
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_026.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_027.pem b/src/tests/data/fuzz/x509/afl_027.pem
new file mode 100644
index 000000000..8504c3d8c
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_027.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_028.pem b/src/tests/data/fuzz/x509/afl_028.pem
new file mode 100644
index 000000000..d4f588112
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_028.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_029.pem b/src/tests/data/fuzz/x509/afl_029.pem
new file mode 100644
index 000000000..59591e0b8
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_029.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_030.pem b/src/tests/data/fuzz/x509/afl_030.pem
new file mode 100644
index 000000000..be3106dcc
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_030.pem
@@ -0,0 +1 @@
+0����----BcCAWqG \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_031.pem b/src/tests/data/fuzz/x509/afl_031.pem
new file mode 100644
index 000000000..1bdb26461
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_031.pem
@@ -0,0 +1 @@
+0�q�BEG���II�m8CAW]C \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_032.pem b/src/tests/data/fuzz/x509/afl_032.pem
new file mode 100644
index 000000000..436f7ce70
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_032.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_033.pem b/src/tests/data/fuzz/x509/afl_033.pem
new file mode 100644
index 000000000..f1aa4028e
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_033.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_034.pem b/src/tests/data/fuzz/x509/afl_034.pem
new file mode 100644
index 000000000..11c8448d0
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_034.pem
@@ -0,0 +1,4 @@
+-----BEGIN CERTIFICATE-----
+MIBBAUAMEUxCzAJBgNoBAYTAlVTMRgwFgYT
+VQQKEw9HVEUgQ29ycG9yYXRpb24xHXY
+-----END CERTIFICATE-----DA \ No newline at end of file
diff --git a/src/tests/data/fuzz/x509/afl_035.pem b/src/tests/data/fuzz/x509/afl_035.pem
new file mode 100644
index 000000000..1ff6f1f71
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_035.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_036.pem b/src/tests/data/fuzz/x509/afl_036.pem
new file mode 100644
index 000000000..8171e93c9
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_036.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_037.pem b/src/tests/data/fuzz/x509/afl_037.pem
new file mode 100644
index 000000000..f3f4403b9
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_037.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_038.pem b/src/tests/data/fuzz/x509/afl_038.pem
new file mode 100644
index 000000000..bfdd13e44
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_038.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_039.pem b/src/tests/data/fuzz/x509/afl_039.pem
new file mode 100644
index 000000000..9e888f879
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_039.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_040.pem b/src/tests/data/fuzz/x509/afl_040.pem
new file mode 100644
index 000000000..dbde6a784
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_040.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_041.pem b/src/tests/data/fuzz/x509/afl_041.pem
new file mode 100644
index 000000000..5405ae442
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_041.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_042.pem b/src/tests/data/fuzz/x509/afl_042.pem
new file mode 100644
index 000000000..6862f605a
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_042.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_043.pem b/src/tests/data/fuzz/x509/afl_043.pem
new file mode 100644
index 000000000..56b0ddead
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_043.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_044.pem b/src/tests/data/fuzz/x509/afl_044.pem
new file mode 100644
index 000000000..c250a4c73
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_044.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_045.pem b/src/tests/data/fuzz/x509/afl_045.pem
new file mode 100644
index 000000000..d3d2fbb7f
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_045.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_046.pem b/src/tests/data/fuzz/x509/afl_046.pem
new file mode 100644
index 000000000..0c65e9a45
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_046.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_047.pem b/src/tests/data/fuzz/x509/afl_047.pem
new file mode 100644
index 000000000..9e1ad3030
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_047.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_048.pem b/src/tests/data/fuzz/x509/afl_048.pem
new file mode 100644
index 000000000..e7f577414
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_048.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_049.pem b/src/tests/data/fuzz/x509/afl_049.pem
new file mode 100644
index 000000000..60a5b63bd
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_049.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_050.pem b/src/tests/data/fuzz/x509/afl_050.pem
new file mode 100644
index 000000000..2407ec731
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_050.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_051.pem b/src/tests/data/fuzz/x509/afl_051.pem
new file mode 100644
index 000000000..c6f0bf36f
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_051.pem
Binary files differ
diff --git a/src/tests/data/fuzz/x509/afl_052.pem b/src/tests/data/fuzz/x509/afl_052.pem
new file mode 100644
index 000000000..3f2b126f6
--- /dev/null
+++ b/src/tests/data/fuzz/x509/afl_052.pem
Binary files differ
diff --git a/src/tests/test_fuzz.cpp b/src/tests/test_fuzz.cpp
new file mode 100644
index 000000000..a44110f24
--- /dev/null
+++ b/src/tests/test_fuzz.cpp
@@ -0,0 +1,68 @@
+/*
+* (C) 2015 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include "tests.h"
+#include <chrono>
+#include <iostream>
+
+#if defined(BOTAN_HAS_X509_CERTIFICATES)
+
+#include <botan/x509cert.h>
+#include <botan/x509_crl.h>
+#include <botan/internal/filesystem.h>
+#include <botan/base64.h>
+
+#endif
+
+namespace {
+
+size_t test_x509_fuzz()
+ {
+ size_t fails = 0;
+
+#if defined(BOTAN_HAS_X509_CERTIFICATES)
+
+ size_t tests = 0;
+ const std::string fuzz_data = TEST_DATA_DIR "/fuzz";
+
+ for(auto vec: Botan::get_files_recursive(fuzz_data + "/x509"))
+ {
+ ++tests;
+
+ auto start = std::chrono::system_clock::now();
+ try
+ {
+ // TODO: check for memory consumption?
+ Botan::X509_Certificate cert(vec);
+ }
+ catch(std::exception& e)
+ {
+ //std::cout << e.what() << "\n";
+ }
+ auto end = std::chrono::system_clock::now();
+
+ uint64_t duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
+
+ if(duration > 100)
+ {
+ std::cout << "Fuzz test " << vec << " took " << duration << " ms\n";
+ }
+ }
+
+ test_report("Fuzz Checks", tests, fails);
+#endif
+
+ return fails;
+ }
+
+}
+
+size_t test_fuzzer()
+ {
+ size_t fails = 0;
+ fails += test_x509_fuzz();
+ return fails;
+ }
diff --git a/src/tests/test_rng.cpp b/src/tests/test_rng.cpp
index 81a539f1e..d129ed208 100644
--- a/src/tests/test_rng.cpp
+++ b/src/tests/test_rng.cpp
@@ -31,7 +31,7 @@ RandomNumberGenerator* get_rng(const std::string& algo_str, const std::string& i
public:
AllOnce_RNG(const std::vector<byte>& in) : Fixed_Output_RNG(in) {}
- Botan::secure_vector<byte> random_vec(size_t)
+ Botan::secure_vector<byte> random_vec(size_t) override
{
Botan::secure_vector<byte> vec(this->remaining());
this->randomize(vec.data(), vec.size());
diff --git a/src/tests/test_rng.h b/src/tests/test_rng.h
index bf4032699..f1d40f7f1 100644
--- a/src/tests/test_rng.h
+++ b/src/tests/test_rng.h
@@ -18,7 +18,7 @@ using Botan::byte;
class Fixed_Output_RNG : public Botan::RandomNumberGenerator
{
public:
- bool is_seeded() const { return !buf.empty(); }
+ bool is_seeded() const override { return !buf.empty(); }
byte random()
{
@@ -30,22 +30,22 @@ class Fixed_Output_RNG : public Botan::RandomNumberGenerator
return out;
}
- void reseed(size_t) {}
+ void reseed(size_t) override {}
- void randomize(byte out[], size_t len)
+ void randomize(byte out[], size_t len) override
{
for(size_t j = 0; j != len; j++)
out[j] = random();
}
- void add_entropy(const byte b[], size_t s)
+ void add_entropy(const byte b[], size_t s) override
{
buf.insert(buf.end(), b, b + s);
}
- std::string name() const { return "Fixed_Output_RNG"; }
+ std::string name() const override { return "Fixed_Output_RNG"; }
- void clear() throw() {}
+ void clear() throw() override {}
Fixed_Output_RNG(const std::vector<byte>& in)
{
diff --git a/src/tests/tests.cpp b/src/tests/tests.cpp
index a0fd17879..63e6761ac 100644
--- a/src/tests/tests.cpp
+++ b/src/tests/tests.cpp
@@ -312,6 +312,7 @@ int main(int argc, char* argv[])
DEF_TEST(nist_x509);
DEF_TEST(tls);
DEF_TEST(compression);
+ DEF_TEST(fuzzer);
if(tests.empty())
{
diff --git a/src/tests/tests.h b/src/tests/tests.h
index c99adf6b8..88102f289 100644
--- a/src/tests/tests.h
+++ b/src/tests/tests.h
@@ -107,6 +107,8 @@ size_t test_nist_x509();
size_t test_srp6();
size_t test_compression();
+size_t test_fuzzer();
+
#define SKIP_TEST(testname) \
size_t test_ ## testname() { \
std::cout << "Skipping tests: " << # testname << std::endl; \